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
Bonjour,
J'ai un probleme.
Mon j'ai 5 boutons radio dont trois sont suivis d'un champ texte a remplir par l'utilisateur si ils ont coché le bouton radio correspondant.

Le probleme c'est que lors de mes test, (j'ai rempli les trois champ de tesxte) je me suis rendu compte que meme si je cochai le bouton radio n°5, il affichai sur le php la value du n°5 mais aussi le champ texte du n°1. Comme si le champ texte du numero 1 etait forcé tout le temps.

Merci pour votre aide! =)

Voici mes codes html et php:

HTML:
<dd><INPUT type="radio" name="Q2_Choix" value="Aquitaine: "> Aquitaine, précisez :
<input type="text" name="Q2_aquitaine"><br></dd>
<dd><INPUT type="radio" name="Q2_Choix" value="Ile-de-France (hors Paris)"> Ile-de-France (hors Paris)<br></dd>
<dd><INPUT type="radio" name="Q2_Choix" value="autre région de France: "> autre région de France, précisez :
<input type="text" name="Q2_region"><br></dd>
<dd><INPUT type="radio" name="Q2_Choix" value="Paris"> Paris<br></dd>
<dd><INPUT type="radio" name="Q2_Choix" value="Etranger: "> Etranger, précisez :
<input type="text" name="Q2_etranger"></dd><br></dd>


PHP:
echo "Reponses a la question n°2:<br>" ;

if (isset($_POST['Q2_Choix']) && ($_POST['Q2_aquitaine']) )
{

$Q2_Choix = $_POST['Q2_Choix'];
$Q2_aquitaine = $_POST['Q2_aquitaine'];
$Q2_Choix11 = "$Q2_Choix $Q2_aquitaine";

echo "$Q2_Choix11<br>";
}
else
{

if (isset($_POST['Q2_Choix']) && ($_POST['Q2_region']) )
{

$Q2_Choix = $_POST['Q2_Choix'];
$Q2_region = $_POST['Q2_region'];
$Q2_Choix33 = "$Q2_Choix $Q2_region";

echo "$Q2_Choix33<br>";
}
else
{

if (isset($_POST['Q2_Choix']) && ($_POST['Q2_etranger']) )
{

$Q2_Choix = $_POST['Q2_Choix'];
$Q2_etranger = $_POST['Q2_etranger'];
$Q2_Choix55 = "$Q2_Choix $Q2_etranger";

echo "$Q2_Choix55<br><br><br>";
}
else
{
if (isset($_POST['Q2_Choix']))
{
$Q2_Choix = $_POST['Q2_Choix'];
echo "$Q2_Choix<br>";

}

}
}
}
A voir également:

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
Bonsoir,

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.
0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
5 févr. 2009 à 18:04
Je commence par te remercier avant de voir si ça fonctionne car je vais tester ça chez moi (c'est l'heure de rentrer a la maison ;p ) et chez moi je n'ai pas le net.

Donc merci beaucoup et si ça fonctionne je vous le ferai savoir demain =)
0
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
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>";
0
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
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)
0
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
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 ...

0
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
Relis son message ;)
0
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
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.
0

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
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 ;)
0
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
Effectivement il y a des choses qui ne vont pas dans tes tests, example:
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.
0
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
Merci beaucoup, ta solution est la bonne.

Tout fonctionne, je remet le post en "resolus"

Merci encore, a bientot,
Benjamin
0