Erreur de formulaire PHP

Soul EX Messages postés 26 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 8 janvier 2006 - 8 janv. 2006 à 15:16
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 10 janv. 2006 à 00:40
Bonjour à tous,
voici le code sur lequel j'ai travaillé :

switch (TRUE) {
case ($class_officiel>$class_maj && $points_officiel<$points_maj) :
echo "
<form method="post" name="details" action="http://www.up-rue.com/detailsparties.php">
<td width="25%">

$nom $prenom $signe
</td></form>
<td width="15%">
$cat $catnum
</td>
<td width="12%">
$points_officiel
</td>
<td width="12%">
$class_officiel
</td>
<td width="12%">
$points_maj
</td>
<td width="12%">
$class_maj
</td>
<td width="14%">
+ $progression
</td>
</tr><tr>";
break;

. Il s'avère que dans ce code réside un problème car le formulaire (surligné en rouge) ne fonctionne pas.
Tout s'affiche normalement mais lorsque l'on clique sur le lien submit rien ne se passe.
Autre chose étonnante c'est que lorsque je sors de la boucle (oui il s'agit d'une boucle) le "
<form method="post" name="details" action="http://www.up-rue.com/detailsparties.php">" l'action du formulaire s'effectue. Evidemment, puisque l'on est dans une boucle rien ne correspond mais bon.
Est-ce que quelqu'un voit la nature du problème?
Si oui d'avance merci
SOUL

12 réponses

sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
8 janv. 2006 à 16:48
salut



"javascript:document.details.submit()"



il manque peut être un ; à la fn de cette ligne
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 janv. 2006 à 18:31
Salut,

utilise un id à la place du name sur ton formulaire.

<form method="post" action="blabla" id="formulaire">
[javascript:document.getElementById('formulaire').submit() lien]

</form>

a +
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Soul EX Messages postés 26 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 8 janvier 2006
8 janv. 2006 à 18:44
Merci AnthoMicro, le formulaire se lance désormais...
Mais maintenant un nouveau problème se pose...

Voyez vous même , mon code source ce compose ainsi :

Requete (select from **** order by id)
Initialisation des Variables depuis cette table (en utilisant la structure while)

et apres affichage conditionné, cad :

switch (TRUE) {
case ($class_officiel>$class_maj && $points_officiel<$points_maj) :
echo "
<form method="post" id="details" action="http://www.up-rue.com/detailsparties.php">
<td width="25%">

$nom $prenom $signe
</td></form>
";
break;

case ($class_officiel<$class_maj && $points_officiel>$points_maj) :
echo "
<form method="post" id="details" action="http://www.up-rue.com/detailsparties.php">
<td width="25%">

$nom $prenom $signe
</td></form>
";
break;

et ca plusieurs fois ..... (en tout cinq)
Et bien sur lorsque je me rend sur la page en question, et que je clique sur N'IMPORTE QUEL submit du tableau, il utilise les mêmes données (a savoir celles du premier enregistrement de la table order by ID).

Je ne comprends absolument pas ce qu'il se passe.
Pour plus de compréhension de votre page je vous invite à visualiser la page en question :
http://www.up-rue.com/classements.php

Merci d'avance
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 janv. 2006 à 19:03
ouais enfin là tu me donnes pas la bonne portion de code qui gère ta requête, donne-nous ton code qui génère la requête en fonction du classement y'a une erreur dedans :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Soul EX Messages postés 26 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 8 janvier 2006
8 janv. 2006 à 19:09
$requete = "select * from classements order by points_officiel desc, nom";
$envoi = mysql_query($requete);
while($tableau = mysql_fetch_array($envoi))
{
$id = $tableau['id'];
$nom = $tableau['nom'];
$prenom = $tableau['prenom'];
$licence = $tableau['licence'];
$sexe = $tableau['sexe'];
$signe = $tableau['signe'];
$cat = $tableau['cat'];
$catnum = $tableau['catnum'];
$points_officiel = $tableau['points_officiel'];
$class_officiel = $tableau['class_officiel'];
$points_maj = $tableau['points_maj'];
$class_maj = $tableau['class_maj'];
$progression = $tableau['progression'];

switch (TRUE) {
tu connais le contenu
}
}

Voila.
Je crains que ce ne soit les accolades rouges qui fassent tout planter, mais en les changeant de place rien ne s'arrangeait....
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 janv. 2006 à 19:34
order by points_officiel desc, nom

ta requête ne change jamais d'ordre, il faut changer l'ordre en fonction des variables que tu reçois en POST
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Soul EX Messages postés 26 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 8 janvier 2006
8 janv. 2006 à 20:04
???

Je ne comprends pas... peut être n'aies-je pas été assez clair.. pardonne moi. Je reprend depuis le début.
J'ai le tableau qui affiche tous les enregistrements (la question de l'ordre n'intervenant pas dans mon problème), un enregistrement par ligne (logique).
Cet affichage s'effectue avec la fonction SWITCH.
A chaque ligne (ou chaque enregistrement), j'ai un formulaire contenant 3 champs hidden et 1 submit sous forme de lien. Les valeurs des trois champs hidden sont selctionnées dans la base de donnée et j'ai vérifié, à chaque ligne ces données sont différentes.
Bon jusqu'a la tout fonctionne bien.
Le but recherché est que, lorsque le bouton submit et cliqué, les données des champs hidden soient repportées sur la page 'action' du formulaire (qui est la meme pour chaque ligne).
Etant donné que chaque ligne est différente, lorsque on clique sur chaque bouton submit tour a tour on devrait voir que la page action comporte des données différentes.
Et bien non, sur cette page s'affichent toujours les même données, à savoir les données de la PREMIERE LIGNE du tableau. Voila le problème.

et voici maintenant mon code source complet :

if($affichage==='Nombre de points (officiel)')
{
$requete3 = "select * from class_indivs_members order by points_officiel desc, nom";
}

elseif($affichage==='Nombre de points (à la dernière mise à jour)')
{
$requete3 = "select * from class_indivs_members order by points_maj desc, points_officiel desc";
}

elseif($affichage==='Progression') {
$requete3 = "select * from class_indivs_members order by progression desc, points_officiel desc";
}

elseif($affichage==='Ordre alphabétique') {
$requete3 = "select * from class_indivs_members order by nom, prenom";
}

else
{
$requete3 = "select * from class_indivs_members order by points_officiel desc, nom";
}

$envoi = mysql_query($requete3);
while($tableau = mysql_fetch_array($envoi))
{
$id = $tableau['id'];
$nom = $tableau['nom'];
$prenom = $tableau['prenom'];
$licence = $tableau['licence'];
$sexe = $tableau['sexe'];
$signe = $tableau['signe'];
$cat = $tableau['cat'];
$catnum = $tableau['catnum'];
$points_officiel = $tableau['points_officiel'];
$class_officiel = $tableau['class_officiel'];
$points_maj = $tableau['points_maj'];
$class_maj = $tableau['class_maj'];
$progression = $tableau['progression'];

switch (TRUE) {
case ($class_officiel>$class_maj && $points_officiel<$points_maj) :
echo "
<form method="post" id="details" action="http://www.up-rue.com/detailsparties.php">
<td width="25%">

$nom $prenom $signe
</td></form>
<td width="15%">
$cat $catnum
</td>
<td width="12%">
$points_officiel
</td>
<td width="12%">
$class_officiel
</td>
<td width="12%">
$points_maj
</td>
<td width="12%">
$class_maj
</td>
<td width="14%">
+ $progression
</td>
</tr><tr>";
break;

case ($class_officiel<$class_maj && $points_officiel>$points_maj) :
echo "
<form method="post" id="details" action="http://www.up-rue.com/detailsparties.php">
<td width="25%">

$nom $prenom $signe
</td></form>
<td width="15%">
$cat $catnum
</td>
<td width="12%">
$points_officiel
</td>
<td width="12%">
$class_officiel
</td>
<td width="12%">
$points_maj
</td>
<td width="12%">
$class_maj
</td>
<td width="14%">
$progression
</td>
</tr><tr>";
break;

case ($points_officiel>$points_maj) :
echo "
<form method="post" id="details" action="http://www.up-rue.com/detailsparties.php">
<td width="25%">

$nom $prenom $signe
</td></form>
<td width="15%">
$cat $catnum
</td>
<td width="12%">
$points_officiel
</td>
<td width="12%">
$class_officiel
</td>
<td width="12%">
$points_maj
</td>
<td width="12%">
$class_maj
</td>
<td width="14%">
$progression
</td>
</tr><tr>";
break;

case ($points_officiel<$points_maj) :
echo "
<form method="post" id="details" action="http://www.up-rue.com/detailsparties.php">
<td width="25%">

$nom $prenom $signe
</td></form>
<td width="15%">
$cat $catnum
</td>
<td width="12%">
$points_officiel
</td>
<td width="12%">
$class_officiel
</td>
<td width="12%">
$points_maj
</td>
<td width="12%">
$class_maj
</td>
<td width="14%">
+ $progression
</td>
</tr><tr>";
break;

case ($points_officiel==$points_maj) :
echo "
<form method="post" id="details" action="http://www.up-rue.com/detailsparties.php">
<td width="25%">

$nom $prenom $signe
</td></form>
<td width="15%">
$cat $catnum
</td>
<td width="12%">
$points_officiel
</td>
<td width="12%">
$class_officiel
</td>
<td width="12%">
$points_maj
</td>
<td width="12%">
$class_maj
</td>
<td width="14%">
0
</td>
</tr><tr>";
break;
}
}
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 janv. 2006 à 20:12
if($affichage==='Nombre de points (officiel)')
{
$requete3 = "select * from class_indivs_members order by points_officiel desc, nom";
}

elseif($affichage==='Nombre de points (à la dernière mise à jour)')
{
$requete3 = "select * from class_indivs_members order by points_maj desc, points_officiel desc";
}

elseif($affichage==='Progression') {
$requete3 = "select * from class_indivs_members order by progression desc, points_officiel desc";
}

elseif($affichage==='Ordre alphabétique') {
$requete3 = "select * from class_indivs_members order by nom, prenom";
}

else
{
$requete3 = "select * from class_indivs_members order by points_officiel desc, nom";
}

change tes valeurs, et passe par des valeurs de style
<select name="blabla">...
<option valeur="1">Classement alphab&eacute;tique</option>

et ensuite :

if($_POST['blabla']==='1')
{
//classement alphabétique
}

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Soul EX Messages postés 26 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 8 janvier 2006
8 janv. 2006 à 20:31
C'est fait...
Mais je ne comprend pas ou est le rapport avec le problème.
Car cela ne fonctionne toujours pas :'(
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 janv. 2006 à 20:56
lorsque t'envoies des données avec accents, espaces... elles sont en général encodées par le navigateur. je te conseille de mettre des valeurs simples (alphanumériques) pour tes champs. ça ne fonctionne toujours pas mais là je n'ai plus d'idée désolé :-(

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
9 janv. 2006 à 21:55
Je ne comprends pas ta condition switch.
switch(true) ???? ça veut dire quoi ça??

La condition switch sert à effectuer des opérations suivant les valeurs multiples d'un variable

switch ($bonbons)
{
case 1:
echo "1 bonbon, c'est bon";
break;
case 2:
...
}

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
10 janv. 2006 à 00:40
Pas forcément... switch (true) sert à savoir quelles conditions est déclarés VRAI.
Je peux faire l'opération inverse :
$x = 6;
switch (false) {
case ( $x < 4 ):
$var = 'yes';
break;
case ( $x > 4 ):
$var = 'no';
break;
}
echo $var; // affichera 'yes';

Par contre, avant d'aller plus loin, il faut raccourcir ton code !
"f($affichage==='Nombre de points (officiel)')
{
$requete3 = "select * from class_indivs_members order by points_officiel desc, nom";
}

elseif($affichage==='Nombre de points (à la dernière mise à jour)')
{
$requete3 = "select * from class_indivs_members order by points_maj desc, points_officiel desc";
}

elseif($affichage==='Progression') {
$requete3 = "select * from class_indivs_members order by progression desc, points_officiel desc";
}

elseif($affichage==='Ordre alphabétique') {
$requete3 = "select * from class_indivs_members order by nom, prenom";
}

else
{
$requete3 = "select * from class_indivs_members order by points_officiel desc, nom";
}"
>
$sql = 'SELECT * FROM class_indivs_members ORDER BY ';

switch ( $affichage ) {
case 'Nombre de points (officiel)':
$sql .= 'points_officiel desc, nom';
break;
case 'Nombre de points (à la dernière mise à jour)':
$sql .= 'points_maj desc, points_officiel desc';
break;
//etc...
}
$q = mysql_query($sql);

Par contre y'a un bug. Tu parles de $affichage... ca vient d'ou ? Variable d'URL ??
Variable de formulaire ? Je crois que c'est variable d'URL, donc $affichage devient $_GET['affichage'].
De plus, quand tu envoie ton formulaire, tu oublies de reparler de ta variable d'URL !!
<form action="www.tonsite.com/formulaire.php?affichage=ce_que_tu_veux_sans_espace">

De toutes facon, dégage les espaces pour commencer sur tes variables... c'est illisible !
0
Rejoignez-nous