suppression dans une base de données

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : suppression dans une base de données

par lecobra_20 » 12 janv. 2006, 15:25

Voici ce que j'ai fait peux tu me dire si je suis à coté ou si c'est ca car il me met pas d'erreur mais ca marche pas top.
<?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="900"> 
  <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="200">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'] : '';
$recherche = isset($_GET['recherche']) ? $_GET['recherche'] : null; 

/* 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}"'; 
}
if($recherche != "")
{
    $sql .= 'WHERE nom = "$recherche"';
}
 
/* 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 style="text-align: center; font-family: 'times new roman'"><a href="fiche.php?id=<?php echo($data['id']); ?>">Voir</a> | <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>

<table><tr><td>
<form action="index.php?recherche=<?php echo($_POST['mot']); ?>" method="POST">
<input type="text" name="mot" maxlength="50" size="20" value="<?php if (isset($_POST['mot'])) echo 

stripslashes(htmlentities(trim($_POST['mot']))); ?>">
</td></tr>
<tr><td>
<input type="submit" name="go" value="Ajouter"> 
</td></tr></table>
 
<?php 
// on libère l'espace mémoire alloué pour cette intérrogation de base 
mysql_free_result ($req); 
mysql_close (); 
?> 
</body> 
</html> 
[/code]

par Invité » 12 janv. 2006, 14:53

Est-il possible d'effectuer une recherche via un champ d'un formulaire.
Par exemple maintenant que j'effectue un filtre soit par lettre ou non, je voudrais seulement mettre un champ de formulaire (input) ainsi on tape le nom (ex : "Essai") et la il m'affiche soit que les gens portant le nom essai.

par Invité » 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> 

par Invité » 12 janv. 2006, 12:07

Non il me le centre toujours pas.

par Cyrano » 12 janv. 2006, 12:01

remplace par :
$chaine = "<p style=\"text-align: center; font-family: 'times new roman'\">". $listeliens ."</p>\n"; 

par Invité » 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> 

par Cyrano » 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.

par Invité » 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é.

par Cyrano » 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.

par Invité » 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.

par Invité » 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

par Cyrano » 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.

par Invité » 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.

par Cyrano » 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 ???

par lecobra_20 » 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