Checkbox pour controler une base de données

Résolu/Fermé
Migwell - 16 janv. 2008 à 12:55
 migwell - 17 janv. 2008 à 10:37
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.

3 réponses

R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
16 janv. 2008 à 19:47
Bonsoir;

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;
}
0
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
0
Je ferme la discussion si c'est résolu du coup.
Enfin si j'ai bien compris le principe.
0