Code postal => Ville [Résolu]

Messages postés
29
Date d'inscription
samedi 19 juillet 2003
Dernière intervention
5 novembre 2005
- - Dernière réponse : cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
- 5 nov. 2005 à 13:22
Bonjour à tous,

tout d'abord je précise que je débute en php alors d'avance, je
m'excuse, si ma quesion peut vous sembler simple mais je tourne en rond.



J'ai une base de donnée mysql avec 2 champs :

Code : les codes postaux belges => 4 chiffres

Name : le nom des villes correspondant aux différents codes



J'aimerais avoir ceci :

- un input 'code postal' où l'utilsateur rentre un code postal.

- un bouton 'Chercher' qui va sélectionner dans ma bd le nom des (des,
car il y en a souvent plusieurs) villes correspondant au code postal
entré

- un champ select qui affiche une liste déroulante de ces villes



J'ai tout d'abord essayé de le faire en ouvrant un popup avec la
fonction recherche et ensuite d'inclure les résultats dans une variable
de session, mais je me suis aperçu qu'on ne pouvait pas faire passer
une variable de session de type array d'une page à une autre (pour
rappatrier $_SESSION du popup à la page principale)



Voici ce que j'essaie à présent : (mon fichier s'appel cp22.php)



<?php


session_start();




if(isset($_POST['cp'])) $cp=$_POST['cp'];


else $cp="";




// on se connecte à MySQL


$db = mysql_connect('localhost', 'root', '');




// on seléctionne la base


mysql_select_db('client',$db);




// on crée la requete SQL


$sql = "SELECT Code,Name FROM codes_tbl";




// on envoie la requête


$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());


?>




<html>


<form method="POST" action="cp22.php">


Code postal :,

,

----

Localité :,

<select size="5" name="choix1">

<select name="localite">

<?php if ($cp="") { break; }

else

{

$sql = "SELECT Code,Name FROM codes_tbl WHERE Code=$cp";

echo '<select name="localite">';

for(i=0; i<mysql_num_rows($sql); i++)

{

echo '<option value="Localite.'i'">'.$cp.'</option>';

}

echo '</select>';

}

?>








</form>




</html>


<?php


session_destroy();


mysql_close();


?>



Je précise que mon fichier s'appel cp22.php car
<form method="POST" action="cp22.php"> => je reload la page



J'obtiens ceci : Parse error: parse error, expecting `';'' in c:\program files\easyphp1-8\www\client\cp22.php on line 37

la ligne 37 étant celle de la boucle for.

Pas moyen d'échapper à cette erreur :/



Pensez-vous que j'y prends mal, si oui donnez-moi des idées

Pouvez-vous m'aider à faire fonctionner ce script ?



D'avance, merci à tous
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Dernière intervention
20 mars 2006
3
Merci
Essaye plutôt ça :



<?php


if($cp != = '')


{

echo '<select name="localite">';

$sql "SELECT id ,Name FROM codes_tbl WHERE Code'$cp'";

$req = mysql_query($sql);

while($datas = mysql_fetch_row($req) )

{

echo '<option value="'.$datas['id'].'">'.$data['Name'].'</option>';

}

echo '</select>';

}

?>



En espérant que tu es pris la peine de mettre un champ de type int en PRIMARY KEY (que j'ai ici appelé id)

Si ce n'est pas le cas, c'est une erreur!

Merci monoceros01 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de monoceros01
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Dernière intervention
20 mars 2006
0
Merci
C'est pas du javascript mais du php, alors les variables, on y met des $ hein :p

Pis on concatène dans le bon sens...



for($i= 0; $ i<mysql_num_rows($sql); $i++)
{
echo '<option value ="Localite'.$i.'">'.$cp.'</option>';
}
Commenter la réponse de monoceros01
Messages postés
29
Date d'inscription
samedi 19 juillet 2003
Dernière intervention
5 novembre 2005
0
Merci
merci, je n'ai déjà plus d'erreur à la boucle for



mais qd je lance la recherche :

mysql_num_rows(): supplied argument is not a valid MySQL result resource in <b>c:\program files\easyphp1-8\www\client\cp22.php</b> on line <b>37</b>
Commenter la réponse de cs_Bonhomet
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Dernière intervention
20 mars 2006
0
Merci
remplace $sql par $req dans ton for.... c'est pourtant évident comme erreur v__v
Commenter la réponse de monoceros01
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Dernière intervention
20 mars 2006
0
Merci
a oui et t'as oublié juste avant justement

$req = mysql_query($sql);
Commenter la réponse de monoceros01
Messages postés
29
Date d'inscription
samedi 19 juillet 2003
Dernière intervention
5 novembre 2005
0
Merci
Avec $req ça affiche des <option> de 0 à 2902 avec rien entre <option> et </option>

et qd je mets $req = mysql_query($sql); j'ai denouveau :

<b>Warning</b>: mysql_num_rows(): supplied argument is not a valid MySQL result resource in <b>c:\program files\easyphp1-8\www\client\cp22.php</b> on line <b>38</b>
Commenter la réponse de cs_Bonhomet
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
0
Merci
salut;

remplace :

$sql = "SELECT Code,Name FROM codes_tbl WHERE Code=$cp";
echo '<select name="localite">';
for(i=0; i<mysql_num_rows($sql); i++)


par :

$sql = "SELECT Code,Name FROM codes_tbl WHERE Code=$cp";

$req=mysql_query($sql) or die(mysql_erro());
echo '<select name="localite">';
for(i=0; i<mysql_num_rows($req); i++)



et vas faire un tour sur php.net, cherches variables et mysql, regardes les exemples, ça devrait t'éclairer un peu...


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Commenter la réponse de coucou747
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
0
Merci
Salut,



j'aurais même remplacé la boucle for soit par un while soit par un for mais sans le mysql_num_rows appelé à chaque fois.



$nb=mysql_num_rows($req);

for(i=0; i<$nb; i++)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Commenter la réponse de cs_Anthomicro

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.