Pb Php/sql, gestion d'une liste dynamique

Pb Php/sql, gestion d'une liste dynamique - PHP - Programmation

Marsh Posté le 25-07-2005 à 17:57:17    

Alors c'est vraiment dingue, je comprends pas. A tous les coups c'est une erreur de débutants (bon j'en suis un donc ça va).
 
Je génère une liste déroulante dynamique au sein d'un formulaire (le contenu de la liste est pris à partir d'une table). Ca, ok.
On clique dans la liste, la variable est réceptionné dans un autre fichier qui doit générer des résultats en fonction du premier clique.
 
La variable, passe, je le teste en faisant un print et pourtant j'essaie de générer une nouvelle requête avec cette variable et ça ne marche pas.
Ce qui est incompréhensible, c'est que si je remplace ma variable ($lepays) par un nom de pays contenu dans ma base (je mets "Allemagne", par exemple), tout fonctionne.
 
Quelqu'un pourrait-il m'aider ?! please !
 
Voici le code :
 
include("bd_connect.php" );
 
$thequery=' SELECT * FROM user where pays="'.$lepays.'"';   // la variable $lepays vient du formulaire précédent
 
$id = mysql_query($thequery, $variable);
 
while($row = mysql_fetch_row($id))
 
 {
 
 
 $champ_pseudo[] = ($row[0]);
 
 $champ_date[] = ($row[1]);
 
 $champ_pays[] = ($row[4]);
 
 $champ_ville[] = ($row[5]);
 
 $champ_langue[] = ($row[6]);
 
 $champ_commentaire[] = ($row[7]);
 
 $champ_mail[] = ($row[8]);
 
 
 }
 
 $compteur=count($champ_pays);
 
 for($i=$compteur-1;$i>-1;$i--)
 
 
Après je veux faire une boucle d'affichage des villes en fonction du pays séléctionné. Mais comme il ne lit pas la variable $lepays, il ne trouve pas de villes qui s'y rattachent, forcément...
 

Reply

Marsh Posté le 25-07-2005 à 17:57:17   

Reply

Marsh Posté le 25-07-2005 à 18:10:41    

Elle sort d'où ta variable $lepays exactement?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:29:48    

Elle vient d'un formulaire en liste déroulante.
 
Ce premier formulaire est généré à partir d'une table Sql. On choisit un pays, et le choix entraine l'affichage des villes de ce pays dans une nouvelle liste déroulante (et c'est là que ça marche pas : la liste est vide, comme s'il n'y avait aucune ville correspondant au pays).

Reply

Marsh Posté le 26-07-2005 à 11:31:04    

judicael a écrit :

Elle vient d'un formulaire en liste déroulante.
 
Ce premier formulaire est généré à partir d'une table Sql. On choisit un pays, et le choix entraine l'affichage des villes de ce pays dans une nouvelle liste déroulante (et c'est là que ça marche pas : la liste est vide, comme s'il n'y avait aucune ville correspondant au pays).


Non, mais dans ton script que tu as posté, là, elle est initialisée où?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:36:26    

Sorry je comprends pas tout à fait ta question.
 
Elle prend sa valeur du formulaire précédent. Si on choisit Allemagne dans la liste déroulante du premier form, $lepays sera Allemagne. Et comme je suis en method="post", $lepays est recueilli dans le 2e formulaire, toujours en tant que Allemagne.

Reply

Marsh Posté le 26-07-2005 à 11:37:55    

judicael a écrit :

Sorry je comprends pas tout à fait ta question.
 
Elle prend sa valeur du formulaire précédent. Si on choisit Allemagne dans la liste déroulante du premier form, $lepays sera Allemagne. Et comme je suis en method="post", $lepays est recueilli dans le 2e formulaire, toujours en tant que Allemagne.


 
Ta variable ne peut pas passer d'une page à une autre comme ça...;)


Message édité par skeye le 26-07-2005 à 11:38:10

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:38:45    

Son register_globals est probablement activé.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 26-07-2005 à 11:39:16    

là, ton $lepays est vide, ce qui explique ton problème.
Essaye de faire un  

Citation :


$lepays = $_POST['lepays'];


 
avant de créer ta requête, pour voir...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:39:29    

sielfried a écrit :

Son register_globals est probablement activé.


ou pas, ce qui expliquerait l'erreur...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:41:39    

skeye a écrit :

ou pas, ce qui expliquerait l'erreur...:o


 
Ben pour savoir faudrait voir son formulaire, mais sprobable.


Message édité par sielfried le 26-07-2005 à 11:41:54

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 26-07-2005 à 11:41:39   

Reply

Marsh Posté le 26-07-2005 à 11:46:16    

Si si, ca marche.
Parce que si je fais un print du $lepays sur la 2e page, il m'affiche bien "Allemagne", si j'ai sélectionné allemagne dans le premier form.

Reply

Marsh Posté le 26-07-2005 à 11:47:26    

$lepays = $_POST['lepays'];  
 
Je le mets avant quel formulaire ? le premier (celui avec les pays) ou le 2e (celui avec les villes, qui marche pas) ?

Reply

Marsh Posté le 26-07-2005 à 11:48:01    

judicael a écrit :

$lepays = $_POST['lepays'];  
 
Je le mets avant quel formulaire ? le premier (celui avec les pays) ou le 2e (celui avec les villes, qui marche pas) ?


celui des villes, juste avant la création de ta requête qui marche pas.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:49:33    

Le second, jsute avant le $thequery, ou encore direc dedans :
$thequery=' SELECT * FROM user where pays="'.$_POST['lepays'].'"';   // la variable $lepays vient du formulaire précédent


---------------
La curiosité est un vilain défaut car l'erreur et la frustration sont de croire qu'elle pourra être satisfaite !
Reply

Marsh Posté le 26-07-2005 à 11:50:26    

Mh, ça marche pas. SInon voici le code du premier formulaire :
 
<form name="pays_form" method="post" action="result_rech_pays.php">
<SELECT name="lepays" size="1">
<?
 
include("bd_connect.php" );
 
$thequery="SELECT * FROM `user` order by dateb";
 
$id = mysql_query($thequery, $variable);
 
 
while($row = mysql_fetch_row($id))
 
 {
 
 
 $champ_pseudo[] = ($row[0]);
 
 $champ_date[] = ($row[1]);
 
 $champ_pays[] = ($row[4]);
 
 $champ_ville[] = ($row[5]);
 
 $champ_langue[] = ($row[6]);
 
 $champ_commentaire[] = ($row[7]);
 
 $champ_mail[] = ($row[8]);
 
 
 }
 
 $compteur=count($champ_pays);
 
 
?>  
 
<OPTION Value="default_pays"> - Pays -
 
<?
 
 
 for($i=$compteur-1;$i>-1;$i--)
 
{  
 
?>
<OPTION Value=" <?print htmlentities("$champ_pays[$i]" ) ?>" > <?print htmlentities("$champ_pays[$i]" )?>
 
<?
 
}

Reply

Marsh Posté le 26-07-2005 à 11:51:55    

judicael a écrit :

Mh, ça marche pas. SInon voici le code du premier formulaire :
 
<form name="pays_form" method="post" action="result_rech_pays.php">


 
Et l'autre que tu nous asa mis au début c'est bien result_rech_pays.php ?


Message édité par skeye le 26-07-2005 à 11:52:13

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:52:15    

oui voilà

Reply

Marsh Posté le 26-07-2005 à 11:53:04    

[:urd]
Fais un print_r($_POST) au début de result_rech_pays.php


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:55:01    

<select> pas fermée, <form> pas fermé non plus, mysql_fetch_row pas bô... [:mlc]


Message édité par sielfried le 26-07-2005 à 11:55:36

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 26-07-2005 à 11:55:55    

sielfried a écrit :

<select> pas fermée, <form> pas fermé non plus, mysql_fetch_row pas bô... [:mlc]


Si tu pars par là ya même pas de <html>, hein...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:57:04    

skeye a écrit :

Si tu pars par là ya même pas de <html>, hein...[:joce]


 
Ouais j'ose espérer que c'est un fichier inclus.  [:spamafote]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 26-07-2005 à 11:57:28    

mais si, j'ai mis qu'un extrait. Tout est bien fermé. Et je le repete, la variable passe !
 
Si je fais print ("$lepays" ); sur resul_rech_pays.php, j'ai bien le pays séléctionné qui s'affiche.

Reply

Marsh Posté le 26-07-2005 à 11:57:44    

sielfried a écrit :

Ouais j'ose espérer que c'est un fichier inclus.  [:spamafote]


 
de toute manière c'est pas le problème...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 11:58:14    

Et si tu print $_POST['lepays'] ca affiche quoi ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 26-07-2005 à 11:58:34    

judicael a écrit :

mais si, j'ai mis qu'un extrait. Tout est bien fermé. Et je le repete, la variable passe !
 
Si je fais print ("$lepays" ); sur resul_rech_pays.php, j'ai bien le pays séléctionné qui s'affiche.


 
et si tu fais un echo $thequery; après l'avoir créée il y a quoi dedans?:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 12:01:23    

skeye a écrit :

de toute manière c'est pas le problème...:o


 
Ben si le <form> était pas fermé chui pas sûr que ça balance quoi que ce soit à la page cible. :o  
 
Mais il a filé qu'un extrait, alors. [:spamafote]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 26-07-2005 à 12:07:37    

Si je mets ça (sur le 2e) ?
 
$thequery=' SELECT * FROM user where pays="'.$lepays.'"';
echo ($thequery);
 
Rien ne s'affiche !

Reply

Marsh Posté le 26-07-2005 à 12:08:12    

Reply

Marsh Posté le 26-07-2005 à 12:09:25    

echo n'est pas une fonction.
 
echo $thequery;
 
pas  
 
echo ($thequery);


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 12:10:53    

Je suppose que la cote manquante en fin de ligne est une erreur de frappe sur le forum ???


---------------
La curiosité est un vilain défaut car l'erreur et la frustration sont de croire qu'elle pourra être satisfaite !
Reply

Marsh Posté le 26-07-2005 à 12:11:04    

ah oui au temps pour moi !
 
SELECT * FROM user where pays=" allemagne"  
 
c'est dingue !!

Reply

Marsh Posté le 26-07-2005 à 12:12:00    

Bon ben manque une majuscule...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 26-07-2005 à 12:12:21    

judicael a écrit :

ah oui au temps pour moi !
 
SELECT * FROM user where pays=" allemagne"  
 
c'est dingue !!


Dans une requête SQL une chaine de caractères est délimitée par ' ', pas " ", normalement.
Essaie de tester ta requête obtenue directement dans ton sgbd, pour voir...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 12:12:30    

C'est bizarre quand tu dis que ça marches en remplaçant la variable par un nom de ville !?!


---------------
La curiosité est un vilain défaut car l'erreur et la frustration sont de croire qu'elle pourra être satisfaite !
Reply

Marsh Posté le 26-07-2005 à 12:12:52    

Et puis y'a un espace qui traîne là.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 26-07-2005 à 12:14:53    

Oui je suis formel, si je remplace par le bon nom, ça marche...
 
Ah mais !! y a ce putain d'espace là, avant "allemagne" dans la requete, c'est ça qui fait tout foirer !!

Reply

Marsh Posté le 26-07-2005 à 12:15:11    

sielfried a écrit :

Et puis y'a un espace qui traîne là.


très juste.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-07-2005 à 12:15:26    

(grilled)  
 
- 'tail c'est mon dépucelage de grilled -

Reply

Marsh Posté le 26-07-2005 à 12:16:16    

$thequery = 'SELECT * FROM user where pays=\'' . $_POST['lepays'] . '\'';


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 26-07-2005 à 12:16:55    

Vi, dans ton code tu mets un espace entre la double-cote et le signe <?
 
<OPTION Value="<? print htmlentities( "$champ_pays[$i]" ); ?>"><? print htmlentities( "$champ_pays[$i]" ); ?>


Message édité par robbyone le 26-07-2005 à 12:18:14

---------------
La curiosité est un vilain défaut car l'erreur et la frustration sont de croire qu'elle pourra être satisfaite !
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed