loulou Posté 16 Octobre 2004 Posté 16 Octobre 2004 Bonjour, J'essaie de passer la valeur d'une variable d'un case à l'autre dans un switch case. Je me demandé si lefait de passer cette variable en globale pourrait m'aider. Je dois préciser que je travaille avec easyphp 1.7 et que j'ai beaucoup de problèmes avec les "undefined variable..." Merci par avance pour votre aide
petit-ourson Posté 16 Octobre 2004 Posté 16 Octobre 2004 Il faudrait en savoir un peu plus sur le script.
loulou Posté 16 Octobre 2004 Auteur Posté 16 Octobre 2004 Rebonjour, En fait, je crois que je ne suis pas logique dans ma démarche : Je m'explique je veux permettre à un utilisateur de consulter une fiche fournisseur et éventuellement de la mofifier. Pour cela je procède ainsi : 1/j'affiche dans une liste déroulante la liste des fournisseurs (ça marche) 2/lorsque l'utilisateur a choisi un fournisseur dans la liste, en validant (bouton submit), j'affiche la fiche du fournisseur dans un formulaire(ça marche) 3/quand l'utilisateur a modifié le contenu des champs du formulaire et qu'il appuie sur le bouton "submit", je veux updater la table fournisseur... et là ça ne marche pas. voici mon code : //pour afficher la liste des fournisseurs case "voirtous": $connexion=mysql_connect("$host","$user"); mysql_select_db ($bdd,$connexion); $query=@mysql_query("select * from supplier"); //si "voirtous" est choisi //je sélectionne tous ds la table if ($query) { //jaffiche ds 1 liste déroulante les fournisseurs echo "<p><form method=\"post\" supplier.php?action=voirtous>"; echo "<select name=\"choix\">"; $choix=""; while ($array=@mysql_fetch_array($query)) { if ($choix == ($array["idSuplier"])) {echo "<option value=\"".$array["idSuplier"]."\" selected>".$array["idSuplier"]."</option>\n";} else {echo "<option value=\"".$array["idSuplier"]."\">".$array["idSuplier"]."</option>\n";} } //fin du while echo "<input name=\"valider\" type=\"submit\" value=\"valider\">"; echo "</select></form></p>"; }//fin du if $query //requete pour récupérer les elements du formulaire qu'il faudra afficher if (isset($_POST['choix'])){ $choix=$_POST['choix']; $recupchoix=@mysql_query("select * from supplier where idSuplier=$choix"); $recupChoixTableau=@mysql_fetch_array($recupchoix); //affichage des éléments du fournisseur choisi dans un formulaire echo "<p><form name=\"liste\" method=\"post\" action=\"supplier.php?action=voirtous\">"; echo "<table border=\"1\" bordercolor=\"red\">"; echo "<tr><td><!-- premiere ligne du tableau -->"; echo "<table border=\"1\" bordercolor=\"black\">"; echo "<tr><td>Général</td><td></td></tr>"; echo "<tr><td>Raison sociale :</td><td><input type=\"text\" name=".$recupChoixTableau["idSuplier"]." value=".$recupChoixTableau["raisonSociale"]." size=\"20\"></td></tr></table>"; echo "</td></tr></table>"; echo "<select name=\"fini\" size=\"1\">"; echo "<option value=\"non\" >non</option>"; echo "<option value=\"oui\">oui</option>"; echo "</select>"; echo "<input name=\"modifier\" type=\"submit\" value=\"modifier\">"; echo "</form></p></body></html>"; if (isset($_post['fini'])) {$fini=($_post['fini']); if ($fini=="oui") print "la je dois executer la requete d'update";} } break; default : print "ok";
Anonymus Posté 17 Octobre 2004 Posté 17 Octobre 2004 Ta variable 'action' est passée en $_GET et non en $_POST. Essaies de la récupérer avec $_GET. echo " <form name=\"liste\" method=\"post\" action=\"supplier.php?action=voirtous\">"; Tu as aussi la possibilité de modifier la valeur de ton bouton 'submit', et 'jouer' avec lui pour savoir quelle partie du programme envoie le formulaire. Exemples : echo "<input name=\"enregistrer\" type=\"submit\" value=\"valider\">";echo "<input name=\"modifier\" type=\"submit\" value=\"valider\">";echo "<input name=\"effacer\" type=\"submit\" value=\"valider\">"; Pour while ($array=@mysql_fetch_array($query)) { if ($choix == ($array["idSuplier"])) {echo "<option value=\"".$array["idSuplier"]."\" selected>".$array["idSuplier"]."</option>\n";}else {echo "<option value=\"".$array["idSuplier"]."\">".$array["idSuplier"]."</option>\n";}} //fin du while Tu peux ecrire comme ceci, histoire de prendre moins de place : while ($array=@mysql_fetch_array($query)) { echo "<option value=\"".$array["idSuplier"]."\" ".(($choix == ($array["idSuplier"])?" selected ":"").">".$array["idSuplier"]."</option>\n";} //fin du while Lorsque tu veux récupérer une valeur contenue dans le tableau $_POST, tu as aussi intéret à travailler directement avec la variable $_POST que de recréer une autre variable : if (isset($_POST['choix'])){$choix=$_POST['choix'];$recupchoix=@mysql_query("select * from supplier where idSuplier=$choix"); peut devenir : if (isset($_POST['choix'])){$recupchoix=@mysql_query("select * from supplier where idSuplier='".$_POST['choix']."'"); Idem pour ici : if (isset($_post['fini'])){if ($_POST['fini']=="oui")print "la je dois executer la requete d'update";} Dans cette derniière instruction, tu devrais d'ailleurs compter le nombre d'accolades ouvertes. On peut marquer ca : if ($fini=="oui")print "la je dois executer la requete d'update";} voire même ceci : if (isset($_post['fini'])) if ($_POST['fini']=="oui") print "la je dois executer la requete d'update"; à condition de ne pas se tromper dans le nombre d'accolades, autrement dit, de le faire sciemment. Au sujet du $_GET, dis nous si ca marche. Anonymus.
loulou Posté 17 Octobre 2004 Auteur Posté 17 Octobre 2004 Bonjour, Merci pour ta réponse, En fait j'ai essayé tout ce que tu m'as dit, mais rien y fait, alors pour voir si je suis complétement débile j'ai écrit un petit bout de code... qui ne marche pas ! est ce que je suis si illogique que çà ? voici le fichier modifier.php : <?php echo "<form action=\"modifier.php?action=afficher\" method=\"get\">"; echo "<p>suplier à modifier<input name=\"id\" type=\"text\"></p>"; echo "<input name=\"action\" type=\"submit\" value=\"modifier\">"; echo "</form>"; if ( isset($_GET["action"]) ){//if1 $id=$_GET['id']; switch ($_GET["action"]) { case "afficher": print $id; break; } :!: }//fin du if1 Normalement, en saisissant quelque chose dans mon input id, en validant, je dois réafficher ce que j'ai saisi ? non ?, et bien non... svp, par pitié aidez moi, je vais péter un cable Merci
petit-ourson Posté 17 Octobre 2004 Posté 17 Octobre 2004 C'est normal que dans ton exemple la valeur de ton bouton est "modifier" ?
loulou Posté 17 Octobre 2004 Auteur Posté 17 Octobre 2004 euh...oui, pourquoi ? cela te semble anormal ?
loulou Posté 17 Octobre 2004 Auteur Posté 17 Octobre 2004 Autant pour moi, je crois que je dois arreter de coder, car plus je cherche, plus je m'enfonce... j'ai changé, biensur le case qui est désormais "case "modifier" : et évidement ça marche... honte à moi et merci à toi
Sarc Posté 17 Octobre 2004 Posté 17 Octobre 2004 Oh tu n'es pas obligé d'arreter de coder pour si peu, j'en connais (dont je citerais pas le nom n'est ce pas Sarc) qui ont deja fait pire... Le pire je pense est de chercher dans son programme de 200 lignes la variable qui change de nom d'une ligne a l'autre... c'est rageant !
loulou Posté 18 Octobre 2004 Auteur Posté 18 Octobre 2004 Bonsoir et merci à tous, Mon problème est résolu sur ce sujet. ERn fait au départ f'avais un problème de html (hum), ne m'en ayant pas aperçue, j'ai retourné le code dans tous les sens, et je vous ai appellé au secours... ouf je me suis sentie moins seule, je crois donc que je vais continuer à "pseudo"coder, merci pour votre intêret Karine
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant