Page 1 sur 1

apparition donnée selon element rentré dans un input

Posté : 20 mai 2010, 12:51
par spidercrash
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

Re: apparition donnée selon element rentré dans un input

Posté : 20 mai 2010, 13:02
par ouckileou
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

Re: apparition donnée selon element rentré dans un input

Posté : 20 mai 2010, 16:57
par spidercrash
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:

Re: apparition donnée selon element rentré dans un input

Posté : 21 mai 2010, 10:49
par ouckileou
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 :)

Re: apparition donnée selon element rentré dans un input

Posté : 21 mai 2010, 11:19
par spidercrash
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 ?

Re: apparition donnée selon element rentré dans un input

Posté : 21 mai 2010, 14:05
par ouckileou
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 ?

Re: apparition donnée selon element rentré dans un input

Posté : 21 mai 2010, 22:28
par spidercrash
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