suppression dans une base de données

Eléphant du PHP | 71 Messages

11 janv. 2006, 19:31

ok et donc pour le lien sur les lettre c'estle même principe que pour la suppression nomralement ? car ca ne marche pas ce que je fais

Mammouth du PHP | 19672 Messages

11 janv. 2006, 19:33

Ben si tu arrives à le faire fonctionner pour la suppression, applique effectivement le même principe sur la modification
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 71 Messages

12 janv. 2006, 10:38

Bonjour.

Pourrais tu m'expliquer stp le fonctione de cette fonction pour le trie par lettre alphabétique car j'ai pas tout compris la ca ira mieux pour que je le fasse
$lettre = isset($_GET['lettre']) ? $_GET['lettre'] : ''; 

$sql = 'SELECT id, nom, prénom, addresse, telephone FROM liste_proprietaire '; 
if($lettre != "") 
{ 
    $sql .= 'WHERE `nom` REGEXP "^(' . strtoupper($lettre) . '|'; 
    $sql .=  strtolower($lettre) . '){1}"'; 
} 

$sql .= 'ORDER BY nom'; 
Car la je vois pas $letter renvois quoi lui dans l'url

Mammouth du PHP | 19672 Messages

12 janv. 2006, 10:51

Car la je vois pas $letter renvois quoi lui dans l'url
:shock: Tu peux traduire en français s'il te plait ???
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

12 janv. 2006, 10:58

oui cela permet à priori d'effectuer un triage (filtre) donc dans la variable $lettre il y a quoi de stocker elle renvois quoi cette variable.
Car la je comprend pas tout la requête doit permettre un triage de sélection par alphabet par exemple avec un lien ou l'on aurait A on afficher juste les résultat de la base concernant les nom en A.

Mammouth du PHP | 19672 Messages

12 janv. 2006, 11:10

Tu es pénible à lire: tu as un vrai clavier et il n'y a pas le feu. Prends le temps d'écrire correctement en mettant une ponctuation : merci

Ton code commenté :
<?php
/* On récupère la lettre choisie et envoyée en paramètre s'il y en a une */
$lettre = isset($_GET['lettre']) ? $_GET['lettre'] : '';

/* On inutialise le début de la requête SQL */
$sql = 'SELECT id, nom, prénom, addresse, telephone FROM liste_proprietaire ';

/* Si il y a une lettre en paramètre, on ajoute une clause WHERE pour n'extraire
   que les champs contenant cette lettre */
if($lettre != "")
{
    $sql .= 'WHERE `nom` REGEXP "^(' . strtoupper($lettre) . '|';
    $sql .=  strtolower($lettre) . '){1}"';
}

/* On ajoute une clause ORDER BY por trier les résultat en ordre (ici alphabétique) */
$sql .= 'ORDER BY nom';
?>
Le problème qu'il y a là est que l'expression régulière semble ne pouvoir correspondre qu'avec les champs qui contiennent la lettre choisie, et rien d'autre. Donc si on clique sur "A", on aura les lignes où le champ "nom" contiendra uniquement "A" ou "a", rien d'autre.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

12 janv. 2006, 11:24

d'accord, donc si je comprends bien. Dans la création de mon lien, je dois renvoyer la lettre qui correspond à celle cliquée.
Ce qui donnerait un truc dans ce genre :
<p><a href="indexe.php?lettre=<?php echo($lettre); ?>">A</a></p> 
C'est bien cela

Invité
Invité n'ayant pas de compte PHPfrance

12 janv. 2006, 11:35

Ok merci, ca marche j'ai compris.
<p><a href="index.php?lettre=<?php echo($lettre = "A"); ?>">A</a></p>
Cela fonctionne parfaitement, merci encore d'avoir détaillé le code.

Mammouth du PHP | 19672 Messages

12 janv. 2006, 11:38

Si tu avais correctement formulé ta question au départ, on en serait pas là ; oui, effetivement, pour envoyer la lettre en paramètre dans l'url, tu dois ajouter un paramètre dans l'utl du lien. Mais pour faire simple, voici comment mettre l'alphabet en lien :
<?php
$alphabet = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");

/* Création des liens */
$liens = array();
foreach($alphabet as $lettre)
{
    $liens[] = "<a href=\"index.php?lettre=". $lettre ."\" title=\"Rechercher les noms commençant par la lettre ". $lettre ."\">". $lettre ."</a>";
}

/* On insère un signe de séparation entre les lettres/liens */
$listeliens = implode(" | ", $liens);

/* On construit la chaine de liens */
$chaine = "<p>". $listeliens ."</p>\n";

/* On affiche la chaine de liens */
echo($chaine);
?>
Exécute ce code et affiche la source de la page générée.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

12 janv. 2006, 11:45

je t'en remercie.
Juste une petite question pourquoi la balise <center> </center> focnitonne pas tjs. En fonction de l'emplacement dans le code, ca fonctionne ou non.
Par exemple si j'insère un center dans ton code cela focntionnera pas. Enfin c'est juste par curieusité.

Mammouth du PHP | 19672 Messages

12 janv. 2006, 11:47

Sans voir le code, je ne peux pas te répondre. Pour ma part, je n'utilise jamais la balise <center>, je préfère de très loin utiliser une feuille de style CSS.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

12 janv. 2006, 11:57

Oui c'est sur, c'est mieux une feuille de style mais bon. Je penses en faire une lorsque j'aurais entièrement fini. Mais pour le moment c'est pas ma priorité la mise en forme, c'est pour cela que j'utilise les balise.

Voici le code terminer mais avec la balise <center> au niveau du lien des lettre qui fonctionne pas :
<?php 
// on se connecte à la base de données 
$base = mysql_connect ('localhost', 'root', ''); 
mysql_select_db ('repertoire_tel', $base); 
?> 
<html> 
<head> 
<title>affichage du répertoire</title> 
</head> 
<body> 
<?php 
// structure de la mise en page 
?> 
<center><h3>Répertoire téléphonnique</h3></center> 
<br> 
<br> 
<center> 
<p><a href="ajout.php">Ajouter une entrée</a></p> 
<table border cellspacing="0" width="800"> 
  <tr> 
    <th width="100"><p>Nom</p></th> 
    <th width="100"><p>Prénom</p></th> 
    <th width="300"><p>Addresse</p></th> 
    <th width="200"><p>téléphone</p></th> 
    <th width="100">Supprimer</th> 
  </tr>
</center> 
<?php 
// lancement de la requête 
/* On récupère la lettre choisie et envoyée en paramètre s'il y en a une */ 
$lettre = isset($_GET['lettre']) ? $_GET['lettre'] : ''; 

/* On inutialise le début de la requête SQL */ 
$sql = 'SELECT id, nom, prénom, addresse, telephone FROM liste_proprietaire '; 

/* Si il y a une lettre en paramètre, on ajoute une clause WHERE pour n'extraire 
   que les champs contenant cette lettre */ 
if($lettre != "") 
{ 
    $sql .= 'WHERE `nom` REGEXP "^(' . strtoupper($lettre) . '|'; 
    $sql .=  strtolower($lettre) . '){1}"'; 
} 

/* On ajoute une clause ORDER BY por trier les résultat en ordre (ici alphabétique) */ 
$sql .= 'ORDER BY nom'; 
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
// Récupération du nombre d'enregistrement dans la base
$number = MYSQL_NUM_ROWS($req);
// Affichage du nombre d'enregistrement
if($number==1){
	$num = "$number enregistrement dans le répertoire";
}
else{
	$num = "$number enregistrements dans le répertoire";

}
//on récupère le résultat sous la forme d'un tableau en scanan tous les tuples 
while ($data = mysql_fetch_array($req)) 
{ 
    // on effectu l'affichage des résultats 
?>
  <tr> 
    <td><?php echo($data['nom']); ?></td> 
    <td><?php echo($data['prénom']); ?></td> 
    <td><?php echo($data['addresse']); ?></td> 
    <td><?php echo($data['telephone']); ?></td> 
    <td><p><a href="supprimer.php?id=<?php echo($data['id']); ?>">Supp</a> | <a href="modification.php?id=<?php echo($data['id']); 

?>">Modif</a></p></td> 
  </tr> 

<?php 
} 
?>
<?php 
$alphabet = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", 

"Y", "Z"); 

/* Création des liens */ 
$liens = array(); 
foreach($alphabet as $lettre) 
{ 
    $liens[] = "<a href=\"index.php?lettre=". $lettre ."\" title=\"Rechercher les noms commençant par la lettre ". $lettre ."\">". $lettre 

."</a>"; 
} 

/* On insère un signe de séparation entre les lettres/liens */ 
$listeliens = implode(" - ", $liens); 

/* On construit la chaine de liens */ 
$chaine = "<center><p><font face='Times New Roman'>". $listeliens ."</font></p><center>\n"; 

/* On affiche la chaine de liens */ 
echo($chaine); 
?>  
</table>  
<center><p><?php echo($num); ?></p></center>
<?php 
// on libère l'espace mémoire alloué pour cette intérrogation de base 
mysql_free_result ($req); 
mysql_close (); 
?> 
</body> 
</html> 

Mammouth du PHP | 19672 Messages

12 janv. 2006, 12:01

remplace par :
$chaine = "<p style=\"text-align: center; font-family: 'times new roman'\">". $listeliens ."</p>\n"; 
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

12 janv. 2006, 12:07

Non il me le centre toujours pas.

Invité
Invité n'ayant pas de compte PHPfrance

12 janv. 2006, 12:17

comme ceci ca marche :
<?php 
// on se connecte à la base de données 
$base = mysql_connect ('localhost', 'root', ''); 
mysql_select_db ('repertoire_tel', $base); 
?> 
<html> 
<head> 
<title>affichage du répertoire</title> 
</head> 
<body> 
<?php 
// structure de la mise en page 
?> 
<center><h3>Répertoire téléphonnique</h3></center> 
<br> 
<br> 
<center> 
<p><a href="ajout.php">Ajouter une entrée</a></p> 
<table border cellspacing="0" width="800"> 
  <tr> 
    <th width="100"><p>Nom</p></th> 
    <th width="100"><p>Prénom</p></th> 
    <th width="300"><p>Addresse</p></th> 
    <th width="200"><p>téléphone</p></th> 
    <th width="100">Supprimer</th> 
  </tr>
</center> 
<?php 
// lancement de la requête 
/* On récupère la lettre choisie et envoyée en paramètre s'il y en a une */ 
$lettre = isset($_GET['lettre']) ? $_GET['lettre'] : ''; 

/* On inutialise le début de la requête SQL */ 
$sql = 'SELECT id, nom, prénom, addresse, telephone FROM liste_proprietaire '; 

/* Si il y a une lettre en paramètre, on ajoute une clause WHERE pour n'extraire 
   que les champs contenant cette lettre */ 
if($lettre != "") 
{ 
    $sql .= 'WHERE `nom` REGEXP "^(' . strtoupper($lettre) . '|'; 
    $sql .=  strtolower($lettre) . '){1}"'; 
} 

/* On ajoute une clause ORDER BY por trier les résultat en ordre (ici alphabétique) */ 
$sql .= 'ORDER BY nom'; 
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
// Récupération du nombre d'enregistrement dans la base
$number = MYSQL_NUM_ROWS($req);
// Affichage du nombre d'enregistrement
if($number==1){
	$num = "$number enregistrement dans le répertoire";
}
else{
	$num = "$number enregistrements dans le répertoire";

}
//on récupère le résultat sous la forme d'un tableau en scanan tous les tuples 
while ($data = mysql_fetch_array($req)) 
{ 
    // on effectu l'affichage des résultats 
?>
  <tr> 
    <td><?php echo($data['nom']); ?></td> 
    <td><?php echo($data['prénom']); ?></td> 
    <td><?php echo($data['addresse']); ?></td> 
    <td><?php echo($data['telephone']); ?></td> 
    <td><p><a href="supprimer.php?id=<?php echo($data['id']); ?>">Supp</a> | <a href="modification.php?id=<?php echo($data['id']); 

?>">Modif</a></p></td> 
  </tr> 

<?php 
} 
?>
<hr>
<p>Affichage par filtre :</p>
<?php 
$alphabet = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", 

"Y", "Z"); 

/* Création des liens */ 
$liens = array(); 
foreach($alphabet as $lettre) 
{ 
    $liens[] = "<a href=\"index.php?lettre=". $lettre ."\" title=\"Rechercher les noms commençant par la lettre ". $lettre ."\">". $lettre 

."</a>"; 
} 

/* On insère un signe de séparation entre les lettres/liens */ 
$listeliens = implode(" - ", $liens); 

/* On construit la chaine de liens */ 
$chaine = "<p style=\"text-align: center; font-family: 'times new roman'\">". $listeliens ."</p>\n"; 

/* On affiche la chaine de liens */ 
echo($chaine);
?>
<p>Affichage sans filtre :</p>
<p style="text-align: center; font-family: 'times new roman"><a href = "index.php">[Sans triage]</a></p><hr><br>
<center><p><?php echo($num); ?></p><br></center>  
</table>  
<?php 
// on libère l'espace mémoire alloué pour cette intérrogation de base 
mysql_free_result ($req); 
mysql_close (); 
?> 
</body> 
</html>