Code postal => Ville

Résolu
cs_Bonhomet Messages postés 29 Date d'inscription samedi 19 juillet 2003 Statut Membre Dernière intervention 5 novembre 2005 - 5 nov. 2005 à 11:44
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre 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

8 réponses

monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
5 nov. 2005 à 12:25
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!
3
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
5 nov. 2005 à 11:49
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>';
}
0
cs_Bonhomet Messages postés 29 Date d'inscription samedi 19 juillet 2003 Statut Membre Dernière intervention 5 novembre 2005
5 nov. 2005 à 11:57
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>
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
5 nov. 2005 à 11:59
remplace $sql par $req dans ton for.... c'est pourtant évident comme erreur v__v
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
5 nov. 2005 à 12:00
a oui et t'as oublié juste avant justement

$req = mysql_query($sql);
0
cs_Bonhomet Messages postés 29 Date d'inscription samedi 19 juillet 2003 Statut Membre Dernière intervention 5 novembre 2005
5 nov. 2005 à 12:15
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>
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 nov. 2005 à 12:26
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
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
5 nov. 2005 à 13:22
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>
0
Rejoignez-nous