Php tableau et requete utilisateur [Résolu/Fermé]

Signaler
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010
-
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010
-
Bonjour,
J'aimerais programmer en php et html la chose suivante :
A partir du nom d'un village (donné par l'utilisateur) , retourner la valeur du code postal.

J'ai deux listes :

$liste_CP=array(
"1"=>"39000",
"2"=>"39100",
"3"=>"39200"
...);

$CP_par_ville=array(
"dole"=>"2",
"lons"=>"1",
"saint-claude"=>"3",
Lavans=>"3"
...);


Quelqu'un pourrait-il m'aider ?
D'avance merci.
Awaba

14 réponses

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
déja tu peux simplifier en mettant en un seul array avec index chaine au lieu de numerique

$liste_villes_CP=array(
"lons"=>"39000",
"dole"=>"39100",
"saint-claude"=>"39200",
"Lavans"=>"39200"
...);
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
215
Bonjour Awaba,
Bonjour Alain_42,

Si tu es dans l'impossibilité de simplifier la liste comme le suggère Alain_42 (je suppose que le "choix" de deux listes séparées dépend d'un identifiant indépendant du code postal), tu peux essayer d'y accéder par l'instruction imbriquée suivante :

$liste_CP[$liste_villes_CP["ville"]]

Je n'ai pas testé (ça fait un bon moment que je ne touche plus à du PHP) mais en toute logique si on fait $liste_villes_CP["lons"] ça donne "1" et $liste_CP["1"] donne "39000".
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

Bonjour,
Merci pour vos réponses.
Je suis obligée de maintenir 2 listes.

J'ai fait une page php que j'ai mis sur mon serveur mais ça ne marche pas : voilà le code

<?php
$liste_CP=array(
"1"=>"39000",
"2"=>"39100",
"3"=>"39200"
...);

$CP_par_ville=array(
"dole"=>"2",
"lons"=>"1",
"saint-claude"=>"3",
Lavans=>"3"
...);
?>
<FORM method="POST" action=" que dois je mettre ???">
J'habite à <input type=text size=30 name=ville>
<input type=submit value=Envoyer>
<input type=hidden name=afficher value=ok>
</FORM>

<?php
echo $liste_CP[$liste_villes_CP["ville"]] ;
?>

Vraiment merci de m'éclairer car je n'ai pas le temps pour l'instant d'apprendre le code php mais j'ai besoin de ce petit bout de code.

Awaba
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
<FORM method="POST" action=" <?php echo $_SERVEUR['PHP_SELF']; ?>"> 



mais si l'utilisateur ne saisit pas exactement le nom de la ville ???

ton script ne marchera pas

il faudrait que tu proposes une liste déroulante des villes qui sont dans ton array
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

Ah oui, c'est vrai,merci pour la remarque mais comment dois-je faire une liste déroulante ?
Awaba
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

C'est encore moi, j'ai trouvé un script en javascript pour réaliser une liste déroulante. Pour cela ça cevrait aller.
Mais par contre, à partir du choix que l'utilisateur fera dans la liste "des villes", je ne sais pas comment faire pour renvoyer à l'utilisateur la réponse?
Merci
Awaba
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
Pourquoi en Javascript ??

voilà une solution en php

<?php
//initialisation des array
$liste_CP=array(
"1"=>"39000",
"2"=>"39100",
"3"=>"39200"
);

$CP_par_ville=array(
"dole"=>"2",
"lons"=>"1",
"saint-claude"=>"3",
"Lavans"=>"3"
);

//le script s'appelle lui meme donc on va recuperer la ville qd on a envoye la page
if(isset($_POST['ville'])){$ville=$_POST['ville'];}else{$ville="";}

?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
J'habite &agrave;: <br />
<select name="ville">
<?php
foreach($CP_par_ville as $cle=>$value){
	//pour creer la liste on parcours l'array des villes,  $cle contient le nom de la ville, $value son num correspondant 1 , 2 ,3 
	$option= "<option value=\"".$value."\"";
	if($ville==$value){ $option.="selected"; } //ça c'est pour conserver la selection au reaffichage de la page
	$option.=">".$cle."</option>";
	echo $option;
}
?>
</select><br /><br />
<input name="envoyer" type="submit" value="Envoyer">
</form>

<?php
if(isset($_POST['envoyer'])){
//on ne peux afficher ça que qd on a clique sur envoyer
	echo "Votre code postal: ".$liste_CP[$ville] ;
}
?> 
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

Merci Alain 42,
Je ne comprends pas, j'ai copié collé ton message et ça ne marche pas , je n'ai rien ...
Que puis-je faire ?
Awaba
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

Je viens de trouver mon erreur, dans la liste des villes oubli d'un =>
J'ai encore un problème, lorsque je clique sur ok , ça ouvre une page de mon site !
ça ne me donne pas le CP ?
Avez-vous une idée ?

Merci...
Awaba
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
parce que tu as intégré je suppose ce code dans ta page

action="$_SERVER['PHP_SELF']" veut dire appelle le script appelant

donc la page s'appelle elle même c'est normal

et attention à l'initialisation des array
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

Alain,
Excuse moi mais je suis plus que débutante , alors pourrais-tu m'expliquer ce que je dois mettre après action et que signifie la remarque "attention à l'initialisation des array ?"
Vraiment merci, je pense que je suis prêt du but !!!
J'ose encore demander un petit coup de pouce, ensuite j'aimerais que l'utilisateur soit redirigé sur une page différente en fonction du CP, est-ce possible ?
Déjà merci pour toutes les précieuses aides que tu m'a apporté.
Bon week end
Awaba
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
donnes moi le nom de la page et le code de cette page dans laquelle tu as intégré le bout de code que je t'ai fait
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

voilà la page :
https://www.eglisejura.com/?p=317
En fait, j'ai copié ton code dans une page php que j'ai chargé dans l'interface du site.
Je ne sais pas si je suis très claire.
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
et si tu mets dans
<form method="POST" action="?p=317">


ensuite pour ce que tu exposait plus haut

tu veux que selon la ville choisie on n'affiche pas le code postal mais qu'on ouvre une page différente en fonction du code postal ?
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

Super!!!!!!!!!!!! Vraiment merci....Seul je n'y serais pas arrivée ....
Juste un petit truc, parfois, lorsque je choisis une ville dans la liste déroulante, la réponse est bonne mais elle affiche ensuite une autre ville dans la liste ! J'aimerais que la ville choisie reste tant qu'un autre choix n'est fait !

Et j'aimerais enfin écrire la réponse mais que la réponse est un lien sur une autre page. Est-ce que je peux mettre mes liens dans le tableau array, si oui, quelle est la syntaxe ?

Je profite vraiment de tes compétences.... Merci pour tout !!!!

Awaba
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
Oui tu peux mettre tes liens dans un array

exemple:

$aray_liens=array("39600"=>"http://xxxxxxxxx",
"39100"=>"http://....",
etc..

donc en fonction du code postal tu peux aussi afficher un lien

pour le pb de ville qui reste selectionnée c'est du au fait que plusieurs villes ont le même numéro dans l'array $CP_...

alors modifies ainsi:

<?php
//initialisation des array
$liste_CP=array(
"1"=>"39000",
"2"=>"39100",
"3"=>"39200"
);

$CP_par_ville=array(
"dole"=>"2",
"lons"=>"1",
"saint-claude"=>"3",
"Lavans"=>"3"
);

//le script s'appelle lui meme donc on va recuperer la ville qd on a envoye la page
if(isset($_POST['ville'])){$ville=$_POST['ville'];}else{$ville="";}

?>
<form method="POST" action="?p=317">
J'habite &agrave;: <br />
<select name="ville">
<?php
foreach($CP_par_ville as $cle=>$value){
	//pour creer la liste on parcours l'array des villes,  $cle contient le nom de la ville, $value son num correspondant 1 , 2 ,3 
	$option= "<option value=\"".$cle."\"";
	if($ville==$value){ $option.="selected"; } //ça c'est pour conserver la selection au reaffichage de la page
	$option.=">".$cle."</option>";
	echo $option;
}
?>
</select><br /><br />
<input name="envoyer" type="submit" value="Envoyer">
</form>

<?php
if(isset($_POST['envoyer'])){
//on ne peux afficher ça que qd on a clique sur envoyer
	echo "Votre code postal: ".$liste_CP[$CP_par_ville[$ville]] ;
}
?> 

Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

En fait, cette fois, après avoir fait envoyer , la liste revient sur la première ville de la liste.

Pour le tableau des liens,une fois que je l'ai rempli, je ne vois pas où je fais appelle au tableau.

Il n'y a qu'un mot en français pour dire : Merci, alors je pourrais le dire en wolof : Dierediev !

Awaba
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
887
excuses j'ai fait une petite erreur

mets comme ça:

foreach($CP_par_ville as $cle=>$value){
	//pour creer la liste on parcours l'array des villes,  $cle contient le nom de la ville, $value son num correspondant 1 , 2 ,3 
	$option= "<option value=\"".$cle."\"";
	if($ville==$cle){ $option.="selected"; } //ça c'est pour conserver la selection au reaffichage de la page
	$option.=">".$cle."</option>\n";
	echo $option;
}


pour le lien:

if(isset($_POST['envoyer'])){
//on ne peux afficher ça que qd on a clique sur envoyer
	$code_postal=$liste_CP[$CP_par_ville[$ville]];
	echo "Votre code postal: ".$code_postal."<br />";
	//si ton array s'appelle $array_cp_lien
	echo "Pour continuer <a href=\"".$array_cp_lien[$code_postal]."\">cliquer içi</a>";
}
Messages postés
32
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
22 mars 2010

Eh bien, bravo à toi !!!
Tu m'as permis de réaliser ce que je cherchais. Je vais pouvoir continuer ...
Un grand MERCI.
Peut-être à une autre fois sur le forum.
Bonne soirée et bon dimanche.
Awaba