Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2007, 16h30   #1
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Par défaut [SQL] Fonctionnement des checkbox

bonjour,

je me hurte à un petit souci que je n'avais jamais eu jusqu'à présent étant donné que je n'avais jamais essayer de passer un tableau d'une page à l'autre


ma question est donc toute simple : quelle est la bonne syntaxe du $_POST dans le cas d'un chekbox (voir code pour plus de compréhension)

sur une page j'ai :
Code :
<td width="5px"><input type="checkbox" name="box['.$i.']" /></td>
puis sur la page suivante

Code :
1
2
$tab =array();
$tab=$_POST['box']; //syntaxe mauvaise pour un array
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 16h48   #2
Membre chevronné
 
Inscription : mars 2002
Messages : 611
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mars 2002
Messages : 611
Points : 764
Points : 764
Dans :

Code :
<td width="5px"><input type="checkbox" name="box['.$i.']" /></td>
le .$i. ne serait-il pas de trop ?? !

Code :
<td width="5px"><input type="checkbox" name="box[]" /></td>
DelphiManiac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 10h10   #3
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Je ne sais pas car à vrai dire c'est la premiere fois que j'essai de faire ce genre de choses


en gros ce que je voudrais c'est avoir sur une page une liste avec pour chaque ligne une case à cocher et sur la page suivante un traitement qui soit fais (exemple supprimer la (ou les) ligne(s) que l'on a coché de la base


pour le moment ce qui semble marché c'est la premiere page mais sur la page suivante je n'arrive pas à récuperer le tableau qui me permettrai de savoir quelles case a été coché ou non ?

PS: j'ai changé le titre pour qu'il soit plus parlant
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 10h36   #4
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Bonjour,

En fait tout dépend du résultat auquel on s'attend.

Prenons une liste de legumes...
Patates, haricots, Epinards, Salades, Brocolis

Si on part du principe que l'on doit retourner un ou plusieurs légumes, dans ce cas on doit déclarer un tableau de variables et on doit faire comme ceci :

Code :
1
2
3
4
5
6
 
<input type="checkbox" name="legumes[]" value="Patates" />Patates
<input type="checkbox" name="legumes[]" value="Haricots" />Haricots
<input type="checkbox" name="legumes[]" value="Epinards" />Epinards
<input type="checkbox" name="legumes[]" value="Salades" />Salades
<input type="checkbox" name="legumes[]" value="Brocolis" />Brocolis
Dans ce cas, c'est un tableau qui me sera renvoyé. Il me reverra la valeur de ce qui a été coché.
Code :
1
2
3
 
$legumes=$_POST['legumes'];
echo $legumes[0]; //Affiche le premier legume coché
Maintenant si je souhaite ne renvoyer qu'un seul élément :

Code :
1
2
 
<td width="5px"><input type="checkbox" name="box" value="box['.$i.']" /></td>
Je récupère l'élemen sous forme de variable comme ceci :
Code :
1
2
3
4
 
$tab=$_POST['box']; 
 
echo $tab; //renvoi la valeur de  box['.$i.'] dans le précédent formulaire
@+
Cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 11h15   #5
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
merci pour votre aide
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 13h37   #6
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

Si je résume, tu génères un paquet de cases a cocher pour savoir quels enregistrements il faut éffacer. Seulement je ne vois pas de boucle dans ton code pour afficher les cases...

Donc je dois partir sur une hypothèse que tu devras adapter... Et non te donner la solution à ton probleme comme tu l'esperais. Toutes tes cases a cocher doivent avoir une valeur et de préférence l'identifiant de l'enregistrement... C'est plus facile pour effacer ensuite.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$sql = "SELECT id, name from table1"; // exemple sql
$result = mysql_query($sql,$db);
 
echo'<tr><td width="30px">'.$donnees['Groupe'].'</td></tr>
<form action="StandbyOn.php" method="post">";
 
while ($C = mysql_fetch_array($result)) {
echo "<tr><td><input type="checkbox" name="box[]" value="$C['id']"/>$C['name']</td></tr>"
}
</form>
</table>
Ensuite pour récupérer les cases cochées (tu remarqueras que ce sont les ID des lignes qui sont envoyés par la valeur de la case a cocher)

Code :
1
2
3
4
5
6
7
8
9
10
11
 
 
$box=$_POST['box'];
$IN="";
foreach($box as $myid)
{
    if($IN) {$IN .= ",";}
    $IN .= $myid;
}
 
$sql = "DELETE FROM table1 WHERE id IN (".$IN.");";
Tu remarqueras que j'utilises une subtilité du SQL qui fais que je n'envoi qu'une seule requete à la base pour effacer tous les enregistrements au lieu d'une requete par enregistrement...

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h33.


 
 
 
 
Partenaires

Hébergement Web