un switch qui n'avance pas...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : un switch qui n'avance pas...

par boobz » 26 févr. 2008, 16:27

Bon alors voilà :

Code : Tout sélectionner

<?php if (isset($_POST["use"])) { $use = $_POST["use"]; // echo "use vaut $use"; switch ($use) { case "pro": echo "<table class=\"normal-table\" border=\"1\">"; echo " <tr>"; echo " For professional use"; echo " <td class=\"formulaire\">Accounting Data</td>"; echo " <td class=\"formulaire\">"; echo " <table>"; echo " <tr>"; echo " <td class=\"formulaire\">"; ?> <?php if ($PARAM[action_form]=="inserer" && $PARAM[cost_center]=="") {echo "<div class='erreur'> Cost Center: (*):</div>";} else {echo "Cost Center: (*):";}?> <?php echo " </td>"; echo " <td class=\"formulaire\">"; ?> <input type="text" name="cost_center" value="<?php if (isset($PARAM[cost_center])) {echo $PARAM[cost_center];} elseif (!isset($PARAM[cost_center])) {echo $pers['COST_CENTER'];}?>"/> <?php echo " </td>"; echo " </tr>"; echo " <tr>"; echo " <td class=\"formulaire\">"; ?> <?php if ($PARAM[action_form]=="inserer" && $PARAM[code_objectif]=="") {echo "<div class='erreur'> Code Objectif: (*):</div>";} else {echo "Code Objectif: (*):";}?> <?php echo "</td>"; echo " <td class=\"formulaire\">"; ?> <input type="text" name="code_objectif" value="<?php if (isset($PARAM[code_objectif])) {echo $PARAM[code_objectif];} elseif (!isset($PARAM[code_objectif])){echo $pers['CODE_OBJECTIF'];}?>" /> <?php echo " </td>"; echo " </tr>"; echo " </table>"; echo " </td>"; echo " </tr>"; echo "</table>"; break; case "private": // echo "use vaut dans le switch " . $use; echo "<table class=\"normal-table\" border=\"1\">"; echo " <tr>"; echo " For private use"; echo " <td class=\"formulaire\">Deduction from salary</td>"; echo " <td class=\"formulaire\">"; echo " <table> "; echo " <tr>"; echo " <td class=\"formulaire\">"; ?> <?php if ($PARAM[action_form]=="inserer" && $PARAM[hr_number]==""){echo "<div class='erreur'> HR File Nr (*):</div>";} else {echo "HR File Nr: (*):";}?> <?php echo " </td>"; echo " <td class=\"formulaire\">"; ?> <input type="text" name="hr_number" value="<?php if (isset($PARAM[hr_number])) {echo $PARAM[hr_number];} elseif (!isset($PARAM[hr_number])) {echo $pers['HR_NUMBER'];}?>" /> <?php echo " </td>"; echo " </tr>"; echo " </table>"; echo " </td>"; echo " </tr>"; echo "</table>"; break; } } else { echo "<table class=\"normal-table\" border=\"1\">"; echo "<tr>"; echo "<td class=\"formulaire\">Please choose your use</td>"; echo "<td class=\"formulaire\">"; echo "<form method=\"POST\">"; echo "<p>"; echo "<input type=\"radio\" name=\"use\" value=\"pro\"> Professional<br>"; echo "<input type=\"radio\" name=\"use\" value=\"private\"> Private<br>"; echo "<input class=\"bouton\" type=\"submit\" value=\"Choose\">"; echo "</p>"; echo "</form>"; echo "</td>"; echo "</tr>"; echo "</table>"; } ?>

Donc cette partie fait partie d'un formulaire plus général que l'on doit valider une fois ces champs-là remplis.

Merci de votre aide

par h0_noMan » 26 févr. 2008, 15:42

Passes nous aussi le code HTML (le form complet si pas trop long)

par d0m » 26 févr. 2008, 15:35

met donc tout le code, on y verras peut-être plus clair

Re: un switch qui n'avance pas...

par boobz » 26 févr. 2008, 14:35

PS : je ne peux pas répondre à dom0 ni envoyer une nouvelle réponse, le système me dit "vous ne pouvez pas répondre à vos propres messages" .... pige pas
Tu peux par contre éditer ton message et rajouter.

Mais maintenant avec ma réponse entre tu pourras.
Effectivement, mais là n'est pas mon problème pour le moment... pas d'autre idée sinon ?

Re: un switch qui n'avance pas...

par d0m » 26 févr. 2008, 14:30

PS : je ne peux pas répondre à dom0 ni envoyer une nouvelle réponse, le système me dit "vous ne pouvez pas répondre à vos propres messages" .... pige pas
Tu peux par contre éditer ton message et rajouter.

Mais maintenant avec ma réponse entre tu pourras.

Re: un switch qui n'avance pas...

par boobz » 26 févr. 2008, 12:46

Salut Calimero et merci pour ta réponse (et à ... mince je n'ai plus le nom ... aussi), je me sens moins seul maintenant ;.)
Bonjour,

Le code que tu nous présentes ne semble pas comporter de défaut. A ta place je concentrerais mon attention à deux endroits :

- Le bloc que tu appelles "code private" (mets un echo 'test'; die(); dedans pour vérifier qu'il est bien éxécuté)
En fait le code est bien exécuté mais quand je remplis le champ texte et qu'ensuite je submite le formulaire en entier, je reviens au début avec mon formulaire bouton radio. Je ne sais pas si je suis clair...
- Le code de ton formulaire, et plus précisément la valeur du champ nommé "use" (une petite typo, comme "prvate" au lieu de "private", ou autre erreur de nommage, peut expliquer que rien ne fonctionne à la réception.)
J'ai vérifié et re-vérifié et il ne me semble pas avoir fait de typo..
Dans tous les cas, tu peux facilement tester le bon fonctionnement du code à grands coups de echo/die partout ;-)
J'en ai mis mais cela ne m'a pas aidé pour le moment.

Est-ce que je peux mettre tout le code en question ici ou c'est trop ?



PS : je ne peux pas répondre à dom0 ni envoyer une nouvelle réponse, le système me dit "vous ne pouvez pas répondre à vos propres messages" .... pige pas

par d0m » 26 févr. 2008, 11:58

Salut,

si code private ne s'exécute pas c'est que :
$use != 'private'
donc $_POST["use"] != 'private'

affiche $_POST["use"] en début de page pour vérifier le contenu

Re: un switch qui n'avance pas...

par Calimero » 26 févr. 2008, 11:57

Bonjour,

Le code que tu nous présentes ne semble pas comporter de défaut. A ta place je concentrerais mon attention à deux endroits :

- Le bloc que tu appelles "code private" (mets un echo 'test'; die(); dedans pour vérifier qu'il est bien éxécuté)
- Le code de ton formulaire, et plus précisément la valeur du champ nommé "use" (une petite typo, comme "prvate" au lieu de "private", ou autre erreur de nommage, peut expliquer que rien ne fonctionne à la réception.)

Dans tous les cas, tu peux facilement tester le bon fonctionnement du code à grands coups de echo/die partout ;-)

un switch qui n'avance pas...

par boobz » 26 févr. 2008, 11:42

Bonjour à tous,

Je ne débute pas en PHP mais je ne suis pas non plus un foudre de guerre d'où mon post ici.

Voici mon problème. Il s'agit d'un formulaire avec plusieurs champs. Un des champs dépend d'une réponse précédente demandée dans un formulaire avec boutons radios. Il est demandé si l'utilisateur fait une utilisation pro ou privée. Selon la réponse un ou deux champs texte est affiché. Ensuite on submit le tout et on passe à une nouvelle page qui résume les informations rentrées avant de les envoyer via courriel à plusieurs destinataires. Voici le code écrit :

Code : Tout sélectionner

if (isset ($_POST["use"])) { $use = $_POST["use"]; switch ($use) { case "pro": code pro break; case "private": code private break; } } else { boutons radios submit }
Le problème apparaît quand je choisis l'option "private" ; la page se recharge comme si rien n'avait été choisi alors que quand je choisis "pro" le code fait ce que je veux (à savoir afficher une boîte de texte où l'on peut entrer de l'info). Je ne comprends pas pourquoi l'un marche et l'autre pas.

si quelqu'un a une idée, ce serait hyper sympa de me la faire partager.

Excellente journée