Besoin d'aide pour faire fonctionnez ce code

Signaler
Messages postés
71
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
3 août 2005
-
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
Bonjour !

J'ai un pb assez urgent; en fait j'ai 2 listes déroulantes, la 1ère qui contient les pays doit modifier la 2ème qui conferme les villes . Et la 2ème doit changer en fonction du choix fait dans la 1ère.

Voici le code que j'ai mais apparement il ne fait rein :
<? 
// Connexion &#224; la base 
include ("connexion_eurocall.php");
//$id = MYSQL_CONNECT($host,$user,$pass);
mysql_select_db("$bdd"); 


?> 

 
<FORM name="essai dinamisme liste" ACTION="" METHOD="POST"> 
<FIELDSET STYLE ="background-color: #FFCC99"> 
<legend class="LEGEND">Update Form</legend>
 


<LABEL>Pays :</LABEL>
 


<select name="pays" class="SELECT" onChange="javascript :document.formation.submit()"> 
<option value="">Choisit le pays</option> 
<!-- Valeur vide pour forcer l'utilisateur &#224; s&#233;lectionner --> 
<? 
// Connexion &#224; la Base de donn&#233;es
include ("connexion_eurocall.php");
$id = MYSQL_CONNECT($host,$user,$pass);
mysql_select_db("$bdd"); 


$resultat=@mysql_query("SELECT * FROM pays ORDER BY code_pays"); 
while ($rang=mysql_fetch_array($resultat)){ 
$intitule_pays=$rang['intitule_pays']; 
$code_pays=$rang['code_pays']; 


If(! empty($pays) AND $intitule_pays == $pays){ 
echo"<option selected>".$pays."</option>"; 
}else{ 
echo "<option value="".$code_pays."">".$intitule_pays."</option>\n"; 
} 
}
 //D&#233;connexion
 mysql_close();
?> 
</select> 



 
<LABEL>Ville</LABEL> 

 
<select name="ville" class="SELECT" onChange="javascript :document.formation.submit()"> 
<option value="">Choisit la ville</option> 
<!-- Valeur vide pour forcer l'utilisateur &#224; s&#233;lectionner --> 
<? 
// Connexion &#224; la Base de donn&#233;es
include ("connexion_eurocall.php");
$id = MYSQL_CONNECT($host,$user,$pass);
mysql_select_db("$bdd"); 


$resultat=@mysql_query("SELECT * FROM ville ORDER BY code_ville"); 
while ($rang=mysql_fetch_array($resultat)){ 
$intitule_ville=$rang['intitule_ville']; 
$code_ville=$rang['code_ville']; 


If(! empty($ville) AND $intitule_ville == $ville){ 
echo"<option selected>".$ville."</option>"; 
}else{ 
echo "<option value="".$code_ville."">".$intitule_ville."</option>\n"; 
} 
}
 //D&#233;connexion
 mysql_close();
?> 
</select> 

 

 

 
 

 

 
</FIELDSET> 
</FORM> 



Merci d'avance à tte personne qui pourront m'aider

13 réponses

Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
a mon avis, ta variable $pays doit contenir le code_pays et pas l'intitule_pays. donc il faut que tu remplace

If(! empty($pays) AND $intitule_pays == $pays){

par
If(! empty($pays) AND $code_pays == $pays){

et pareil pour la ville



En plus,

tu te connect 3 fois a ta base alors qu'une seule suffirait,

tu na pas de "action" dans ton form

tu peu mettre juste "submit();" dans ton onChange !!!
Messages postés
71
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
3 août 2005

Bien, je m'y met de ce pas et merci pour tes subgestions
Messages postés
71
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
3 août 2005

Je viens de faire les modifications que tu m'a subgéré, slmt çà ne donne rien de rien .
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
dans ce cas la, essaye de mettre un echo :

while ($rang=mysql_fetch_array($resultat)){

$intitule_pays=$rang['intitule_pays'];

$code_pays=$rang['code_pays'];

echo "$pays = $intitule_pays(intitule) ou $code_pays(code)";

If(! empty($pays) AND $intitule_pays == $pays){

echo"<option selected>".$pays."</option>";

}else{

echo "<option value="".$code_pays."">".$intitule_pays."</option>\n";

}

}



comme ca tu vera si a un moment ton $pays vaut $intitule ou $code
Messages postés
71
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
3 août 2005

Ben, çà ne donne tjrs rien, dans la liste déroulante ds pays j'ai ts les pays de ma BD, hors dans la liste déroulate des villes je n'ai rien malgré le nombre de sélection que je peux faire .


Merci pour une autre astuce
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
et tu veu ke tes villes dependent du pays? si oui, alors ta requete est pas bonne car tu filtre pas les villes selon les pays.

mais ds tous les cas, tu devrai avoir quelque chose, vu que ton code est exactement le meme pour les pays et les villes!!!

tu es sur que ta requete retourne des resultats?
Messages postés
71
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
3 août 2005

Je trouves dans les listes les valeurs de mes tables.
Est ce que tu ne pourrais me dire ce que je peux faire? Pcq là je suis vraiment out.

Merci d'avance
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
moi j'aurai ecris ca comme ca. ca peut peut etre venir du fait que tu include 2 fois ton fichier "connexion_eurocall.php"



<?

// Connexion à la base

include ("connexion_eurocall.php");

$id = MYSQL_CONNECT($host,$user,$pass);

mysql_select_db("$bdd");

?>




<FORM name="essai dinamisme liste" ACTION="cette_page.php" METHOD="POST">

<FIELDSET STYLE ="background-color: #FFCC99">

<legend class="LEGEND">Update Form</legend>


<LABEL>Pays :</LABEL>


<select name="pays" class="SELECT" onChange="javascript :document.formation.submit()">

<option value="">Choisit le pays</option>

<!-- Valeur vide pour forcer l'utilisateur à sélectionner -->

<?

[mailto:$resultat=@mysql_query%28%22SELECT $resultat=@mysql_query("SELECT] * FROM pays ORDER BY code_pays");

while ($rang=mysql_fetch_array($resultat)){

$intitule_pays=$rang['intitule_pays'];

$code_pays=$rang['code_pays'];

If((! empty($pays)) && ($intitule_pays == $pays)){

echo"<option selected>".$pays."</option>";

}else{

echo "<option value="".$code_pays."">".$intitule_pays."</option>\n";

}

}

?>

</select>




<LABEL>Ville</LABEL>




<select name="ville" class="SELECT" onChange="javascript :document.formation.submit()">

<option value="">Choisit la ville</option>

<!-- Valeur vide pour forcer l'utilisateur à sélectionner -->

<?

[mailto:$resultat=@mysql_query%28%22SELECT $resultat=@mysql_query("SELECT] * FROM ville ORDER BY code_ville");

while ($rang=mysql_fetch_array($resultat)){

$intitule_ville=$rang['intitule_ville'];

$code_ville=$rang['code_ville'];

If((! empty($ville)) && ($intitule_ville == $ville)){

echo"<option selected>".$ville."</option>";

}else{

echo "<option value="".$code_ville."">".$intitule_ville."</option>\n";

}

}

//Déconnexion

mysql_close();

?>

</select>













</FIELDSET>

</FORM>
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
je viens de tester chez moi, ca marche tres bien!!!

la seule difference c que j'ai postgresql donc j'ai remplace "mysql_*"
par "pg_*" et j'ai enleve le include, et les class des objets.
Messages postés
71
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
3 août 2005

A quoi il sert le postgresql ? Tu peux me dire?


Ben, je viesn de modifier comme tu me l'as subgéré et la liste des villes à disparut et ensuite plus rien dans la liste déroulante des pays!
J'ai fait un copier coller du code que t'a modifier et ensuite j'ai enlever les class ainsi que le 2ème include, ensuite j'ai remplacer mysql_ par pg_


Voici le code


<?
// Connexion à la base
include ("connexion_eurocall.php");
$id = MYSQL_CONNECT($host,$user,$pass);
mysql_select_db("$bdd");
?>


<FORM name="essai dinamisme liste" ACTION="cette_page.php" METHOD="POST">
<FIELDSET STYLE ="background-color: #FFCC99">
<legend class="LEGEND">Update Form</legend>

<LABEL>Pays :</LABEL>

<select name="pays" onChange="javascript :document.formation.submit()">
<option value="">Choisit le pays</option>
<!-- Valeur vide pour forcer l'utilisateur à sélectionner -->
<?
$resultat=@pg_query("SELECT * FROM pays ORDER BY code_pays");
while ($rang=pg_fetch_array($resultat)){
$intitule_pays=$rang['intitule_pays'];
$code_pays=$rang['code_pays'];
If((! empty($pays)) && ($intitule_pays == $pays)){
echo"<option selected>".$pays."</option>";
}else{
echo "<option value="".$code_pays."">".$intitule_pays."</option>\n";
}
}
?>
</select>


<LABEL>Ville</LABEL>


<select name="ville" onChange="javascript :document.formation.submit()">
<option value="">Choisit la ville</option>
<!-- Valeur vide pour forcer l'utilisateur à sélectionner -->
<?
$resultat=@pg_query("SELECT * FROM ville ORDER BY code_ville");
while ($rang=pg_fetch_array($resultat)){
$intitule_ville=$rang['intitule_ville'];
$code_ville=$rang['code_ville'];
If((! empty($ville)) && ($intitule_ville == $ville)){
echo"<option selected>".$ville."</option>";
}else{
echo "<option value="".$code_ville."">".$intitule_ville."</option>\n";
}
}
//Déconnexion
mysql_close();
?>
</select>

</FIELDSET>
</FORM>


Bien, dis moi alors ce qu t'en penses J'espère avoir bien comprise ce que tu m'as dit !
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
nan justement, je t'ai deja tout fait, ta plus qu'a recopier tel quel et ca devrait marcher

postresql c'est MA base de donnees, mysql c la TIENNE. donc si ca
marche tjrs pas en recopiant tel quel le code que je t'ai file, essaye
sans les class.
Messages postés
71
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
3 août 2005

Même en enlevant la class çà ne donne rien.

Voici le code que j'ai eu à modifier

<html>
<head>
<script language="javascript">
function changerPays()
{
// Vérification de la prise en charge de la valeur
alert(document.forms.location.pays.value) ;


/* Là tu recuperes l'id du pays */
var code_pays = document.forms.location.pays.value ;


/* Là tu remplis ton champ caché pour pouvoir passer l'id du pays selectionné */
document.forms.location.code_pays.value = code_pays ;


/* Et pour finir, tu valides ton formulaire pour que l'id du pays selectionné soit passé par post */
document.forms.location.submit() ;
}
</script>
</head>

<?
// Connexion à la base
include ("connexion_eurocall.php");
$id = MYSQL_CONNECT($host,$user,$pass);
mysql_select_db("$bdd");
?>


<FORM name= "location" ACTION="essai_mod_2_liste.php" METHOD="POST">
<FIELDSET STYLE ="background-color: #FFCC99">
<legend class="LEGEND">Dépendances listes déroulantes inter-reliées</legend>

<LABEL>Pays :</LABEL>

<select name="pays" onChange="javascript :changerPays();">
<option value="">Choisit le pays</option>
<!-- Valeur vide pour forcer l'utilisateur à sélectionner -->
<?
if(isset($_POST['idpays']))
echo "ok" ;
else
echo "pas ok"; {


$resultat=mysql_query("SELECT * FROM pays ORDER BY code_pays");


while ($rang=mysql_fetch_array($resultat)){
$intitule_pays=$rang['intitule_pays'];
$code_pays=$rang['code_pays'];
If((! empty($pays)) && ($intitule_pays == $pays)){
echo"<option selected>".$pays."</option>";
}else{
echo "<option value="".$code_pays."">".$intitule_pays."</option>\n";
}
}
echo 'Le code du pays est :' .$_POST['idpays'];}
?>
</select>



<LABEL>Ville</LABEL>


<select name="ville" onChange="javascript :changerPays();">
<option value="">Choisit la ville</option>
<!-- Valeur vide pour forcer l'utilisateur à sélectionner -->
<?
$resultat=mysql_query("SELECT * FROM ville INNER JOIN pays ON ville.code_pays=pays.code_pays
And code_pays = ".$_POST['idpays']."
ORDER BY code_ville ");
while ($rang=mysql_fetch_array($resultat)){
$intitule_ville=$rang['intitule_ville'];
$code_ville=$rang['code_ville'];
If((! empty($ville)) && ($intitule_ville == $ville)){
echo"<option selected>".$ville."</option>";
}else{
echo "<option value="".$code_ville."">".$intitule_ville."</option>\n";
}
}


//Déconnexion
mysql_close();
?>
</select>

</FIELDSET>


</FORM>



</html>
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
effectivement ton code marche pas. plusieurs raisons a cela :

dabord, ton document.forms.location.code_pays.value = code_pays ; ne fait reference a aucun champs. tu a du oublier un

ensuite, il faut que tu rajoute un $pays=$_POST['pays']; au debut de ton script

tu a aussi un accolade que tu ouvre bizarrement

if(isset($_POST['idpays']))


echo "ok" ;


else


echo "pas ok"; {

a mon avis, elle devrait plutot se trouver pares le else

et puis plusieurs autres petites erreurs. enfin voila le code qui marche chez moi:









function changerPays()

{

// Vérification de la prise en charge de la valeur

alert(document.forms.location.pays.value) ;



/* Là tu recuperes l'id du pays */

var code_pays = document.forms.location.pays.value ;



/* Là tu remplis ton champ caché pour pouvoir passer l'id du pays selectionné */

// document.forms.location.code_pays.value = code_pays ;



/* Et pour finir, tu valides ton formulaire pour que l'id du pays selectionné soit passé par post */

document.forms.location.submit() ;

}
















Dépendances listes déroulantes inter-reliées


Pays :




Choisit le pays












Ville






Choisit la ville