Bonjour,

je viens de finir un formulaire pour mon site ou se trouve 3 lites déroulantes liées : pays -> departement (si le pays est la France) -> ville.

ces listes sont chargées a partir d'une pase de données sql et les données recueillis a partir de se formulaire implémente cette meme base ( table contact). jusque la tout va bien excepter pour les villes dont le nom est composé !!! je m'explique :

supposons que je sélectionne:
Pays:FRANCE
Departement : 92 - Haut De Seine
ville: Rueil Malmaison

DAns la table contact j'aurais :
Pays:FRANCE
Departement : 92 - Haut De Seine
ville: Rueil

Comment faire pour remedier a ce probleme ??

merci d'avanceation partielle de la base
Modifié par zara (06 Aug 2009 - 18:47)
Salut,

Tout d'abord je crois que tu es dans le mauvais forum, c'est un plutôt un problème d'insertion dans ta BDD.
Sinon peux-tu mettre le script de traitement du formulaire ? Car juste avec ça on va avoir du mal à t'aider Smiley cligne
Desolée si je me suis trompée de forum je debute en developpement web et je suis un peu perdu Smiley confused

a écrit :
c'est un plutôt un problème d'insertion dans ta BDD.


Je ne pense pas que le problème vient de l'insertion dans la BDD mais plutôt de la requête car avant d'insérer ma ville dans la base j'ai effectué un test pour voir ce que contenait ma variable ville, et le problème était déjà présent !!!



<?php
	
			// test des POST emis
			if(isset($_POST['id_dept']) && !empty($_POST['id_dept']) )
			{
				$user="root";
				$host="localhost";
				$password="";
				$database="pays_departement_ville";
				$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");   
				mysql_select_db($database,$connexion);
				$rq="Select ville from ville where id_dep=".$_POST['id_dept']." order by ville";
				$result= mysql_query ($rq) ;
				echo "<form method='POST' action='valid.php'>";
				$query = "SELECT dep  from departement where id_dep=".$_POST['id_dept']." ";
				$resultat = mysql_query($query);
				
				echo " <select style='width: 315px' size='1' name='departement'>";
				while ($query=mysql_fetch_row($resultat))
					{
				
					echo "<option value=".($query[0]).">".($query[0])."</option>";
				}
				
				echo " </select>";
				
		// $k = initialise le variable k
		$k=0;
		if (mysql_num_rows($result)>0)
		{
			echo "<select style='width: 315px' size='1' name='ville'>";
	
			while ($row=mysql_fetch_row($result))
			{ 
			echo "<option value=".utf8_encode($row[0]).">".utf8_encode($row[0])." </option>";
		  
			}
			
		}?>


et voila mon script de validation et d'insertion a la base
<?php

mysql_connect("localhost", "root", "");
mysql_select_db("pays_departement_ville");
$date_demande = date("d/m/y  H:i:s");
echo $date_demande;
echo $_POST['ville'];
@mysql_query("
INSERT INTO contact
(date_demande, adr,complemtadr,pays, departement, ville,codepo,)
VALUES('".$date_demande."','".$_POST['adr']."','".$_POST['complemtadr']."','".$_POST['pays']."', '".$_POST['departement']."','".$_POST['ville']."','".$_POST['codepo']."')");


?>


Merci d'avoir pris la peine de me lire et de me répondre Smiley smile
Donc si je comprends bien, si tu vas dans le code source de ta page les value="" n'ont qu'un seule mot et pas plusieurs ?
Et quand tu fais un echo de ton POST, c'est aussi le cas ?
Bonjour,

À vue de nez, c'est un problème de validité du code HTML (validité que tu as vérifiée avant de poser une question sur ce forum consacré aux standards, bien entendu?).

Si tu produits le code HTML suivant:
<option value=Machin Truc>Machin Truc</option>

Le navigateur comprend:
<option value="Machin" Truc="">Machin Truc</option>

CQFD?
Bonjour,
a écrit :
À vue de nez, c'est un problème de validité du code HTML (validité que tu as vérifiée avant de poser une question sur ce forum consacré aux standards, bien entendu?).

oui j'ai bien validé mon code HTML, ce n'ai donc pas ça le problème Smiley ohwell
a écrit :
Si tu produits le code HTML suivant:

<option value=Machin Truc>Machin Truc</option>


Le navigateur comprend:

<option value="Machin" Truc="">Machin Truc</option>

je pense effectivement que le probleme vient de là
Mais comme ma value est une variable je ne sais pas trop comment faire pour le forcer a ignorer les blancs contenus dans cette variable et ainsi prendre tout son contenu en compte !!!
quelqu'un aurait une idée ??? Smiley confus


<select style='width: 315px' size='1' name='ville'>

	<?php

			while ($row=mysql_fetch_row($result))

			{ 

			echo "<option value="$row[0]">"$row[0]" </option>";
			}

?>
</select>
zara a écrit :
Mais comme ma value est une variable je ne sais pas trop comment faire pour le forcer a ignorer les blancs contenus dans cette variable et ainsi prendre tout son contenu en compte !!!

Là c'est du B.A.-ba de HTML...
Il faut entourer les valeurs d'attribut contenant des espaces par des quotes. En XHTML, c'est obligatoire pour toutes les valeurs d'attribut. En HTML (4 et 5), c'est facultatif pour les valeurs ne contenant pas d'espace.

Si tu as vraiment un code comme ceci:
<élément attribut=valeur avec des espaces>
alors la page ne sera PAS valide. Tu es sûr d'avoir validé ta page? Smiley ohwell
Comme c'est du php tu mets simplement :


echo "<option value='"$row[0]"'>"$row[0]" </option>";


et ça fonctionneras Smiley cligne
J'ai bien valider ma page par W3C mais que la partie html
et du coup je n'ai pas valider le code
echo "<option value=".utf8_encode($row[0]).">".utf8_encode($row[0])." </option>";


comme vous pouvez le voir j'ai bien utilisé des quotes
Merci merci merci merci N-J Smiley biggrin enfin ça marche !!!
j'avais essayé le contraire " puis ' et ca n'avais pas marcher

encore une fois MERCI !!! Smiley ravi
zara a écrit :
comme vous pouvez le voir j'ai bien utilisé des quotes

Non, ça se sont les quotes de la syntaxe PHP. Si tu écris tes chaines de caractères avec des double quotes ("), et que tu veux générer des double quotes, il faut échapper ces dernières:
echo "<option value=\"$row[0]\"> $row[0] </option>";

ou bien:
echo '<option value="' . $row[0] . '">' . $row[0] . '</option>';
ça a marche avec la version de N-J
a écrit :

echo "<option value='"$row[0]"'>"$row[0]" </option>";


encore merci a vous deux Smiley ravi