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 19/06/2007, 11h38   #1
Invité de passage
 
Inscription : juin 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2007
Messages : 15
Points : 3
Points : 3
Par défaut Liste déroulante dynamique et selected

Bonjour à tous,

J'ai lu les cours et les exemples de scripts sur les listes déroulantes dynamiques et le php mais je n'arrive pas à résoudre mon problème.

Je ne suis pas une développeuse mais juste une bidouilleuse de codes pour arriver à mes fins et ... là j'ai un gros soucis ... Je ne vois pas comment faire pour résoudre mon problème ... et en plus, y'a justement un bout de code que je ne comprend pas à l'endroit où je dois trouver une solution pour me sortir de mon problème.

Je vous explique :
- J'ai une formulaire qui charge dynamiquement une liste déroulante "Régions"
- En fonction du résultat de cette 1er liste déroulante, j'en ai une autre qui s'affiche dynamiquement aussi et qui se nomme "Domaine"

Est-ce que vous me suivez jusque là ?

Je dois ensuite envoyer le résutat de ces 2 listes déroulantes vers une autre page qui m'affichera mes infos.

J'ai 2 soucis :
1/ Je n'arrive pas à avoir un domaine qui reste sélectionné dans ma 2ème liste déroulante.
2/ je n'arrive pas à reprendre mes informations vers ma page d'infos.

Je tourne en rond depuis hier la dessus ...

Voici pour voir de quoi je parle : ma page

Et voici mon code php ... désolé, je n'ai pas l'habitude des forums, je ne sais pas si j'ai le droit de mettre tout mon code mais le voici :

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php 
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); 
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */ 
$serveur = ""; // voir hébergeur
$admin = ""; // vide ou "root" en local
$mdp = ""; // vide en local
$base = ""; // nom de la BD
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */ 
$idr = isset($_POST['region'])?$_POST['region']:null; 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> 
<title>Sélectionner un domaine selon une région choisie</title> 
</head> 
<body> 
<?php 
if(isset($_POST['ok']) && isset($_POST['departement']) && $_POST['departement'] != "") 
{ 
    $region_selectionnee = $_POST['region']; 
    $dept_selectionne = $_POST['departement']; 
?> 
<p>
  <?php 
} 
?> 
</p> 
<h3>
  <?php 
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect() 
*  car on aura besoin de la connexion un peu plus loin dans le script */ 
$connexion = mysql_pconnect($serveur, $admin, $mdp); 
if($connexion != false) 
{ 
    $choixbase = mysql_select_db($base, $connexion); 
    $sql1 = "SELECT `id_region`, `nom_region` FROM `region` ORDER BY `nom_region`"; 
    $rech_regions = mysql_query($sql1); 
    $code_region = array(); 
    $region = array(); 
    /* On active un compteur pour les régions */ 
    $nb_regions = 0; 
    if($rech_regions != false) 
    { 
        while($ligne = mysql_fetch_assoc($rech_regions)) 
        { 
            array_push($code_region, $ligne['id_region']); 
            array_push($region, $ligne['nom_region']); 
 
            /* On incrémente de compteur */ 
            $nb_regions++; 
        } 
    } 
    ?> 
</h3> 
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept"> 
<table width="225" border="0" cellspacing="0" cellpadding="0">
	<tr>
	<td colspan="2">
	<select name="region" id="region" class="deroulant" onchange="document.forms['chgdept'].submit();"> 
  <option value="-1">~ Région ~</option> 
    <?php 
    for($i = 0; $i < $nb_regions; $i++) 
    { 
?> 
  <option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]); ?></option> 
<?php 
    } 
    ?> 
</select>
	</td>
    </tr>
     <tr>
     <td colspan="2"><img src="images/spacer.gif" width="1" height="10" /></td>
     </tr>
      <tr>
      <td width="200" height="22"> 
    <?php 
    mysql_free_result($rech_regions); 
    /* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */ 
 
    if(isset($idr) && $idr != -1) 
    { 
        /* Cération de la requête pour avoir les départements de cette région */ 
        $sql2 = "SELECT id_domaine, nom_domaine, id_region, region_domaine_ FROM domaine, region WHERE `id_region` = ". $idr ." and region_domaine_ = id_region ORDER BY `nom_domaine`"; 
        if($connexion != false) 
        { 
            $rech_dept = mysql_query($sql2, $connexion); 
            /* Un petit compteur pour les départements */ 
            $nd = 0; 
            /* On crée deux tableaux pour les numéros et les noms des départements */ 
            $code_dept = array(); 
            $nom_dept = array(); 
            /* On va mettre les numéros et noms des départements dans les deux tableaux */ 
            while($ligne_dept = mysql_fetch_assoc($rech_dept)) 
            { 
                array_push($code_dept, $ligne_dept['id_domaine']); 
                array_push($nom_dept, $ligne_dept['nom_domaine']); 
                $nd++; 
            } 
            /* Maintenant on peut construire la liste déroulante */ 
            ?> 
<select name="domaine" id="departement" class="deroulant" onchange="document.forms['chgdept'].submit()";> 
  <option value="-1">~ Domaine ~</option> 
            <?php   
            for($d = 0; $d<$nd; $d++) 
            { 
                ?> 
  <option value="<?php echo($code_dept[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d].""); ?></option> 
                <?php 
            } 
?> 
</select> 
	</td>
    <td width="25">
  <?php 
        } 
        /* Un petit coup de balai */ 
        mysql_free_result($rech_dept);
		$region=$_POST['region'];
		$domaine=$_POST['domaine'];
?> 
</form> 
  <a href="domaine.php?region=$region&&domaine=$domaine" target="_parent"><img src="images/bt.gif" alt="" border="0"/></a>
  </input>
      <?php    } ?>
</td>
</tr>
</table> 
<?php echo $_POST['region']." - ".$_POST['domaine']; ?>
<?php 
    /* Terminé, on ferme la connexion */ 
    mysql_close($connexion); 
} 
else 
{ 
    /* Si on arrive là, c'est pas bon signe, il faut vérifier les  
    * paramètres de connexion, mot de passe, serveur pas démarré etc... */ 
?> 
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p> 
<?php 
} 
?> 
</body> 
</html>
Si vous comprennez d'où vient mes problèmes ... j'attend vos remarques !

Merci pour votre aide future.
Adaviada est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 11h53   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bonjour

Deux choses :
Tout d'abord, l'envoi des infos à la page suivante se fait (je suppose) par ce lien :
Code html :
<a href="domaine.php?region=$region&&domaine=$domaine" target="_parent"><img src="images/bt.gif" alt="" border="0"/></a>
D'où petit problème : un seul & est nécessaire entre les 2 variables et le html ne connait ni $region, ni $domaine Je te conseille de passer tout ça en restant dans le code php.
Code php :
echo '<a href="domaine.php?region='.$region.'&domaine='.$domaine.'" target="_parent"><img src="images/bt.gif" alt="" border="0"/></a>';

Ensuite, au début de ton script tu testes la variable $_POST['ok']. Mais je n'ai pas trouvé le champ qui lui correspond. Erreur de copier/coller ou oubli ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 14h28   #3
Invité de passage
 
Inscription : juin 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2007
Messages : 15
Points : 3
Points : 3
Oh merci Celira !
Alors mon bouton fonctionne (en effet que je suis bete mes variables n'étaient pas dans mon PHP !! ) et me renvoit bien mes informations sur ma page suivante.

Par contre, j'ai enlevé le $_POST['ok'] en haut de mon code car je n'en n'ai plus besoin puisque c'est le bouton dont on parle au dessus qui fait la lien mais ... le selected pour les domaines ne fonctionne toujours pas ... et je ne vois pas d'où ca vient.
Ca fonctionne très bien pour la région et pour le domaine non alors que ca fonctionne sur le même principe ... je commence à désespérer ...
Adaviada est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 14h43   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Il doit y avoir un problème sur la ligne d'option. A première vue le problème vient sans doute de $dept_selectionne.

Ce que tu peux faire pour vérifier, c'est ajouter un echo là où tu affectes $dept_selectionne.
Code :
1
2
$dept_selectionne = $_POST['departement'];
echo "departement : $dept_selectionne";
Et également un print_r($_POST) à le fin de ton script pour voir quelles variables sont réellement passées.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 15h02   #5
Invité de passage
 
Inscription : juin 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2007
Messages : 15
Points : 3
Points : 3
Et bien merci Celira !
En fait $_POST['departement'] ne pouvais être que vide puisque mon champ s'appelle "domaine" et non "département" ...
C'est en essayant de reprendre la variable que je m'en suis appercu ! merci beaucoup ! ca fonctionne très bien maintenant,

On se prend souvent le crane sur des petites bétises d'innatention !

Merci encore pour tout !!
Adaviada est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 15h11   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
De rien !

Citation:
On se prend souvent le crane sur des petites bétises d'innatention !
Encore plus que tu ne crois ! Une fois, on a cherché pendant 2 pages, en s'y mettant à 3 ou 4 un problème qui venait d'un = manquant entre value et la valeur. Ce genre de code là :
Code html :
<input type="text" value"15">
Et en plus ça ne renvoie pas d'erreur (ça ne renvoie rien du tout en fait)

N'oublie pas le
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira 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 22h13.


 
 
 
 
Partenaires

Hébergement Web