Web Developpement

Forum de discussions pour les webmasters et les web developpeurs. (PHP, SQL, XHTML, JavaScript, Référencement, Positionnement,...)

Vous n'êtes pas identifié.

#1 05-03-2008 17:30:40

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Transmettre des variables par formulaires avec le même nom de champ ?

Bonjour

En faite tout est dans le sujet ^^. Je sais par avance que le nom des champs doivent être différent et appelé par des echo différent mais quand est il lorsque le formulaire se présente de cette façon:
Supposons 3 checkbox portant le même nom qui en faite pourrait très bien en être qu'une seule se trouvant dans une boucle:
<input type="checkbox" name="premierevaleur" value="valeur1"/>

Code:

<form name="frm" method="get" action="#">
valeur1<input type="checkbox" name="premierevaleur" value="valeur1"/><br />
valeur2<input type="checkbox" name="premierevaleur" value="valeur2"/><br />
valeur3<input type="checkbox" name="premierevaleur" value="valeur3"/><br />
<input type="submit" name="envoyer" value="Envoyer" />
</form>

<?php if(isset($_GET["premierevaleur"])){
$teste1 = $_GET["premierevaleur"];
//Si $teste1 est différent de vide donc coché j'affiche alors le résultat des checkbox cochées
while ($teste1 != "")
{
echo "$teste1";
}
}
?>

Dans mon résultat, je vois bien que les variables des checkbox cochés transites par l'url mais je ne parviens pas à les afficher( une seule s'affiche) et en plus sa boucle à l'infinie.
Pourquoi? Quelle est le soucis ?
Bon, ceci est juste pour ma culture perso smile!
Merci d'avance

Hors ligne

 

Liens utiles

#2 05-03-2008 18:39:53

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Transmettre des variables par formulaires avec le même nom de champ ?

Bonjour et bienvenue,


Je pense que c'est ce code la qu'il te faut.

Code:

<form name="frm" method="get" action="">
valeur1<input type="checkbox" name="premierevaleur[]" value="valeur1"/><br />
valeur2<input type="checkbox" name="premierevaleur[]" value="valeur2"/><br />
valeur3<input type="checkbox" name="premierevaleur[]" value="valeur3"/><br />
<input type="submit" name="envoyer" value="Envoyer" />
</form>

<?php

$TabValeur=$_GET["premierevaleur"];
if(sizeof($TabValeur)) foreach ($TabValeur as $valeur) echo "$valeur<br />\n";
?>

J'ai remplacé le while par un foreach, sa prend moin de ressources selon moi.

Si tu comprend pas le code je peu me lancer dans des explications, mais je ne pence pas que ce soit utile.

Hors ligne

 

#3 05-03-2008 20:40:04

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Transmettre des variables par formulaires avec le même nom de champ ?

Merci Crocxx smile,

Pour les "explications", il ne faut pas se fier aux apparences ^^ ... voilà des expressions que je ne connaissais pas comme sizeof et foreach, alors j'ai tenté de comprendre smile!

En tout cas sa fonctionne très bien.

Peut on faire la même avec une boucle while?

Hors ligne

 

#4 05-03-2008 20:55:11

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Transmettre des variables par formulaires avec le même nom de champ ?

En faite foreach sa sert a lire chaque ligne d'un tableau une par une, et sizeof à retourné la taille d'un tableau. ^^

Tu peu bien sur utiliser while mais dans ce cas je ne te le conseil pas trop, un for serai mieux à la rigeure si tu veut lire toutes les lignes.

Code:

//Avec un for
$NbLigne=sizeof($TabValeur);
for($i=0;$i<$NbLigne;$i++) echo $_GET["premierevaleur"][$i];


//Avec un while
$NbLigne=sizeof($TabValeur);
$i=0;
while($i<$NbLigne)
{
    echo $_GET["premierevaleur"][$i];
    $i++;
}

J'ai pas testé les codes mais normalement tous fonctionne ^^

Hors ligne

 

#5 06-03-2008 10:32:24

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Transmettre des variables par formulaires avec le même nom de champ ?

Merci pour ces explications wink .
Je viens de tester avec for et while sans résultat .. sa ne fonctionne pas ^^.

Par ce teste, j'essaye de répondre à une question qui est la suivante:
Dans un formulaire et contenue dans une boucle il y a:

Code:

...
$query1 = mysql_query("SELECT * FROM  DATES ORDER BY `DATES`.`id_date` ASC");

$id = "";

while($affiche1 = mysql_fetch_array($query1))
{
$id_date = $affiche1['id_date'];
$id.="$id_date <br />";

<input type='checkbox' name='id_date' value='$id_date' /> 
}
...

Ce qui fait qu'il y a plusieurs checkbox.
Dans une autre page je récupère les valeurs transmise par $_GET

Code:

<?
$id_date=$_GET['id_date'];
echo"$id_date";
?>

Le hic est que sa me renvoit qu'un seul résultat tout comme dans mon teste tout en haut au debut! Il me manque donc forcement une variable quelque part...
ps:Pense à installer la toolbar de punbb pour le BBcode ... c'est vachement utile ^^ !

Dernière modification par c00lman (06-03-2008 10:58:46)

Hors ligne

 

#6 06-03-2008 12:01:01

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Transmettre des variables par formulaires avec le même nom de champ ?

En faite avec les checkbox pour retourner plusieurs valeurs dans un tableau tu doit utiliser les crochets avec la propriété name:

Code:

while($affiche1 = mysql_fetch_array($query1))
{
$id_date = $affiche1['id_date'];
$id.=$id_date.'<br />';

echo'<input type="checkbox" name="id_date[]" value="'.$id_date.'" /><br/>';
}

Pour le while et le for, je vais vérifier sa tous à leurs, mais à première vu, j'ai pas vu d'erreur.

Hors ligne

 

Liens utiles

#7 07-03-2008 09:40:26

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Transmettre des variables par formulaires avec le même nom de champ ?

Autant pour moi ^^, j'avais viré la ligne $TabValeur=$_GET["premierevaleur"]; pour les teste avec for et while. Rien à dire, sa fonctionne très bien wink.

Sur ta dernière réponse avec le crochets, le code pour afficher la variable dans l'autre page change également je suppose ?:

Code:

<?
$id_date=$_GET['id_date'];
echo"$id_date";
?>

Hors ligne

 

#8 07-03-2008 11:47:36

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Transmettre des variables par formulaires avec le même nom de champ ?

Oui en fait tu reçois les variables dans un tableau 2 dimensions:

Code:

$_GET['id_date'][0];
$_GET['id_date'][1];
$_GET['id_date'][2];
// ....
$_GET['id_date'][n];

Dans ton tableau tu à une ligne par champ envoyé.
Attention n commence à zero.

C'est ensuite assez facile à traiter comme résultat.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB & édité par Rudy Onfroy

Liens & partenaires