Supprimer entrée SQL via checkbox HTML/PHP
Résolu/Fermé
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
-
12 avril 2009 à 11:00
gaywild - 10 janv. 2013 à 20:24
gaywild - 10 janv. 2013 à 20:24
A voir également:
- Supprimer entrée SQL via checkbox HTML/PHP
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Editeur html - Télécharger - HTML
- Supprimer pub youtube - Accueil - Streaming
- Impossible de supprimer un fichier - Guide
10 réponses
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
80
12 avril 2009 à 23:55
12 avril 2009 à 23:55
up svp ...
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
80
13 avril 2009 à 11:02
13 avril 2009 à 11:02
Re-up :D
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
80
13 avril 2009 à 15:36
13 avril 2009 à 15:36
Re-Re-Up, s'il vous plaît ô grands membres, répondez moi :D
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
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
80
13 avril 2009 à 18:30
13 avril 2009 à 18:30
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.
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
80
13 avril 2009 à 19:39
13 avril 2009 à 19:39
é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+.
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
80
15 avril 2009 à 17:36
15 avril 2009 à 17:36
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>'; ?>
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
80
15 avril 2009 à 22:28
15 avril 2009 à 22:28
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.
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
80
15 avril 2009 à 23:24
15 avril 2009 à 23:24
Rectification :
echo "<input type='checkbox' name='verbe[]' value='$id'> $mot <br>";
Faut pas mettre de ' ' a $mot sinon ca les affiche sur la page. Merci beaucoup ca marche ! Je saurais a qui m'adresser pour la prochaine fois :)
A+
echo "<input type='checkbox' name='verbe[]' value='$id'> $mot <br>";
Faut pas mettre de ' ' a $mot sinon ca les affiche sur la page. Merci beaucoup ca marche ! Je saurais a qui m'adresser pour la prochaine fois :)
A+
serialtueur
Messages postés
49
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
22 octobre 2009
80
16 avril 2009 à 17:52
16 avril 2009 à 17:52
fait :D encore merci pour tout