apparition donnée selon element rentré dans un input

Eléphant du PHP | 388 Messages

20 mai 2010, 12:51

bonjour a tous,

J'ai une table qui s'appeler codepostaux, cette table contient les champs ID,CPVILLE,VILLE.
Je souhaiterai faire un script avec un input text appeler code postaux.
Lorsque la personne met sont code postal la apparait dans une seconde input text la ville choisi.
exemple si je tape 85100 cela me met dans le second champs les sables d'olonne.
Comment je peut proceder pour faire cela lorsque la personne rentre une valeur une recherche se fait dans la table et affiche la ville désiré.

Merci pour votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

20 mai 2010, 13:02

Voici des étapes :

1. faire un formulaire avec le champ texte
2. faire une deuxième page qui va récupérer la valeur du formulaire et l'afficher à l'écran, juste l'afficher.
3. Faire la requête SQL qui récupère la ville correspond à un code postal donné (en dur, pour le moment, comme 85100)
4. Exécuter cette requête via PHP et afficher le résultat dans la page
5. Intégrer la variable récupérée du formulaire


Tu as ici des actions de base, tu peux trouver des articles simples pour commencer sur www.phpdebutant.org

Eléphant du PHP | 388 Messages

20 mai 2010, 16:57

merci pour ta réponse mais quand tu dit faire une deuxième page qui va récupérer la valeur du formulaire et l'afficher à l'écran, juste l'afficher.
Cela veut dire qu'il devra avoir une action de l'utilisateur sur un bouton afin d'envoyer le formulaire et récuperer les POST dans une deuxiéme page.
cependant je ne souhaite pas qu'il y a d'action comme cela je souhaite que juste en tapant le code postal apparait la ville ou les villes souhaiter et si une de celle ci est bonne alors il clic sur la ville et celle ci apparait dans le deuxième input.
car un code postal peut avoir plusieurs villes.

Voit tu de quoi je parle :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 mai 2010, 10:49

Ok, alors la partie requête SQL reste valable mais il faudra utiliser du Javascript pour la lancer à chaque modif et afficher les différents résultats. Ce que tu veux faire c'est un truc basique, on trouve des tutoriels facilement.

Je déplace le sujet dans le bon forum :)

Eléphant du PHP | 388 Messages

21 mai 2010, 11:19

Ok, alors la partie requête SQL reste valable mais il faudra utiliser du Javascript pour la lancer à chaque modif et afficher les différents résultats. Ce que tu veux faire c'est un truc basique, on trouve des tutoriels facilement.

Je déplace le sujet dans le bon forum :)
mais il me semblé qu'avec tu php/sql et de l'Ajax ont pouver faire cela non ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 mai 2010, 14:05

Ok, alors la partie requête SQL reste valable mais il faudra utiliser du Javascript pour la lancer à chaque modif et afficher les différents résultats. Ce que tu veux faire c'est un truc basique, on trouve des tutoriels facilement.

Je déplace le sujet dans le bon forum :)
mais il me semblé qu'avec tu php/sql et de l'Ajax ont pouver faire cela non ?
Sais-tu ce que veut dire Ajax ?

Eléphant du PHP | 388 Messages

21 mai 2010, 22:28

donc il y a de l'évolution j'ai ceci en script

le formulaire
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
<script src="js/jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
function liste(id1, id2, url)
{
	var leselect = document.getElementById(id2);
	var xhr = getxhr();
	xhr.onreadystatechange = function()
	{
		if (xhr.readyState == 4 && xhr.status == 200)
		{
			if (xhr.responseText != '')
			{
				var i,villes,nb,ville;
				villes = xhr.responseText.split('/');
				nb = villes.length;
				leselect.options.length = 0;
				
				for (i=0; i<nb; i++)
				{
					ville = villes[i].split('*');
					leselect.options[i] = new Option(ville[1],ville[0]);
				}
			}
			else
			{
				alert('la chaine retournée est vide...');
			}
			
		}
	}
	xhr.open("POST", url, true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	sel = document.getElementById(id1);
	cp = sel.value;
	xhr.send("cp="+cp);
}

</script>
 
</head>
 
<body>
<form name="inscription" method="post" action="index.php?page=inscription-valide">
 
Code postal:
<input id="cp" class="obligatoire" type="text" name="on_cp" size="10" maxlength="15" onBlur="liste('cp', 'ville', 'ville.php');">
Ville:
<select id="ville" name="oc_ville">
	<option value="-1">Choisir</option>
</select>
 
et ville.php mon fichier avec ma requete.
<?php
include('php/connect.php');
 
	if (isset($_POST['cp']))
	{
		$cp = $_POST['cp'];
		
		$db = my_connect();
		$sql = "select * from cp where cp = '$cp' order by ville";
		$result= exec_req($sql);
			
		while($liste = mysql_fetch_assoc($result))
		{	
			$id = $liste['idville'];
			$ville = $liste['ville'];
			if (isset($string))
			{		
				$string = $string."/".$id."*".$ville;	
			}
			else
			{
				$string = $id."*".$ville;
			}
		}	
	echo $string;
	}		
?>
cependant lorsque je tape le code postal rien n'apparait j'ai utiliser le debugger de firefox et il me met dans la console

getxhr is not defined
[Break on this error] var xhr = getxhr();

Pourriez vous m'aider svp merci d'avance