Page 1 sur 1

case coché affiche formulaire

Posté : 02 janv. 2009, 15:25
par rastacouaire
Bonjour,

Je souhaitais avoir une information.

voilà, j'ai un formulaire où je rentre des données et je coches des cases pour savoir quels pays sont concernés.

j'aimerais que, suivant la case coché, une partie du formulaire s'affiche.

par exemple si la case france est coché, le formulaire par la suite affichera les champs à remplir pour la france.

si les cases france et usa sont cochés, le formulaire affichera les champs pour la france et usa.


le truc, c'est que mes cases à cocher sont sur une page et les champs à afficher sont sur une autre page dans un autre formulaire.

selon vous, est-ce que c'est possible? si oui, quel est le cheminement?

merci :)

Posté : 02 janv. 2009, 15:57
par edison1986
Bonjour,

Je ne suis pas sur d'avoir très bien compris ton problème, mais si c'est ce que je pense.

Dans le deuxième formulaire tu reçois les infos sur le pays et tu fais des if pour afficher les champs correspondant.

Par exemple :
if(isset($_POST['france']))
{
   echo("<input type=\"text\" name=\"test\" value=\"\" />");
}

Posté : 08 janv. 2009, 16:59
par Invité
alors, voici comment j'affiche mes pays dans mon premier formulaire :
<td><h5 class="Style2">Pays concernés : </h5></td>
<td>
<?
$list_pays = hydrus_site_list(-1,$bdd);
for($i=0;$i<count($list_pays);$i++)
{
	if($_POST['site'.$list_pays[$i][0].''] == true)
	{
	   print("<input type='checkbox' name='site".$list_pays[$i][0]."' />".$list_pays[$i][1]."<br/>");	
	}
	else
	{
	   print("<input type='checkbox' name='site".$list_pays[$i][0]."' />".$list_pays[$i][1]."<br/>");		
	}
}
?></td>
avec ceci je ne peux pas envoyer les différentes cases qui sont cochées. fin je peux peut-être, mais je n'arrive pas à voir comment... :|

Posté : 08 janv. 2009, 17:00
par rastacouaire
scuzez, le post d'avant c'est moi..

j'avais oublié de me connecter... :roll: :oops: :oops:

Posté : 08 janv. 2009, 18:05
par guilt92
Je comprend pas pourquoi faire faire un if else si c'est pour avoir la meme chose dans les deux cas... ;)

Bon sinon l'idée est donc la suivante : un formulaire avec un bouton de validation pour choisir les pays qui amene vers une autre page dont le formulaire dépendra des pays sélectionnés.

Exemple ::

page etape1.php

Code : Tout sélectionner

<form method="POST" name="pays" action="etape2.php"> <input type="checkbox" value="France" name="France"/>France<br/> <input type="checkbox" value="USA" name="USA"/>USA<br/> <input type="submit" value="Valider"/> </form>
(ici en statique mais tu peux adapter avec ton code)

la page lorsque l'on valide l'étape 1 :

etape2.php
<form name="etape2" action="validation.php" method="post">
<?php
if(isset($_POST["France"])) {
      //code si la France est cochée
      }
if(isset($_POST["USA"])) {
      //code si USA est coché
      }
?>
</form>
J espere que cela t eclairera

Posté : 09 janv. 2009, 12:50
par rastacouaire
ah oui, le truc tout con, jsuis bête..


sinon, ce n'est pas moi qui est fait le code, je viens d'arriver et le site était déjà fait par une autre personne, qui a été retouché par une autre personne...

fin bref, le bordel.. ^^


par contre, je ne vois pas comment je peux transmettre l'information dans mon url.

parce que si je fais ça comme url :
hydrus_utils_redirect("cataloguecopy2.php5?ref=".$_POST['prod_ref']."&nom=".$_POST['prod_nom']."&id=".$_GET['id']."&site_id=".$list_pays[$i][0]."");

il n'entrera pas en mémoire toutes les cases qui ont pu être coché.

il peut en prendre une, mais si j'en coche 3, il n'en saura rien ...

et en plus, si je n'abuse, pour transmettre dans une url il est préférable que ce soit sous la variable POST ou GET non?

Posté : 09 janv. 2009, 15:32
par guilt92
En fait cela dépend...

Si chaque case a cocher à un name spécifique alors si elle est cochée elle sera transmise et récupérable via $_POST["name"] d'où le isset() pour savoir si ca existe ou pas. Donc si il y 3 valeurs tu auras un $_POST["fr"], $_POST["en"] et $_POST["ch"] qui existeront donc tu saura qu il a coché 3 cases

Si tu as un tableau de nom name=valeur[] alors la valeur posté $_POST["valeur"] sera un tableau contenant toutes les values des cases cochées ($_POST["valeur"][0] = "fr", $_POST["valeur"][1]="en" ...)

Effectivement dans le cas d'un passage par url il faut utiliser $_GET pour récupérer les valeurs (et mettre method=get dans le formulaire) mais pourquoi ne pas préférer post ?

Posté : 09 janv. 2009, 17:57
par rastacouaire
ok, je vais tester tout ça et je dirais ce qu'il en est :)

merci beaucoup :D

et voui j'aurais une préférence pour POST et non GET pour transmettre les données :)

Posté : 13 janv. 2009, 17:02
par rastacouaire
alors alors, désolée pour tout ce retard. des problèmes plus important on fait que je ne pouvais m'occuper du site jusqu'ici :)

mon code fonctionne, mais qu'à moitié.. forcément, ça serait trop simple sinon :roll:


alors en ce qui concerne l'affiche du formulaire suivant la valeur de mon $site_id, tout fonctionne très bien

le code que je fais est le suivant :
if((isset($_GET['site_id'])) && ($_GET['site_id'] == "4" ))
{

	
?>
<? print ("<form action='' method='post' name='form2' id='form2'>");
?>

//là je mets tout mon formulaire qui correspond
en revanche, là où ça merdouille, c'est la valeur que prend $site_id et qui est envoyé.

quelque soit l'élément que je sélectionne, $site_id est toujours égale à 4. embêtant, car il n'arrive pas à transmettre les bonnes informations.

Avez-vous une idée où est le problème?

merci :)