Page 1 sur 2
Formulaire contenant des boutons radio
Posté : 04 mai 2005, 14:06
par BFH
Bonjour, oui je sais :
encore lui !
Je suis nul j'y peux rien...
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%"> </TD>
<TD width="20%"><H2>Date : <font color="#0033CC"><?=$jour ."-". $mois ."-". $annee;?></font> </H2></TD>
</TR>
<?
}
?>
<TR>
<TD colspan="6"> </TD>
</TR>
<TR>
<TD colspan="6"><HR></TD>
</TR>
<TR>
<TD colspan="6"> </TD>
</TR>
<TR>
<TD colspan="6"><CENTER><input type="submit" name="Submit" value="Afficher le Rapport">
<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
Posté : 04 mai 2005, 14:08
par slipndi
Bonjour, enfaite je sais pas si c'est le coup de la fatigue ou digestion mais je comprend pas ce qui ne va pas ?
Posté : 04 mai 2005, 14:13
par BFH
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.
Posté : 04 mai 2005, 14:14
par slipndi
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 !
Posté : 04 mai 2005, 14:15
par seayoung
Bonjour,
pourais tu exprimer un pe plus clairement ton probleme s'il te plai (j'ai probablement aussi un problème de digestion

)
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

Posté : 04 mai 2005, 14:16
par seayoung
dsl un pe de retard sur mon post
Posté : 04 mai 2005, 14:25
par BFH
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
Posté : 04 mai 2005, 14:37
par slipndi
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 !
Posté : 04 mai 2005, 14:57
par BFH
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)
Posté : 04 mai 2005, 15:42
par Cyrano
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++
Posté : 04 mai 2005, 16:04
par BFH
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%"> </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]
Posté : 04 mai 2005, 16:10
par Cyrano
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%"> </TD>
<TD width="20%"><H2>Date : <font color="#0033CC"><?=$jour ."-". $mois ."-". $annee;?></font> </H2></TD>
</TR>
<?
$i++
}
?>
<TR>
<TD colspan="6"> </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">
<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.
Posté : 04 mai 2005, 16:41
par BFH
merci Cyrano,
maintenant si je choisit le premier rapport (sur 2 possibles) en mode minimal, l'url est :
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 :
Je vois pas comment recupérer la bonne valeur de P dans les deux cas.

Posté : 04 mai 2005, 16:49
par Cyrano
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
Posté : 04 mai 2005, 16:51
par Cyrano
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.