Pb Php/sql, gestion d'une liste dynamique - PHP - Programmation
Marsh Posté le 25-07-2005 à 18:10:41
Elle sort d'où ta variable $lepays exactement?
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).
Marsh Posté le 26-07-2005 à 11:31:04
judicael a écrit : Elle vient d'un formulaire en liste déroulante. |
Non, mais dans ton script que tu as posté, là, elle est initialisée où?
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.
Marsh Posté le 26-07-2005 à 11:37:55
judicael a écrit : Sorry je comprends pas tout à fait ta question. |
Ta variable ne peut pas passer d'une page à une autre comme ça...
Marsh Posté le 26-07-2005 à 11:38:45
Son register_globals est probablement activé.
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 : |
avant de créer ta requête, pour voir...
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...
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.
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.
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) ?
Marsh Posté le 26-07-2005 à 11:48:01
judicael a écrit : $lepays = $_POST['lepays']; |
celui des villes, juste avant la création de ta requête qui marche pas.
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
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]" )?>
<?
}
Marsh Posté le 26-07-2005 à 11:51:55
judicael a écrit : Mh, ça marche pas. SInon voici le code du premier formulaire : |
Et l'autre que tu nous asa mis au début c'est bien result_rech_pays.php ?
Marsh Posté le 26-07-2005 à 11:53:04
Fais un print_r($_POST) au début de result_rech_pays.php
Marsh Posté le 26-07-2005 à 11:55:01
<select> pas fermée, <form> pas fermé non plus, mysql_fetch_row pas bô...
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ô... |
Si tu pars par là ya même pas de <html>, hein...
Marsh Posté le 26-07-2005 à 11:57:04
skeye a écrit : Si tu pars par là ya même pas de <html>, hein... |
Ouais j'ose espérer que c'est un fichier inclus.
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.
Marsh Posté le 26-07-2005 à 11:57:44
sielfried a écrit : Ouais j'ose espérer que c'est un fichier inclus. |
de toute manière c'est pas le problème...
Marsh Posté le 26-07-2005 à 11:58:14
Et si tu print $_POST['lepays'] ca affiche quoi ?
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 ! |
et si tu fais un echo $thequery; après l'avoir créée il y a quoi dedans?
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.
Mais il a filé qu'un extrait, alors.
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 !
Marsh Posté le 26-07-2005 à 12:08:12
C'est pas possible.
Marsh Posté le 26-07-2005 à 12:09:25
echo n'est pas une fonction.
echo $thequery;
pas
echo ($thequery);
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 ???
Marsh Posté le 26-07-2005 à 12:11:04
ah oui au temps pour moi !
SELECT * FROM user where pays=" allemagne"
c'est dingue !!
Marsh Posté le 26-07-2005 à 12:12:00
Bon ben manque une majuscule...
Marsh Posté le 26-07-2005 à 12:12:21
judicael a écrit : ah oui au temps pour moi ! |
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...
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 !?!
Marsh Posté le 26-07-2005 à 12:12:52
Et puis y'a un espace qui traîne là.
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 !!
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.
Marsh Posté le 26-07-2005 à 12:16:16
$thequery = 'SELECT * FROM user where pays=\'' . $_POST['lepays'] . '\'';
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]" ); ?>
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...