Liste déroulante + Recupération variable

Eléphant du PHP | 193 Messages

11 févr. 2007, 17:13

Bonjour!

Je souhaite afficher un lien météo sur mon site. Pour cela, j'ai contacté Meteo Consult et j'ai demandé si l'on pouvait faire des liens directs vers leurs différentes pages: pas de problème pour eux. Après avoir récupéré l'url de la page et les différents codes attachés aux villes que je recherche; j'ai écris le code PHP pour récupérer le code dans l'url. Mais là problème: le code n'est pas récupéré.

Code : Tout sélectionner

<?php require_once('connections/free.php'); ?> <?php mysql_select_db($database_conn_develop, $conn_develop); $query_rs_ville = "SELECT nom_ville, meteo_ville FROM tbl_ville ORDER BY nom_ville ASC"; $rs_ville = mysql_query($query_rs_ville, $conn_develop) or die(mysql_error()); ?> <body> <td><form id="tbl_ville" name="tbl_ville" method="post" action="<?php echo'http://www.meteoconsult.fr/ter/france/prevision/detail.php?langue=fr&echeance=0&num_ville='.$row_rs_ville['meteo_ville'];?>" target="_blank"> <label> <select name="meteo_ville" id="meteo_ville"> <?php // Tant qu'il y a une ville, faire .. while ($row_rs_ville = mysql_fetch_assoc($rs_ville)) { // affiche la ville dans la liste de choix echo '<option value="', $row_rs_ville['meteo_ville'], '">', $row_rs_ville['nom_ville'], '</option>', "\n"; // fin de la boucle. } ?> </select></label><label><input type="submit" name="Submit" value="Envoyer" /></label> </form> </td> </body>
Avez-vous une idée d'où peut provenir le problème?

Merci pour votre aide!

PS: si vous êtes intéressés par ce lien météo direct; c'est gratuit, il faut simplement contacter l'un des commerciaux!

ViPHP
ViPHP | 1996 Messages

11 févr. 2007, 19:10

As tu un résultat après ?

$query_rs_ville = "SELECT nom_ville, meteo_ville FROM tbl_ville ORDER BY nom_ville ASC";

En clair, est ce que ta requête est bonne?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 193 Messages

12 févr. 2007, 09:57

Oui la requête fonctionne: nous avons compris le problème; maintenant il faudrait qu'on le résolve, et ça,...

En gros, comme on est encore côté client au clic sur "Envoyer" le résultat de la requête ne peut être envoyé côté serveur: il faudrait quelque chose pour récupérer la valeur du select ou voir une réécriture d'url.

Je cherche...

Invité
Invité n'ayant pas de compte PHPfrance

12 févr. 2007, 10:04

OK Je pense avoir compris ....

Si je vois bien tu pointe ton POST vers
<form id="tbl_ville" name="tbl_ville" method="post" action="<?php echo'http://www.meteoconsult.fr/ter/france/prevision/detail.php?langue=fr&echeance=0&num_ville='.$row_rs_ville['meteo_ville'];?>"
A l'intérieur tu as

Code : Tout sélectionner

$row_rs_ville['meteo_ville']
qui pour lui est inconnu car tu lui donne la variable $row_rs_ville qu'après. (à la ligne avec le While)

Je pense que cela vient de là.

ViPHP
ViPHP | 1996 Messages

12 févr. 2007, 10:13

Au fait C'était moi le dernier message...

Je vois aussi que la méthode de Météo Consult à l'air d'être un GET et non un POST

Essaye alors de mettre :

Code : Tout sélectionner

<form id="tbl_ville" name="tbl_ville" method="GET"


et

Code : Tout sélectionner

<select name="num_ville" id="meteo_ville">
Pour être conforme avec :

Code : Tout sélectionner

http://www.meteoconsult.fr/ter/france/prevision/detail.php?langue=fr&echeance=0&num_ville='.$row_rs_ville['meteo_ville']
Mais attention les variable $_GET['num_ville'] seront crées dès que l'utilisateur cliquera.

Aussi comme tu as dans ta ligne action 3 variables GET :
  • langue
  • echeance
  • num_ville
Il faut que tu les fasses apparaitre dans ton formulaire en format HIDDEN par exemple.

J'espère que c'est bon.
A+
Modifié en dernier par Aureusms le 12 févr. 2007, 10:25, modifié 1 fois.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 193 Messages

12 févr. 2007, 10:20

Je n'arrive pas à lire ton code PHP, peux-tu éditer ton message stp?

Je crois voir ce que tu me dis!

Selon toi, il faut donc que je fasse précéder mon form par mon while?

[edit]je viens de voir ton dernier Post: Ok pour le GET!: j'attends de tes news avec impatience!

Merci d'avance!

ViPHP
ViPHP | 1996 Messages

12 févr. 2007, 10:26

Lis mon dernier message, j'ai essayé ...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 193 Messages

12 févr. 2007, 10:56

Je viens moi-même d'essayer et je me rends compte qu'a priori cela fonctionne (récupération du code dans l'url), mais pas sur la bonne page!

Ce n'est pas ma page Meteo consult qui se rouvre mais ma page générique sur laquelle j'ai mon formulaire. bizarre!


Mon code est désormais:

Code : Tout sélectionner

<td><form id="tbl_ville" name="tbl_ville" method="GET" action"<?php echo'http://www.meteoconsult.fr/ter/france/prevision/detail.php?langue=fr&echeance=0&num_ville='.$row_rs_ville['meteo_ville'] ?>" target="_blank" /> <label> <select name="num_ville" id="meteo_ville"> <?php // Tant qu'il y a une ville, faire .. while ($row_rs_ville = mysql_fetch_assoc($rs_ville)) { // affiche la ville dans la liste de choix echo '<option value="', $row_rs_ville['meteo_ville'], '">', $row_rs_ville['nom_ville'], '</option>', "\n"; // fin de la boucle. } ?> </select></label><label><input type="submit" name="Submit" value="Envoyer" /></label> </form> </td>
Qu'en penses-tu?

Merci par avance!

ViPHP
ViPHP | 1996 Messages

12 févr. 2007, 11:47

Je ne suis pas sûr que tu es besoin de

Code : Tout sélectionner

<td><form id="tbl_ville" name="tbl_ville" method="GET" action"<?php echo'http://www.meteoconsult.fr/ter/france/prevision/detail.php?langue=fr&echeance=0&num_ville='.$row_rs_ville['meteo_ville'] ?>" target="_blank" />
Mais de

Code : Tout sélectionner

<td><form id="tbl_ville" name="tbl_ville" method="GET" action"<?php echo'http://www.meteoconsult.fr/ter/france/prevision/detail.php?langue=fr&echeance=0' ?>" target="_blank" />
En clair je pense que lorsque l'utilisateur va poster, ta variable $_GET['num_ville'] va venir s'ajouter a la ligne action et donc te donner :

http://www.meteoconsult.fr/ter/france/p ... ville=4483
par exemple (pour Rouen, c'est là ou je suis.)
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 193 Messages

12 févr. 2007, 13:02

J'ai modifié mon form comme tu me l'as conseillé, mais le problème reste le même:

si je clique sur "Envoyer", le code est bien récupéré, mais la page qui s'ouvre récupère l'ancienne url et non pas celle de Meteoconsult. Il me charge:

http://develop.web.free.fr/template_met ... it=Envoyer

au lieu de:

http://www.meteoconsult.fr/ter/france/p ... ille=14397.

Que faire?

Le problème est visible ici:
http://develop.web.free.fr/template_meteo.php

Merci![/url]

Invité
Invité n'ayant pas de compte PHPfrance

12 févr. 2007, 13:07

Oups je viens de voir un truc pas vu depuis le début ...

Code : Tout sélectionner

action"<?php echo'http://www.meteoconsult.fr/ter/france/prevision/detail.php?langue=fr&echeance=0&num_ville='.$row_rs_ville['meteo_ville'] ?>" target="_blank" />
tu as oublié le "="

Code : Tout sélectionner

action="<?php echo'http://www.meteoconsult.fr/ter/france/prevision/detail.php?langue=fr&echeance=0&num_ville='.$row_rs_ville['meteo_ville'] ?>" target="_blank" />

Avatar du membre
ViPHP
ViPHP | 3008 Messages

12 févr. 2007, 13:08

Un oubli...

Code : Tout sélectionner

<form id="tbl_ville" name="tbl_ville" method="GET" action"
devient

Code : Tout sélectionner

<form id="tbl_ville" name="tbl_ville" method="GET" action="

ViPHP
ViPHP | 1996 Messages

12 févr. 2007, 13:08

Encore moi... j'oublie souvent de me loguer avant de répondre...

C'est vrai que cela a été plus facile avec ta page Web.
N'hésite plus à la mettre en ligne pour nous aider à t'aider...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 193 Messages

12 févr. 2007, 16:12

Damned I'm too stupid!!! :oops:

Effectivement, tss ça fonctionne mieux avec le "=".

Merci beaucoup!

Une question cependant, Aureusms, je n'ai pas compris tes craintes vis à vis du GET?...
Mais attention les variable $_GET['num_ville'] seront crées dès que l'utilisateur cliquera.

Aussi comme tu as dans ta ligne action 3 variables GET langue, echeance, num_ville
Il faut que tu les fasses apparaitre dans ton formulaire en format HIDDEN par exemple.
Quels sont les risques? Merci!

PS: Je redonne le code complet pour ceux qui voudrait mettre de la meteo sur leur site avec Meteo Consult (pensez demander l'autorisation au site avant de le faire, car de toute façon ils s'en rendront compte):

Code : Tout sélectionner

<?php require_once('Connections/blabla.php'); ?> <?php mysql_select_db($database_conn_develop, $conn_develop); $query_rs_ville = "SELECT nom_ville, meteo_ville FROM tbl_ville ORDER BY nom_ville ASC"; $rs_ville = mysql_query($query_rs_ville, $conn_develop) or die(mysql_error()); ?> <body> <td><form id="tbl_ville" name="tbl_ville" method="GET" action="<?php echo'http://www.meteoconsult.fr/ter/france/prevision/detail.php?langue=fr&echeance=0&num_ville='.$row_rs_ville['meteo_ville'] ?>" target="_blank" /> <label> <select name="num_ville" id="meteo_ville"> <?php // Tant qu'il y a une ville, faire .. while ($row_rs_ville = mysql_fetch_assoc($rs_ville)) { // affiche la ville dans la liste de choix echo '<option value="', $row_rs_ville['meteo_ville'], '">', $row_rs_ville['nom_ville'], '</option>', "\n"; // fin de la boucle. } ?> </select></label><label><input type="submit" name="Submit" value="Envoyer" /></label> </form> </td> </body>