PHP probleme
Résolu/Fermé
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
-
5 févr. 2009 à 17:22
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 - 6 févr. 2009 à 11:36
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 - 6 févr. 2009 à 11:36
5 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
5 févr. 2009 à 18:00
5 févr. 2009 à 18:00
Bonsoir,
Pour ce qui est d'afficher toujours le champ input 1 c'est normal.
Regarde bien ton premier test :
$_POST['Q2_Choix'] est normalement toujours envoyé lors de la soumission du formulaire puisque tu dois sélectionner obligatoirement l'un des radio box.
$_POST['Q2_aquitaine'] est un champ, rempli ou non il existe, or le test que tu fais porte sur son existence.
Voilà pourquoi ton premier test est toujours valide, et donc pourquoi tu obtiens toujours le même résultat.
Les corrections à apporter sont donc les suivantes:
- pour tester si la radio box cochée correspond bien à celle dont tu veux tester la valeur du texte rempli:
isset($_POST['Q2_aquitaine']) && ($_POST['Q2_aquitaine'] == "Aquitaine: ")
- pour tester si le champ texte associé à ta radio box est vide ou non :
isset($_POST['Q2_aquitaine']) && !empty($_POST['Q2_aquitaine'])
Ton test devient donc quelque chose comme ça :
Code non testé mais l'idée est là. A appliquer aux autres tests également.
Pour ce qui est d'afficher toujours le champ input 1 c'est normal.
Regarde bien ton premier test :
if (isset($_POST['Q2_Choix']) && ($_POST['Q2_aquitaine']) ) {
$_POST['Q2_Choix'] est normalement toujours envoyé lors de la soumission du formulaire puisque tu dois sélectionner obligatoirement l'un des radio box.
$_POST['Q2_aquitaine'] est un champ, rempli ou non il existe, or le test que tu fais porte sur son existence.
Voilà pourquoi ton premier test est toujours valide, et donc pourquoi tu obtiens toujours le même résultat.
Les corrections à apporter sont donc les suivantes:
- pour tester si la radio box cochée correspond bien à celle dont tu veux tester la valeur du texte rempli:
isset($_POST['Q2_aquitaine']) && ($_POST['Q2_aquitaine'] == "Aquitaine: ")
- pour tester si le champ texte associé à ta radio box est vide ou non :
isset($_POST['Q2_aquitaine']) && !empty($_POST['Q2_aquitaine'])
Ton test devient donc quelque chose comme ça :
if ( isset($_POST['Q2_aquitaine']) && ($_POST['Q2_aquitaine'] == "Aquitaine: ") && isset($_POST['Q2_aquitaine']) && !empty($_POST['Q2_aquitaine']) ) {
Code non testé mais l'idée est là. A appliquer aux autres tests également.
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
6 févr. 2009 à 09:56
6 févr. 2009 à 09:56
Hummm, je m'y suis mis hier soir mais ça n'a pas fonctionner: Avec ton code, je n'avai ni la valeur de la text box affichée ni la valeur de la radio.
J'ai aussi essayer en modifiant ton code comme ceci:
if ( isset($_POST['Q2_aquitaine']) && ($_POST['Q2_Choix'] == "Aquitaine: ")
&& isset($_POST['Q2_aquitaine']) && !empty($_POST['Q2_aquitaine']) )
{
Avec cette modif j'avais bien la valeur de la textbox correspondant a la radio bouton mais j'avai une repetition de l'affichage de la valeur de la radio bouton.
resultat obtenu:
Reponses a la question n°2:
Etranger: cinq
Etranger:
C'est a cause de la derniere partie de mon code alors j'ai modifier cette derniere partie et ça fonctionne nikel!
Je tiens a vraiment te remercier car tu m'a vraiment mis sur les rails pour trouver une solution. Merci beaucoup a toi!
Le nouveau code pour ceux que ça peut interessr: (le HTML n'a pas changé)
// REPONSE QUESTION 2
echo "Reponses a la question n°2:<br>" ;
if ( isset($_POST['Q2_aquitaine']) && ($_POST['Q2_Choix'] == "Aquitaine: ")
&& isset($_POST['Q2_aquitaine']) && !empty($_POST['Q2_aquitaine']) )
{
$Q2_Choix = $_POST['Q2_Choix'];
$Q2_aquitaine = $_POST['Q2_aquitaine'];
$Q2_Choix11 = "$Q2_Choix $Q2_aquitaine";
echo "$Q2_Choix11<br>";
}
if ( isset($_POST['Q2_region']) && ($_POST['Q2_Choix'] == "autre région de France: ")
&& isset($_POST['Q2_region']) && !empty($_POST['Q2_region']) )
{
$Q2_Choix = $_POST['Q2_Choix'];
$Q2_region = $_POST['Q2_region'];
$Q2_Choix33 = "$Q2_Choix $Q2_region";
echo "$Q2_Choix33<br>";
}
if ( isset($_POST['Q2_etranger']) && ($_POST['Q2_Choix'] == "Etranger: ")
&& isset($_POST['Q2_etranger']) && !empty($_POST['Q2_etranger']) )
{
$Q2_Choix = $_POST['Q2_Choix'];
$Q2_etranger = $_POST['Q2_etranger'];
$Q2_Choix55 = "$Q2_Choix $Q2_etranger";
echo "$Q2_Choix55<br>";
}
if ( isset($_POST['Q2_Choix']) && ($_POST['Q2_Choix'] == "Ile-de-France (hors Paris)"))
{
$Q2_Choix = $_POST['Q2_Choix'];
echo "$Q2_Choix<br>";
}
if ( isset($_POST['Q2_Choix']) && ($_POST['Q2_Choix'] == "Paris"))
{
$Q2_Choix = $_POST['Q2_Choix'];
echo "$Q2_Choix<br>";
}
echo "<br><br>";
J'ai aussi essayer en modifiant ton code comme ceci:
if ( isset($_POST['Q2_aquitaine']) && ($_POST['Q2_Choix'] == "Aquitaine: ")
&& isset($_POST['Q2_aquitaine']) && !empty($_POST['Q2_aquitaine']) )
{
Avec cette modif j'avais bien la valeur de la textbox correspondant a la radio bouton mais j'avai une repetition de l'affichage de la valeur de la radio bouton.
resultat obtenu:
Reponses a la question n°2:
Etranger: cinq
Etranger:
C'est a cause de la derniere partie de mon code alors j'ai modifier cette derniere partie et ça fonctionne nikel!
Je tiens a vraiment te remercier car tu m'a vraiment mis sur les rails pour trouver une solution. Merci beaucoup a toi!
Le nouveau code pour ceux que ça peut interessr: (le HTML n'a pas changé)
// REPONSE QUESTION 2
echo "Reponses a la question n°2:<br>" ;
if ( isset($_POST['Q2_aquitaine']) && ($_POST['Q2_Choix'] == "Aquitaine: ")
&& isset($_POST['Q2_aquitaine']) && !empty($_POST['Q2_aquitaine']) )
{
$Q2_Choix = $_POST['Q2_Choix'];
$Q2_aquitaine = $_POST['Q2_aquitaine'];
$Q2_Choix11 = "$Q2_Choix $Q2_aquitaine";
echo "$Q2_Choix11<br>";
}
if ( isset($_POST['Q2_region']) && ($_POST['Q2_Choix'] == "autre région de France: ")
&& isset($_POST['Q2_region']) && !empty($_POST['Q2_region']) )
{
$Q2_Choix = $_POST['Q2_Choix'];
$Q2_region = $_POST['Q2_region'];
$Q2_Choix33 = "$Q2_Choix $Q2_region";
echo "$Q2_Choix33<br>";
}
if ( isset($_POST['Q2_etranger']) && ($_POST['Q2_Choix'] == "Etranger: ")
&& isset($_POST['Q2_etranger']) && !empty($_POST['Q2_etranger']) )
{
$Q2_Choix = $_POST['Q2_Choix'];
$Q2_etranger = $_POST['Q2_etranger'];
$Q2_Choix55 = "$Q2_Choix $Q2_etranger";
echo "$Q2_Choix55<br>";
}
if ( isset($_POST['Q2_Choix']) && ($_POST['Q2_Choix'] == "Ile-de-France (hors Paris)"))
{
$Q2_Choix = $_POST['Q2_Choix'];
echo "$Q2_Choix<br>";
}
if ( isset($_POST['Q2_Choix']) && ($_POST['Q2_Choix'] == "Paris"))
{
$Q2_Choix = $_POST['Q2_Choix'];
echo "$Q2_Choix<br>";
}
echo "<br><br>";
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
6 févr. 2009 à 10:24
6 févr. 2009 à 10:24
Ben nickel :)
Si ton problème est résolu, pense bien à passer la discussion en "résolu" (petit bouton à cocher en haut de la discussion)
Si ton problème est résolu, pense bien à passer la discussion en "résolu" (petit bouton à cocher en haut de la discussion)
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
6 févr. 2009 à 10:22
6 févr. 2009 à 10:22
Ca à l'aire bon ton truc ..; Il y a une érreure ?? c'est quoi l'éreure?? a kel ligne ?? montre nou la ligne d'éreure ...
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
6 févr. 2009 à 10:24
6 févr. 2009 à 10:24
Relis son message ;)
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
6 févr. 2009 à 10:38
6 févr. 2009 à 10:38
Oui, mon precedent post indique que le prob est resolu.
Merci a vous d'etre passé pour tenter d'aider =)
J'ai mis le post en "resolu"
A bientot.
Merci a vous d'etre passé pour tenter d'aider =)
J'ai mis le post en "resolu"
A bientot.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
6 févr. 2009 à 11:13
6 févr. 2009 à 11:13
En fait ça ne fonctionne pas si bien que ça...
J'ai un petit probleme, si 'utilisateur ne selectionne aucun bouton radio, au lieu de passer outre et aller a la prochaine question, ça me met 3 erreures:
Notice: Undefined index: Q2_Choix in D:\Programmes\EasyPHP\EasyPHP 3.0\www\Maison Aquitaine\MaisonAquitaine2.php on line 62
Notice: Undefined index: Q2_Choix in D:\Programmes\EasyPHP\EasyPHP 3.0\www\Maison Aquitaine\MaisonAquitaine2.php on line 74
Notice: Undefined index: Q2_Choix in D:\Programmes\EasyPHP\EasyPHP 3.0\www\Maison Aquitaine\MaisonAquitaine2.php on line 86
je sais qu'il y a peu de chance qu'un utilisateur ne reponde pas mais vous le savez, ça arrivera forcement! (saleté d'utilisateur :p )
Donc si vous conaissez un moyen de resoudre se probleme (sans mettre un radio par default car j'y ai pense mais ça fausse le questionaire) merci de me le faire savoir ;)
J'ai un petit probleme, si 'utilisateur ne selectionne aucun bouton radio, au lieu de passer outre et aller a la prochaine question, ça me met 3 erreures:
Notice: Undefined index: Q2_Choix in D:\Programmes\EasyPHP\EasyPHP 3.0\www\Maison Aquitaine\MaisonAquitaine2.php on line 62
Notice: Undefined index: Q2_Choix in D:\Programmes\EasyPHP\EasyPHP 3.0\www\Maison Aquitaine\MaisonAquitaine2.php on line 74
Notice: Undefined index: Q2_Choix in D:\Programmes\EasyPHP\EasyPHP 3.0\www\Maison Aquitaine\MaisonAquitaine2.php on line 86
je sais qu'il y a peu de chance qu'un utilisateur ne reponde pas mais vous le savez, ça arrivera forcement! (saleté d'utilisateur :p )
Donc si vous conaissez un moyen de resoudre se probleme (sans mettre un radio par default car j'y ai pense mais ça fausse le questionaire) merci de me le faire savoir ;)
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
6 févr. 2009 à 11:27
6 févr. 2009 à 11:27
Effectivement il y a des choses qui ne vont pas dans tes tests, example:
Quelle est l'utilité de faire deux fois le même test ? Aucune.
En fait la première fois ce n'est pas Q2_aquitaine qu'il faut tester mais Q2_Choix. Il faut s'assurer qu'il soit bien transmis avant d'utiliser / comparer sa valeur, sinon s'il n'est pas transmis comme c'est le cas lorsqu'un utilisateur ne sélectionne rien, tu obtiens les erreurs que tu as donné précédemment.
Dans tes tests, si tu remplace à chaque fois le premier test par le bon (selon ce que je viens de dire), tu ne devrais plus avoir ton erreur lorsque rien est sélectionner.
Autre petite remarque : pourquoi as-tu supprimer les enchainements de IF / ELSE. Remets les entre tes différents tests, ça évite de passer dans tous les tests si le premier est validé par exemple, et donc de prendre moins de temps, même si à ce niveau là le gain ne sera pas visible.
if ( isset($_POST['Q2_aquitaine']) && ($_POST['Q2_Choix'] == "Aquitaine: ") && isset($_POST['Q2_aquitaine']) && !empty($_POST['Q2_aquitaine']) ) { ... }
Quelle est l'utilité de faire deux fois le même test ? Aucune.
En fait la première fois ce n'est pas Q2_aquitaine qu'il faut tester mais Q2_Choix. Il faut s'assurer qu'il soit bien transmis avant d'utiliser / comparer sa valeur, sinon s'il n'est pas transmis comme c'est le cas lorsqu'un utilisateur ne sélectionne rien, tu obtiens les erreurs que tu as donné précédemment.
Dans tes tests, si tu remplace à chaque fois le premier test par le bon (selon ce que je viens de dire), tu ne devrais plus avoir ton erreur lorsque rien est sélectionner.
if ( isset($_POST['Q2_Choix']) && ($_POST['Q2_Choix'] == "Aquitaine: ") && isset($_POST['Q2_aquitaine']) && !empty($_POST['Q2_aquitaine']) ) { ... }
Autre petite remarque : pourquoi as-tu supprimer les enchainements de IF / ELSE. Remets les entre tes différents tests, ça évite de passer dans tous les tests si le premier est validé par exemple, et donc de prendre moins de temps, même si à ce niveau là le gain ne sera pas visible.
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
>
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
6 févr. 2009 à 11:36
6 févr. 2009 à 11:36
Merci beaucoup, ta solution est la bonne.
Tout fonctionne, je remet le post en "resolus"
Merci encore, a bientot,
Benjamin
Tout fonctionne, je remet le post en "resolus"
Merci encore, a bientot,
Benjamin
5 févr. 2009 à 18:04
Donc merci beaucoup et si ça fonctionne je vous le ferai savoir demain =)