Supprimer entrée SQL via checkbox HTML/PHP
Résolu
serialtueur
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
gaywild -
gaywild -
Bonjour,
Voici mon problème :
Je crée un site auquel des gens pourront participer en entrant des données dans ma base de données.
Jusque la aucun problème.
Ensuite je voudrais que l'on puisse, à partir de mon panneau d'admin, supprimer des entrées en les selectionnant via une checkbox et un bouton supprimer.
Le problème c'est que je n'ai aucune idée de comment procéder puisque je ne saurais même pas combien il y a d'entrées : Le code est prévu pour toutes les afficher ...
Voici mon code :
Il y a le bouton supprimer et les checkbox mais je ne sais pas quel "name" leur donner ni comment faire pour supprimer uniquement les entrées sélectionnées...
Merci de votre aide.
Voici mon problème :
Je crée un site auquel des gens pourront participer en entrant des données dans ma base de données.
Jusque la aucun problème.
Ensuite je voudrais que l'on puisse, à partir de mon panneau d'admin, supprimer des entrées en les selectionnant via une checkbox et un bouton supprimer.
Le problème c'est que je n'ai aucune idée de comment procéder puisque je ne saurais même pas combien il y a d'entrées : Le code est prévu pour toutes les afficher ...
Voici mon code :
<p>Bienvenue dans votre panneau d'administration !<br/><br/><strong>Liste de verbes :</strong><br/> <form method="post" action="admin.php"> <?php mysql_connect('sql.free.fr', 'XXXXX', 'XXXXXX'); mysql_select_db("kamoulmots"); $listeverbe = mysql_query("SELECT * FROM kamoulmots WHERE type='verbe'"); $listenom = mysql_query("SELECT * FROM kamoulmots WHERE type='nom'"); $listeadjectif = mysql_query("SELECT * FROM kamoulmots WHERE type='adjectif'"); while ($donnees = mysql_fetch_array($listeverbe) ) { ?> <input type="checkbox" name="$donnees['mot']" /><?php echo $donnees['mot']; ?><br /> <?php } ?><br/><input type="submit" value="Supprimer"> </p></form> <p><strong>Liste de noms :</strong><br/> <?php while ($donnees = mysql_fetch_array($listenom) ) { ?> <input type="checkbox" name="choix" /><?php echo $donnees['mot']; ?><br /> </form> <?php } ?><br/><input type="submit" value="Supprimer"></p> <p><strong>Liste d'adjectifs :</strong><br/> <?php while ($donnees = mysql_fetch_array($listeadjectif) ) { ?> <form method="post" action="admin.php"> <input type="checkbox" name="choix" /><?php echo $donnees['mot']; ?> <br /> </form> <?php } ?><br/><input type="submit" value="Supprimer"></p>
Il y a le bouton supprimer et les checkbox mais je ne sais pas quel "name" leur donner ni comment faire pour supprimer uniquement les entrées sélectionnées...
Merci de votre aide.
A voir également:
- Supprimer entrée SQL via checkbox HTML/PHP
- Supprimer rond bleu whatsapp - Guide
- Supprimer page word - Guide
- Supprimer pub youtube - Accueil - Streaming
- Editeur html - Télécharger - HTML
- Fichier impossible à supprimer - Guide
10 réponses
Bonjour,
Je pense que ce lien vous apportera des solutions qui vont permettront d'avancer pour votre problème de liste de CheckBox :
http://www.phpfrance.com/forums/voir_sujet-5220.php
salutations.
Je pense que ce lien vous apportera des solutions qui vont permettront d'avancer pour votre problème de liste de CheckBox :
http://www.phpfrance.com/forums/voir_sujet-5220.php
salutations.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le problème, c'est qu'ils indiquent comment faire avecun nombres précis de checkbox définies par le webmaster. Moi je ne sais pas combien ni quels sont les noms des entrées puisque tout ceci est défini par ma BDD SQL...
Re,
Relisez bien ce document.
Rien ne vous interdit de mettre une boucle while et de créer autant de checbox que vous récupérez d'enregistrements dans votre BDD.
A chaque entrée récupérée, générez alors une ligne comme celle ci (en PHP bien sur) :
Dans "value", stockez simplement dans une variable xx la référence à votre champ récupéré dans votre BDD.
Ensuite, pour la suppression, vous allez parcourir toutes les checkbox :
... et bah $valeur (a priori) contient votre xx stocké - il n'y a plus qu'à supprimer votre enregistrement ayant pour clef la valeur = à $valeur.
C'est correct non ?...
A+.
Relisez bien ce document.
Rien ne vous interdit de mettre une boucle while et de créer autant de checbox que vous récupérez d'enregistrements dans votre BDD.
A chaque entrée récupérée, générez alors une ligne comme celle ci (en PHP bien sur) :
<input type="checkbox" name="langage[]" value=xx> Toto <br>
Dans "value", stockez simplement dans une variable xx la référence à votre champ récupéré dans votre BDD.
Ensuite, pour la suppression, vous allez parcourir toutes les checkbox :
if (!empty($tabLangages)) { foreach($tabLangages as $cle => $valeur) { echo $cle.' : '.$valeur.'<br>'; }
... et bah $valeur (a priori) contient votre xx stocké - il n'y a plus qu'à supprimer votre enregistrement ayant pour clef la valeur = à $valeur.
C'est correct non ?...
A+.
J'ajoute encore ceci pour bien comprendre le truc :
while (non_fin_de_BDD)
{
-> Récupérez l'enregistrement xx de la BDD
-> Générez "<input type="checkbox" name="langage[]" value=xx> Toto <br>"
}
En fait à chaque listbox générée, PHP range xx dans l'entrée courante du tableau langage[] et incrémente implicitement son index.
Récupération et suppression :
$tabLangages = (isset($_POST['langage']))?$_POST['langage']:null;
if (!empty($tabLangages)) {
foreach($tabLangages as $cle => $valeur) {
echo $cle.' : '.$valeur.'<br>';
}
$tabLangages récupère le tableau posté et où sont stockées vos valeurs.
$valeur contient alors la valeur à l'entrée courante du tableau que vous parcourez dans le foreach.
Ensuite : DELETE FROM TATA WHERE machin = $valeur
Et voila.
while (non_fin_de_BDD)
{
-> Récupérez l'enregistrement xx de la BDD
-> Générez "<input type="checkbox" name="langage[]" value=xx> Toto <br>"
}
En fait à chaque listbox générée, PHP range xx dans l'entrée courante du tableau langage[] et incrémente implicitement son index.
Récupération et suppression :
$tabLangages = (isset($_POST['langage']))?$_POST['langage']:null;
if (!empty($tabLangages)) {
foreach($tabLangages as $cle => $valeur) {
echo $cle.' : '.$valeur.'<br>';
}
$tabLangages récupère le tableau posté et où sont stockées vos valeurs.
$valeur contient alors la valeur à l'entrée courante du tableau que vous parcourez dans le foreach.
Ensuite : DELETE FROM TATA WHERE machin = $valeur
Et voila.
étant donné que mon while se fait ainsi :
while ($donnees = mysql_fetch_array($listeverbe) )
Ceci est il correct ?
<input type="checkbox" name="verbe[]" value="<?php $donnees['id'] ?>" />
Le value=" " va t-il marcher ou je dois le remplacer par quelquechose d'autre ? Par quoi dans ce cas ?
Re,
Je te conseille plutôt d'ouvrir une balise php, de générer le maximum de code et de fermer à la fin pour éviter de morceler des fragments de balises (pas lisible et forte possibilité d'erreurs).
Sinon tu a compris le principe.
> Je te propose ceci un peu adapté par rapport à ce que tu proposes :
Note : il faut quand même afficher quelque chose à l'utilisateur pour ta CheckBox - d'où le $id comme tu peu remarquer juste avant le <br>.
OK - on code déjà ça et on voit après pour la suppression.
A+.
Je te conseille plutôt d'ouvrir une balise php, de générer le maximum de code et de fermer à la fin pour éviter de morceler des fragments de balises (pas lisible et forte possibilité d'erreurs).
Sinon tu a compris le principe.
> Je te propose ceci un peu adapté par rapport à ce que tu proposes :
.............. Concentrer au mieux ton code dans une seule balise ............................ <? ......................... while ($donnees = mysql_fetch_array($listeverbe) ) { $id = $donnees['id']; echo "<input type='checkbox' name='langage[]' value=$id> $id <br>"; } ........................ />
Note : il faut quand même afficher quelque chose à l'utilisateur pour ta CheckBox - d'où le $id comme tu peu remarquer juste avant le <br>.
OK - on code déjà ça et on voit après pour la suppression.
A+.
Bonjour,
Affiche 0: devant le bouton Supprimer (pas plus d'effets)
Tester la page : http://webmaster.facebook.free.fr/kamoulbox/admin1.php
<p>Bienvenue dans votre panneau d'administration !<br/><br/><strong>Liste de verbes :</strong><br/> <form method="post" action="admin1.php"> <?php mysql_connect('sql.free.fr', 'XXXX', 'XXXXXX'); mysql_select_db("kamoulmots"); $listeverbe = mysql_query("SELECT * FROM kamoulmots WHERE type='verbe'"); $listenom = mysql_query("SELECT * FROM kamoulmots WHERE type='nom'"); $listeadjectif = mysql_query("SELECT * FROM kamoulmots WHERE type='adjectif'"); while ($donnees = mysql_fetch_array($listeverbe) ) { ?> <input type="checkbox" name="verbe[]" value="<?php $donnees['id'] ?>" /><?php echo $donnees['mot']; ?><br /> <?php } ?><br/><input type="submit" value="Supprimer"> <?php $tabverbes = (isset($_POST['verbe']))?$_POST['verbe']:null; if (!empty($tabverbes)) { foreach($tabverbes as $cle => $valeur) { echo $cle.' : '.$valeur.'<br>'; } } mysql_query("DELETE FROM kamoulmots WHERE id = $valeur") ?> </p></form>
Affiche 0: devant le bouton Supprimer (pas plus d'effets)
Tester la page : http://webmaster.facebook.free.fr/kamoulbox/admin1.php
Re !!
Voici quelques modifications proposées - n'hésite pas si ta des questions.
En général, habitue toi à essayer de tout "encapsuler" dans des balises PHP pour une meilleure lisibilité - même le code HTML généré.
Note : le problème principal est que tu avais oublié d'inclure ton DELETE dans la boucle foreach - aucune suppression n'était donc effectuée.
A+.
Voici quelques modifications proposées - n'hésite pas si ta des questions.
En général, habitue toi à essayer de tout "encapsuler" dans des balises PHP pour une meilleure lisibilité - même le code HTML généré.
Note : le problème principal est que tu avais oublié d'inclure ton DELETE dans la boucle foreach - aucune suppression n'était donc effectuée.
A+.
<?php // Il faut plutôt placer la récupération du POST et la suppression des champs // AVANT avant l'affichage des champs à l'écran pour une synchro. correcte. $tabverbes = (isset($_POST['verbe']))?$_POST['verbe']:null; mysql_connect('sql.free.fr', 'XXXX', 'XXXXXX'); mysql_select_db("kamoulmots"); if (!empty($tabverbes)) { foreach($tabverbes as $cle => $valeur) { // Note : il vaut mieux inclure ton DELETE dans ta boucle !!.. // --> histoire que ça supprime toutes les sélections $Str_Delete_Valeur = "DELETE FROM kamoulmots WHERE id = '$valeur'"; mysql_query($Str_Delete_Valeur); } } // Affichage de la page (en dernier aprés les traitements de suppression - synchro. des champs) echo "<p>Bienvenue dans votre panneau d'administration !<br/><br/><strong>Liste de verbes :</strong><br/>"; Str_Select_Verbe = "SELECT * FROM kamoulmots WHERE type='verbe'"; Str_Select_Nom = "SELECT * FROM kamoulmots WHERE type='nom'"; Str_Select_Adjectif = "SELECT * FROM kamoulmots WHERE type='adjectif'"; $listeverbe = mysql_query(Str_Select_Verbe); $listenom = mysql_query(Str_Select_Nom); $listeadjectif = mysql_query(Str_Select_Adjectif); echo "<form method='post' action='admin1.php'>"; while ($donnees = mysql_fetch_array($listeverbe) ) { echo "<input type='checkbox' name='verbe[]' value=$donnees['id']> $donnees['mot']<br>"; } echo "<br/><input type='submit' value='Supprimer'>"; echo '</p></form>'; ?>
Bonjour,
Ta ligne "Echo" pour la checkbox me renvoyait une error T_whitespace ' or "
J'ai donc essayé la mienne, sans résultat.
Merci de ton aide :D
Ta ligne "Echo" pour la checkbox me renvoyait une error T_whitespace ' or "
J'ai donc essayé la mienne, sans résultat.
<div id="corps"> <h1>Panneau d'administration</h1> <?php // Il faut plutôt placer la récupération du POST et la suppression des champs // AVANT avant l'affichage des champs à l'écran pour une synchro. correcte. $tabverbes = (isset($_POST['verbe']))?$_POST['verbe']:null; mysql_connect('sql.free.fr', 'webmaster.facebook', '01020456'); mysql_select_db("kamoulmots"); if (!empty($tabverbes)) { foreach($tabverbes as $cle => $valeur) { // Note : il vaut mieux inclure ton DELETE dans ta boucle !!.. // --> histoire que ça supprime toutes les sélections $Str_Delete_Valeur = "DELETE FROM kamoulmots WHERE id = '$valeur'"; mysql_query($Str_Delete_Valeur); } } // Affichage de la page (en dernier aprés les traitements de suppression - synchro. des champs) echo "<p>Bienvenue dans votre panneau d'administration !<br/><br/><strong>Liste de verbes :</strong><br/>"; $Str_Select_Verbe = "SELECT * FROM kamoulmots WHERE type='verbe'"; $Str_Select_Nom = "SELECT * FROM kamoulmots WHERE type='nom'"; $Str_Select_Adjectif = "SELECT * FROM kamoulmots WHERE type='adjectif'"; $listeverbe = mysql_query($Str_Select_Verbe); $listenom = mysql_query($Str_Select_Nom); $listeadjectif = mysql_query($Str_Select_Adjectif); echo "<form method='post' action='admin1.php'>"; while ($donnees = mysql_fetch_array($listeverbe) ) { ?> <input type="checkbox" name="verbe[]" value="<?php $donnees['id'] ?>" /><?php echo $donnees['mot']; ?><br /> <?php } echo "<br/><input type='submit' value='Supprimer'>"; echo '</p></form>'; ?>
Merci de ton aide :D
Re,
OK c'est bon - j'ai compris :
--> les variables sont $id et $mot sont nécessaires ici pour éviter ton erreur (problème de ' ').
J'insiste sur le fait de toujours chercher à encapsuler en PHP (:>).
Teste et tient moi au courant.
OK c'est bon - j'ai compris :
$id = $donnees['id']; $mot = $donnees['mot']; echo "<input type='checkbox' name='verbe[]' value='$id'> '$mot' <br>";
--> les variables sont $id et $mot sont nécessaires ici pour éviter ton erreur (problème de ' ').
J'insiste sur le fait de toujours chercher à encapsuler en PHP (:>).
Teste et tient moi au courant.