Erreur de formulaire PHP

Signaler
Messages postés
26
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
8 janvier 2006
-
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
-
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

Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
salut



"javascript:document.details.submit()"



il manque peut être un ; à la fn de cette ligne
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
26
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
8 janvier 2006

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
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
26
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
8 janvier 2006

$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....
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
26
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
8 janvier 2006

???

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;
}
}
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
26
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
8 janvier 2006

C'est fait...
Mais je ne comprend pas ou est le rapport avec le problème.
Car cela ne fonctionne toujours pas :'(
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
15154
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 octobre 2021
99
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...
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
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 !