Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/08/2008, 14h42   #1
Invité régulier
 
Inscription : décembre 2007
Messages : 49
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : décembre 2007
Messages : 49
Points : 8
Points : 8
Par défaut $_POST ne récupère pas le choix d'une liste



pour cerner le contexte:

je récupère par ajax et php une liste de données (une liste des villes),
celle ci est alors construite dans un formulaire en faisant une boucle for, jusque là pas de problème (merci Bovino), j ai bien la liste de villes.

Mon formulaire ainsi remplit, je désire le soumettre par la méthode POST,
le problème se situe ici.
En effet $_postt ne récupère pas correctement l'option sélectionnée,
enfin juste la première option n'est pas récupérable, car si il y a plusieurs choix possible dans la liste , ceux ci sont récupérables.

J'espère être compréhensible

Bon place au code

formulaire et recup ajax(JS)
Code :
1
2
3
4
5
6
7
8
9
10
11
 
var rep = xhr.responseText.split(";") ;
		 //alert(xhr.responseText+'\n'+rep);
		for (i=0; i< rep.length;i++){
		document.getElementById('ville')[i] = new Option(rep[i],rep[i]);
 
//liste deroulante
<form id="form1" name="form1" method="post" action="formverif.php">
<select name="ville" id ="ville"  style='width:128px;'>
	<!--<option >Choisir un secteur</option>-->
</select> </form>
Voilà, en testant POST grâce à print_r($POST) , il y a quelque chose qu a partir de la deuxième option de la liste

si quelqu'un à déjà rencontré ce problème il est le bienvenu...@+
sativa808 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2008, 14h53   #2
Membre éprouvé
 
Avatar de defcon_suny
 
Développeur informatique
Inscription : décembre 2006
Messages : 436
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 436
Points : 486
Points : 486
C'est bizarre, chez moi le code suivant fonctionne correctement
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<!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>
    <title></title>
</head>
<body>
<?php
print_r($_POST);
?>
//liste deroulante
<form id="form1" name="form1" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<select name="ville" id ="ville"  style='width:128px;'>
	<!--<option >Choisir un secteur</option>-->
</select> 
<input type="submit" value="Go">
</form>
<script type="text/javascript">
    	var rep = new Array("ville1","ville2","ville3","ville4");
		 //alert(xhr.responseText+'\n'+rep);
		for (i=0; i< rep.length;i++){
		document.getElementById('ville')[i] = new Option(rep[i],rep[i]);
		}
    </script>
</body>
</html>
Essaie de contrôler le résultat renvoyé par Ajax...
defcon_suny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2008, 15h10   #3
Invité régulier
 
Inscription : décembre 2007
Messages : 49
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : décembre 2007
Messages : 49
Points : 8
Points : 8
en effet ton code marche bien!

en fait on dirait que la reponse ajax renvoie le texte du premier élement mais les valeurs qu'à partir du deuxiéme.

voilà comment je recupére les données, en créant un tableau des valeurs séparées par un ; puis ensuite on split pour afficher
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<?php
// Fichier testcp.php
include ("connexion.php");
$resultat='';
if(isset($_POST['code'])or die (mysql_error()))  {
	$AccesBase = mysql_connect($host,$username,$passSQL);
	mysql_select_db($bdd,$AccesBase);
	//$QuestionBase = ;($bdd, $QuestionBase)
	$result = mysql_query ("SELECT ville FROM cpville  WHERE cp =".$_POST['code']."") or die (mysql_error());
			while ($row = mysql_fetch_array($result)){
			$resultat.=$row["ville"].";"; 
			}
			echo $resultat;			
			}
?>
sativa808 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2008, 15h57   #4
Invité régulier
 
Inscription : décembre 2007
Messages : 49
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : décembre 2007
Messages : 49
Points : 8
Points : 8
Hop, je me réponds pour tagger en

thème autocompletion code postal / ville
alors formulaire:
Code :
1
2
3
4
5
6
7
8
9
10
 
<label class="label" >Saisir un code Postal</label> 
    <input type="text" size="5" name="code"  id="code" onkeyup="go()" /> 
 
<label class="label"> commune associées </label>
 
<div id="city">					
    <select  name="ville"  >
    </select>
</div>
puis fonction go() :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
function go()
			 {	
			createHttpRequest()
			 http_request.onreadystatechange = function(){
			  if(http_request.readyState == 4 && http_request.status == 200){
 
var rep= http_request.responseText;
//alert(rep);
document.getElementById('city').innerHTML = rep;
}
}
var sel = document.getElementById("code").value;
var url ="testcp.php";
var mini = 5;
if (sel.length >= mini ){
http_request.open("POST",url,true);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http_request.send('code='+ document.getElementById("code").value);
}	}
requete sql par php:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php
// Fichier testcp.php
include ("connexion.php");
$resultat='';
echo "<select name='ville' >";
if(isset($_POST['code'])or die (mysql_error()))  {
	$AccesBase = mysql_connect($host,$username,$passSQL);
	mysql_select_db($bdd,$AccesBase);
	$result = mysql_query ("SELECT * FROM cpville "
        $result.=" WHERE cp =".$_POST['code']."")   or die (mysql_error());
 
     while ($row = mysql_fetch_assoc($result)){
	echo "<option value='".$row["id_cpville"]."'>".$row["ville"]."</option>";
     }
}
 
echo "</select>";
?>
sativa808 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h08.


 
 
 
 
Partenaires

Hébergement Web