Page 1 sur 1

Selection de données avec checkbox

Posté : 08 sept. 2007, 00:17
par Morkem
Bonsoir,
Je veux a partir d'une liste de membres, selectionner des membres pour les replacer sur une autre liste.

J'ai donc fait ceci :
<?php
while ($data2 = mysql_fetch_assoc($requete2))
{
?>
<form method="post" action="listingtrain.php">
<tr>
	<td><input type="checkbox" name="affect[]" value="<?php $data2['id']; ?>"></td>
	<td><?php echo $data2['nom']; ?></td>
	<td><?php echo $data2['prenom']; ?></td>
	<td><?php echo $data2['sexe']; ?></td>
	<td><?php echo $data2['anniversaire']; ?></td>
	<td><?php echo $data2['groupe']; ?></td>
	<td><?php echo $data2['categorie'] , ' ', $data2['numero']; ?></td>
	<td><?php echo $data2['arme']; ?></td>
	<td><?php echo $data2['droitgauche']; ?></td>
</tr>

<?php
}       
?>
</table>
<p>Pour la sélection : <input type="submit" value="Affecter" name="affecter" /></form></p>
Voila donc ici la liste avec mes checkbox et mon bouton d'envoi.

Ensuite je traite (enfin j'essaye vu que ca ne fonctionne pas :p) :
if (isset($_POST['affect']))
{
$retour = mysql_query('SELECT id, nom, prenom, sexe, categorie, numero, arme FROM membres WHERE id=".$id." ') or die (mysql_error());
while ($data = mysql_fetch_assoc($retour))
{
$id = $data['id'];
$nom = $data['nom'];
$prenom = $data['prenom'];
$sexe = $data['sexe'];
$categorie = $data['categorie'];
$numero = $data['numero'];
$arme = $data['arme'];

mysql_query("INSERT INTO elite VALUES('$id', '$nom', '$prenom', '$sexe', '$categorie', '$numero', '$arme') ") or die(mysql_error());
}
}
Je me suis dit que ca paraissait assez logique de faire ça mais apparemment ca n'est pas encore ça... En fait je ne dois pas récuperer la ligne du checkbox coché... Donc ca ne doit pas aller dans la première partie ?

J'ai oublié de précisé que je renvoyais à la même page. Je recrée une liste au dessus de la premiere pour afficher ce qu'il y a dans la table sql "elite"...

Merci

Posté : 08 sept. 2007, 01:08
par Ryle
Ben tu vérifies si le tableau $_POST['affect'] est bien défini, mais faudrait peut être le parcourir pour pouvoir utiliser les différentes valeurs des cases qui ont été cochées. Tu utilises une variable $id dans ta requête, mais elle n'a été définie nulle part...

Après le isSet, tu peux utiliser un foreach() par exemple, pour parcourir le tableau id par id et les utiliser dans ta requête :)

Posté : 08 sept. 2007, 12:23
par Morkem
Oui alors foreach parcoure un array mais c'est quoi mon array ?
if (isset($_POST['affect']))
{ 
$elite = array (
  'id' => '$id',
  'nom' => '$nom',
  'prenom' => '$prenom',
);

foreach( $elite as $value ) 

mysql_query("INSERT INTO elite VALUES('".$value."') ") or die(mysql_error());
Ca ne doit pas être ça mais j'essaye de comprendre les exemple théorique que l'on peut donner sur internet.

Donc en gros comment je recupère mes valeur dans mon array. Et ensuite comment je les affiche dans la requete sql car ca ne doit pas être ça non plus :s

Posté : 08 sept. 2007, 13:39
par Ryle
Lorsque dans ton formulaire tu postes une case à cochée qui s'appelle "field", tu récupères dans $_POST['field'] une chaine de caractères contenant la valeur de la case si elle a été cochée.

Si ton champ s'appelle "field[]" et que la case est cochée, alors $_POST['field'] devient un tableau dont le premier élément contient la valeur de case. Si plusieurs cases ont le même nom, alors le tableau contient les valeurs de toutes celles qui ont été cochées :)

Quand tu as un doute sur ce que tu récupères du formulaire n'hésite pas à afficher le tableau $_POST (ou $_GET) avec un print_r() ou un var_dump() pour voir ce qu'il contient. Cela te permettra de voir rapidement quelles sont les variables, les valeurs, et la structure de ce que tu récupères :)

Posté : 13 sept. 2007, 12:32
par Morkem
Ba oui mais c'est pareil, on dit partout que l'on fait ça :
print_r ($array)
Or moi je n'ai pas
$array = array (....)
sinon je ne chercherais pas a le savoir :s Bref je ne trouve pas non plus ou mettre le foreach etc...

Donc je suis toujours bloqué car je n'arrive pas a appliquer le(s) manuel(s) a mon cas.

Posté : 13 sept. 2007, 13:25
par d0m
première chose : tu as des problèmes de quotes sur l'execution de ta requête
$retour = mysql_query('SELECT id, nom, prenom, sexe, categorie, numero, arme FROM membres WHERE id=".$id." ') or die (mysql_error());
ensuite dans tes cases à cocher, tous de même nom affect[], tu mets les valeurs des identifiants.
Après validation de ton formulaire, $_POST['affect'] est un tableau de ce type :

Code : Tout sélectionner

$_POST['affect'] : array( 0 => id_personne_cochée_1, 1 => id_personne_cochée_2, ... )
c'est donc celui là ton tableau d'identifiant te servant à la requête