Aller au contenu

variables globales


Sujets conseillés

Posté

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 :?:

Posté

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";

Posté

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.

Posté

:nono: 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

Posté

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 :flower:

Posté

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... :nono: c'est rageant !

Posté

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 :wub:

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...