Formulaire contenant des boutons radio

BFH
Eléphant du PHP | 214 Messages

04 mai 2005, 14:06

Bonjour, oui je sais : encore lui !
Je suis nul j'y peux rien... :lol:

J'ai un problème avec un formulaire que j'ai créé :
	<form method="get" action="Rapport3.php">
	<TABLE border="0" width="100%">
<?
	while($row2=mysql_fetch_assoc($result2))
		{		
			$date=$row2["RDateTime"];
			$annee=substr($date, 0, 4);
			$mois=substr($date, 5, 2);
			$jour=substr($date, 8, 2);
			$Ra=$row2['ID_R'];
?>			
<TR>
	<TD align="right"  width="20%"><H2>Poste <?=$row2["RUser"];?> : </H2></TD>
	<TD width="5%"><INPUT TYPE="hidden" [b]VALUE="<?=$row2['ID_R'];?>" Name="P"[/b]></TD> [b]//Ce qui est important est ici ![/b]
	<TD align="center"><H3><font color="#0033CC">Rapport Détaillé </font> [b]<input type="radio" value="VRAI" name="TR">[/b] </H3> </TD>
	<TD align="center"><H3><font color="#0033CC">Rapport Minimal </font> [b]<input type="radio" value="FAUX" name="TR">[/b] </H3> </TD>
	<TD width="5%">&nbsp;</TD>
	<TD width="20%"><H2>Date : <font color="#0033CC"><?=$jour ."-". $mois ."-". $annee;?></font> </H2></TD>						
</TR>
<?
		}
?>
<TR>
	<TD colspan="6">&nbsp;</TD>
</TR>
<TR>
	<TD colspan="6"><HR></TD>
</TR>
<TR>
	<TD colspan="6">&nbsp;</TD>
</TR>
<TR>
	<TD colspan="6"><CENTER><input type="submit" name="Submit" value="Afficher le Rapport">&nbsp;&nbsp;&nbsp;
			<input type="reset" name="reset" value="Effacer"> </CENTER></TD>
</TR>
</TABLE>
</form>
Ce qui fait que tant que un resultat ça me met :
Poste Nom du gars1 : Rapport Détaillé [bouton] Rapport minimal [bouton]
Poste Nom du gars2 : Rapport Détaillé [bouton] Rapport minimal [bouton]
Poste Nom du gars3 : Rapport Détaillé [bouton] Rapport minimal [bouton]
Bon jusque là tout va bien c'est génial mes ligns se font à la suite comme je le veux en plus je ne peux selectionner qu'un seul rapport parmis tous .
Cependant lorsque dans Rapport3.php je reçoit les infos et bien $P = la valeur du dernier rapport et pas la valeur du rapport choisit par contre $TR=la bonne valeur
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Eléphant du PHP | 281 Messages

04 mai 2005, 14:08

Bonjour, enfaite je sais pas si c'est le coup de la fatigue ou digestion mais je comprend pas ce qui ne va pas ?

BFH
Eléphant du PHP | 214 Messages

04 mai 2005, 14:13

Si je clic sur le bouton radio pour selectionner le rapport détaillé du gars n°1 à la page suivante j'aurais le rapport du gars n°3...

Si sur cette page on me donne le choix entre 10 rapport ce sera toujours le rapport avec la valeur de P la plus élevée qui sera affichée.
Ce n'est pas la bonne valeur de p qui est transmise!

Est ce que c'est plus claire pour toi, si ce n'est pas le cas n'hesite pas à me le dire.
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Eléphant du PHP | 281 Messages

04 mai 2005, 14:14

mhh je pense alors que c'est un soucis dans ta page de recepetion on peut voir le code ? je penche sur un problème de requete !

Eléphant du PHP | 357 Messages

04 mai 2005, 14:15

Bonjour,
pourais tu exprimer un pe plus clairement ton probleme s'il te plai (j'ai probablement aussi un problème de digestion :wink: )
Toutefois deux remarques
Pour dire comme le grand Cyrano quand tu déclare du PHP les balise sont
<?php et non <?
de plus :
<TD width="5%"><INPUT TYPE="hidden" VALUE=" <?=$row2['ID_R'];?>" Name="P"></TD> //Ce qui est important est ici !
Pourkoi tu ne met pas :
<?php
$row2['ID_R'];
?>
c'est une suggestion comme une autre :roll:

Eléphant du PHP | 357 Messages

04 mai 2005, 14:16

dsl un pe de retard sur mon post

BFH
Eléphant du PHP | 214 Messages

04 mai 2005, 14:25

Je ne pense pas que ce soit un probléme de reception car voila ce qui est transmit dans le cas où j'ai une liste de 2 rapports.
Ici j'ai choisit le rapport détaillé de la personne n°1 or comme vous pouvez le constater j'ai :
P=1 &TR=FAUX& P=2 &Submit=Afficher+le+Rapport
Donc forcément après ça bug!

Je receptionne mes données avec un
if(isset($_GET['P']))
Comme on me l'as appris a faire sur ce forum
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Eléphant du PHP | 281 Messages

04 mai 2005, 14:37

bon enfaite je viens de voir une ptite ereur va savoir si c'est cela qui merde :

<form method="get" action="Rapport3.php">
    <TABLE border="0" width="100%">
<?
    while($row2=mysql_fetch_assoc($result2))
        {        
            $date=$row2["RDateTime"];
            $annee=substr($date, 0, 4);
            $mois=substr($date, 5, 2);
            $jour=substr($date, 8, 2);
            $Ra=$row2['ID_R'];
?>            
<TR>
    <TD align="right"  width="20%"><H2>Poste <?=$row2["RUser"];?> : </H2></TD>
    <TD width="5%"><INPUT TYPE="hidden" VALUE="<?=$row2['ID_R'];?>" Name="P"></TD> //Ce qui est important est ici ! 
tu met $row2['ID_R']; dans $Ra donc utilise $Ra ! ca donnerai :
<form method="get" action="Rapport3.php">
    <TABLE border="0" width="100%">
<?
    while($row2=mysql_fetch_assoc($result2))
        {        
            $date=$row2["RDateTime"];
            $annee=substr($date, 0, 4);
            $mois=substr($date, 5, 2);
            $jour=substr($date, 8, 2);
            $Ra=$row2['ID_R'];
?>            
<TR>
    <TD align="right"  width="20%"><H2>Poste <?=$row2["RUser"];?> : </H2></TD>
    <TD width="5%"><INPUT TYPE="hidden" VALUE="<? echo($Ra);?>" Name="P"></TD> //Ce qui est important est ici ! 

BFH
Eléphant du PHP | 214 Messages

04 mai 2005, 14:57

Désolé mais ce n'est pas cela, le problème reste entier et la ligne qui est transmise est toujours la même :
Note: si je passe mon champs caché (hidden) en champs text, les bonnes valeurs de P sont contenu aux bons endroits. Donc le problème se fait dans la transmission (enfin je pense)

Personne connaitrais une formule pour recupérer le premier P transmis et oublier le second (car dans tout les cas j'en ait deux)
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

04 mai 2005, 15:42

Je viens de fouiner un peu dans le code et je contate une chose : les attributs "name" des champs ne sont pas dynamiques : donc tu as X fois (dépendant du nombre de tour de boucle while) avec le même nom

Il faut utiliser une astuce

Initialise un pointeur avant ton while : $i = 0

Dynamise le nom de tes champs : attribut ="valeur<?=$i?>"

Ajoute un champ caché et mets dedans la valeur : value="<?=$i?>"

Au traitement, récupère la valeur de $i pour savoir combien tu as de traitements à effectuer et tu auras la bone valeur pour chaque tour

N'oublie pas d'incrémenter $i avant la fermeture de l'accolade du while : $i++
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

04 mai 2005, 16:04

Désolé mais je ne comprends pas ce que tu m'as dit Cyrano. je doit faire comment :
<form method="get" action="Rapport3.php"> 
    <TABLE border="0" width="100%"> 
<? 
    $i=0;
    while($row2=mysql_fetch_assoc($result2)) 
        {         
            $date=$row2["RDateTime"]; 
            $annee=substr($date, 0, 4); 
            $mois=substr($date, 5, 2); 
            $jour=substr($date, 8, 2); 
            $Ra=$row2['ID_R']; 
?>             
<TR> 
    <TD align="right"  width="20%"><H2>Poste <?=$row2["RUser"];?> : </H2></TD> 
    <TD width="5%"><INPUT TYPE="hidden" VALUE="<?=$row2['ID_R'];?>" [b][size=150]Name="<?=$i;?>"[/size] [/b] ></TD>  
    <TD align="center"><H3><font color="#0033CC">Rapport Détaillé </font> <input type="radio" value="VRAI" name="TR"> </H3> </TD> 
    <TD align="center"><H3><font color="#0033CC">Rapport Minimal </font> <input type="radio" value="FAUX" name="TR"> </H3> </TD> 
    <TD width="5%">&nbsp;</TD> 
    <TD width="20%"><H2>Date : <font color="#0033CC"><?=$jour ."-". $mois ."-". $annee;?></font> </H2></TD>                         
</TR> 
<?
    $i++; 
        } 
?> 
ou autre chose ?

Enfin, deja : merci pour tout ![/u][/b]
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

04 mai 2005, 16:10

On va reprendre le premier formulaire que tu as envoyé:
<form method="get" action="Rapport3.php">
    <TABLE border="0" width="100%">
<?
    $i = 0;
    while($row2=mysql_fetch_assoc($result2))
        {        
            $date=$row2["RDateTime"];
            $annee=substr($date, 0, 4);
            $mois=substr($date, 5, 2);
            $jour=substr($date, 8, 2);
            $Ra=$row2['ID_R'];
?>            
<TR>
    <TD align="right"  width="20%"><H2>Poste <?=$row2["RUser"];?> : </H2></TD>
    <TD width="5%"><INPUT TYPE="hidden" VALUE="<?=$row2['ID_R'];?>" Name="P<?=$i?>"></TD> //Ce qui est important est ici !
    <TD align="center"><H3><font color="#0033CC">Rapport Détaillé </font> <input type="radio" value="VRAI" name="TR<?=$i?>"> </H3> </TD>
    <TD align="center"><H3><font color="#0033CC">Rapport Minimal </font> <input type="radio" value="FAUX" name="TR<?=$i?>"> </H3> </TD>
    <TD width="5%">&nbsp;</TD>
    <TD width="20%"><H2>Date : <font color="#0033CC"><?=$jour ."-". $mois ."-". $annee;?></font> </H2></TD>                        
</TR>
<?
        $i++
        }
?>
<TR>
    <TD colspan="6">&nbsp;</TD>
</TR>
<TR>
    <TD colspan="6"><HR></TD>
</TR>
<TR>
    <TD colspan="6"><input type="hidden" name="nb_lignes" value="<?=$i?>"></TD>
</TR>
<TR>
    <TD colspan="6"><CENTER><input type="submit" name="Submit" value="Afficher le Rapport">&nbsp;&nbsp;&nbsp;
            <input type="reset" name="reset" value="Effacer"> </CENTER></TD>
</TR>
</TABLE>
</form>
Regarde bien ce que jai fait : affiche ta page dans ton navigateur et affiche la source obtenue : regarde bien les valeur des attributs "name" des champs. Note aussi en fin de formulaire le champ caché qui contient le nombre de lignes traitées par le while.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

04 mai 2005, 16:41

merci Cyrano,
maintenant si je choisit le premier rapport (sur 2 possibles) en mode minimal, l'url est :
http://127.0.0.1/PHP/Rapport3.php?P0=1&TR0=FAUX&P1=2&nb_lignes=2&Submit=Afficher+le+Rapport
mais je comprends pas trop a quoi ça sert car j'ai toujours deux P de transmis :(
De plus si je choisis le deuxième rapport sur les deux possibles, toujours en version minimale j'obtiens :
http://127.0.0.1/PHP/Rapport3.php?P0=1&P1=2&TR1=FAUX&nb_lignes=2&Submit=Afficher+le+Rapport
Je vois pas comment recupérer la bonne valeur de P dans les deux cas. :(
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

04 mai 2005, 16:49

BOn attends, une chose à la fois. Ce qu'on a fait là, c'est récupérer toutes les informations selon chaque ligne. Maintenant, il faut aujster le traitement en fonction de ce que tu récupères et en sachant que si tu as 250 lignes, tu auras 250 valeurs de P nommées successivement P0, P1, P2,....P249 et P250
Si tu ne veux garder que le dernier, alors récupères la valeur du champ caché et tu concatènes avec "P"<?=$_POST['nb_lignes']?> et tu auras ton résultat. Et même à la rigueur, tu supprimers la concaténation dans le champ de traitement pour la faire directement dans le champ caché du formulaire et tu n'auras que la valeur à récupérer
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

04 mai 2005, 16:51

Autre méthode pour nommer tes champs: au lieu de leur donner des noms dynamiques, nommes les en tableaux name=valeur[]
À l'arrivée, tu as des tableaus indexés et tu pioches dans la ligne de ton choix.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: