Checkbox pour controler une base de données
Résolu
Migwell
-
migwell -
migwell -
Bonjour,
J'ai un petit souci et je n'arrive pas vraiment à trouver un exemple qui corresponde à mon problème.
En fait je prépare un espace administrateur pour un groupe de musique.
Je n'ai pas vraiment de problème sauf pour la gestion des dates de concert.
J'ai fait une liste de CHECKBOX dont le nom de chaque box est l'ID de chaque date dans ma base de données mysql.
Comme je débute, je ne sais pas trop si c'est la meilleur solution.
Je voudrais que toutes les dates cochées s'effacent lorsque je clique sur le bouton submit du formulaire.
Vu que la plupart des explications utilisent un tableau de type "question[]" dans le name, je ne sais pas vraiment comment récupérer l'ID des cases cochées pour les effaccer d'un coup afin d'éviter par exemple en effacant une date, que la date n°5 ne devienne la date n°4 par exemple.
Donc ma question:
Comment bien récupérer mes infos et faire ma requête SQL proprement ? (je veux pas faire un truc tout cracra)
Voici mon code si ça peut aider:
<form action="effacerdates.php" method="POST">
<?php
while($data = mysql_fetch_assoc($req))
{
echo '<input type="checkbox" name="'.$data['id'].'" value="--- ">';
echo $data['jour'].' '.$data['datefr'].' - '.$data['salle'].' (';
echo '<i>'.$data['ville'].'</i> - '.$data['departement'].')<br />';
}
?>
<br />
<input type="submit" value="Effacer les dates sélectionnées">
</form>
Merci de votre aide et de votre compréhension.
Parce qu'évidement je cherche une solution et j'en trouverai bien une mais pas forcément la plus propre ou la plus concise.
J'ai un petit souci et je n'arrive pas vraiment à trouver un exemple qui corresponde à mon problème.
En fait je prépare un espace administrateur pour un groupe de musique.
Je n'ai pas vraiment de problème sauf pour la gestion des dates de concert.
J'ai fait une liste de CHECKBOX dont le nom de chaque box est l'ID de chaque date dans ma base de données mysql.
Comme je débute, je ne sais pas trop si c'est la meilleur solution.
Je voudrais que toutes les dates cochées s'effacent lorsque je clique sur le bouton submit du formulaire.
Vu que la plupart des explications utilisent un tableau de type "question[]" dans le name, je ne sais pas vraiment comment récupérer l'ID des cases cochées pour les effaccer d'un coup afin d'éviter par exemple en effacant une date, que la date n°5 ne devienne la date n°4 par exemple.
Donc ma question:
Comment bien récupérer mes infos et faire ma requête SQL proprement ? (je veux pas faire un truc tout cracra)
Voici mon code si ça peut aider:
<form action="effacerdates.php" method="POST">
<?php
while($data = mysql_fetch_assoc($req))
{
echo '<input type="checkbox" name="'.$data['id'].'" value="--- ">';
echo $data['jour'].' '.$data['datefr'].' - '.$data['salle'].' (';
echo '<i>'.$data['ville'].'</i> - '.$data['departement'].')<br />';
}
?>
<br />
<input type="submit" value="Effacer les dates sélectionnées">
</form>
Merci de votre aide et de votre compréhension.
Parce qu'évidement je cherche une solution et j'en trouverai bien une mais pas forcément la plus propre ou la plus concise.
A voir également:
- Checkbox pour controler une base de données
- Fuite données maif - Guide
- Base de registre - Guide
- Supprimer les données de navigation - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- La base de données de sécurité du serveur n'a pas de compte d'ordinateur pour la relation - Forum Windows 10
3 réponses
Bonsoir;
Pour le formulaire, mets plutôt ça :
et si tu veux voir ce que tu récupères dans ton $_POST, fais ça :
Avec mon test j'obtiens ça :
Donc je sais que l'ai coché les identifiants 2 et 4 ; je les récupère dans le tableau $_POST['afac']
Donc le code pour construire la requête ressemblera à ça :
Pour le formulaire, mets plutôt ça :
echo '<input type="checkbox" name="afac[]" value="'.$data['id'].'">', "\n";
et si tu veux voir ce que tu récupères dans ton $_POST, fais ça :
<pre><?php print_r($_POST); ?></pre>
Avec mon test j'obtiens ça :
Array ( [afac] => Array ( [0] => 2 [1] => 4 ) )
Donc je sais que l'ai coché les identifiants 2 et 4 ; je les récupère dans le tableau $_POST['afac']
Donc le code pour construire la requête ressemblera à ça :
if ($_POST['afac']) { # si l'utilisateur a coché au moins 1 case $id_afac = implode(' or id=', $_POST['afac']); $sql = "delete from table_des_dates WHERE id=" . $id_afac; echo $sql; }
Bonjour R4F et merci pour ta réponse,
Alors c'est drôle parce que j'ai utilisé ma petite tête et j'ai trouvé la même solution sauf que j'avais mis un opérateur 'AND' au lieu d'un opérateur 'OR' dans la requête SQL et du coup cela ne produisait rien. Ni résultat, ni erreur.
Je ne sais pas si c'est seulement moi mais les opérateurs logiques 'and / or' me paraissent toujours inverse en SQL.
Maintenant cela fonctionne parfaitement mais je n'ai pas mis de test genre: if ($_POST['afac']
Je suis pourtant habitué à plein de langages de prog et je n'ai toujours pas ce réflexe.
Je vais ajouter ça tout de suite et te remercie beaucoup pour ton aide.
Mig
Alors c'est drôle parce que j'ai utilisé ma petite tête et j'ai trouvé la même solution sauf que j'avais mis un opérateur 'AND' au lieu d'un opérateur 'OR' dans la requête SQL et du coup cela ne produisait rien. Ni résultat, ni erreur.
Je ne sais pas si c'est seulement moi mais les opérateurs logiques 'and / or' me paraissent toujours inverse en SQL.
Maintenant cela fonctionne parfaitement mais je n'ai pas mis de test genre: if ($_POST['afac']
Je suis pourtant habitué à plein de langages de prog et je n'ai toujours pas ce réflexe.
Je vais ajouter ça tout de suite et te remercie beaucoup pour ton aide.
Mig