Page 1 sur 1

Checkbox et passage de plusieurs données dans le value

Posté : 27 juil. 2007, 16:46
par Epock
Bonjour,

Je développe un petit truc en php, qui affiche une liste de membres avec pour chacun une case à cocher, afin par la suite de créer des listes de personnes dans la BD...

Voila le code :
$infos=array();
					$infos[0]=$a['nom'];$infos[1]=$a['prenom'];$infos[2]=$a['ville'];$infos[3]=$a['mail'];
					
					echo'<tr ><td class="dborder" width="30">'; 
					echo'<input type="checkbox" name="infosnonmb'.$i.'" value="'.$infos.'" checked="checked">';  
					echo'</td>
					echo'</tr>';
					$i=$i+1;
Voila grosso modo, j'essaye de faire passer un tableau qui contient 4 variables, via le value de ma checkbox.

Voila le code qui traite le formulaire :
			for($j=1;$j<=$i;$j++)
			{
				$infosnonmb=array();
				$infosnonmb=$_POST['infosnonmb'.$j.''];
				
						if ($infosnonmb!=0)
						{
							$nom=$infosnonmb[0];$prenom=$infosnonmb[1];
							$ville=$infosnonmb[2];;$mail=$infosnonmb[3];
							$commi->newNonmembre($com,$nom,$prenom,$mail,$ville);
						}	
			}			
Voila et je test depuis 1 heure toutes les synthaxes possibles pour mon tableau mais je ne trouve pas la bonne, je n'arrive a récupérer aucune variable de mon tableau donc je ne peux pas remplir ma base...

J'aimerais donc de l'aide pour trouver la bonne synthaxe avec ces tableaux, ou si vous avez une solution plus pratique pour faire passer plusieurs variables via la meme checkbox ca m'aiderait...

Merci d'avance

Re: Checkbox et passage de plusieurs données dans le value

Posté : 27 juil. 2007, 16:49
par Yosh
pourquoi est ce que tu t'embête à vouloir passer un tableau dans le value?

Passe simplement l'ID, et si ça ne ne te convient pas utilise une chaine du type id/nom/prenom/email

Ainsi tu n'a plus qu'a spliter ta chaine sur le /

Posté : 27 juil. 2007, 17:00
par Epock
Je ne peux pas utiliser l'id car ces personnes n'en ont pas pour des raisons particulières...

Et j'ai déja tenté de passer par une chaine de caractères, mais pareil, l'explode ne me renvoyait aucune variable...

Posté : 27 juil. 2007, 17:04
par Yosh
Et j'ai déja tenté de passer par une chaine de caractères, mais pareil, l'explode ne me renvoyait aucune variable...
Pas possible, je l'ai déjà fait à plusieurs reprises.

Tu a du faire une erreur.

Posté : 27 juil. 2007, 17:15
par Epock
C'est probable...

Quelle serait la synthaxe adéquate pour encapsuler 4 variables dans une chaine de caractere séparée par des / ? La mienne devait être défaillante...

Posté : 28 juil. 2007, 05:01
par Invité
up ? :cry:

Posté : 28 juil. 2007, 09:30
par zeus
Modération :
Epock, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.

Posté : 28 juil. 2007, 12:48
par Truc
Dans ton cas tu places $infos dans "value" en effectuant un test d'affichage (après validation du formulaire) avec :
<pre>
<? var_dump($_POST); ?>
</pre>
Tu verrais ce qui est retourné... certainement "Array".
<?php
$infos=array();
$infos[0]=$a['nom'];
$infos[1]=$a['prenom'];
$infos[2]=$a['ville'];
$infos[3]=$a['mail'];
$infoValue = implode('#-#',$infos);
// ou $infoValue = serialize($infos);
?>                    
<tr >
   <td class="dborder" width="30">
     <input type="checkbox" name="infosnonmb[]" value="<?php echo $infoValue ; ?>" checked="checked">  
   </td>
</tr>
Voila une autre syntaxe avec un tableau (grâce à []) pour l'attribut name.

Récupération :
//test d'affichage
<pre>
<? var_dump($_POST); ?>
</pre>
<?php

$infosnonmb = $_POST['infosnonmb];
                
foreach(infosnonmb as $infos)
{
   $info = explode('#-#',$infos);
   $nom=$info[0];
   $prenom=$info[1];
   $ville=$info[2];
   $mail=$info[3];
   $commi->newNonmembre($com,$nom,$prenom,$mail,$ville);
} 

/* ou avec serialize
foreach(infosnonmb as $infos)
{
   $info = unserialze($infos);
   $nom=$info[0];
   $prenom=$info[1];
   ...
}
*/
?>         

Posté : 28 juil. 2007, 14:06
par Epock
Merci beaucoup Truc pour ton aide précise :)

Je vais tester ca des que possible.

Mes excuses à la modération pour le up.