Checkbox et passage de plusieurs données dans le value

Epock
Invité n'ayant pas de compte PHPfrance

27 juil. 2007, 16:46

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

Mammouth du PHP | 568 Messages

27 juil. 2007, 16:49

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 /

Epock
Invité n'ayant pas de compte PHPfrance

27 juil. 2007, 17:00

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...

Mammouth du PHP | 568 Messages

27 juil. 2007, 17:04

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.

Epock
Invité n'ayant pas de compte PHPfrance

27 juil. 2007, 17:15

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...

Invité
Invité n'ayant pas de compte PHPfrance

28 juil. 2007, 05:01

up ? :cry:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juil. 2007, 09:30

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 juil. 2007, 12:48

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];
   ...
}
*/
?>         

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Epock
Invité n'ayant pas de compte PHPfrance

28 juil. 2007, 14:06

Merci beaucoup Truc pour ton aide précise :)

Je vais tester ca des que possible.

Mes excuses à la modération pour le up.