Bonjour,
Je vous propose un nouvel élément à utiliser : Listes liées
Il faut juste rajouter la connection à la base.
Qu'en pensez-vous ?
Bonjour,
Je vous propose un nouvel élément à utiliser : Listes liées
Il faut juste rajouter la connection à la base.
Qu'en pensez-vous ?
Bonjour Frenchsting,
voilà 2 mois que je galère sur les listes liées mais malheureusement, toujours sans succès. Pouvez-vous m'aider?
J'ai testé votre logiciel et suis particulièrement intéressé par ce dernier.
Malheureusement, lors des tests, il me signale une erreur que je n'arrive pas à éliminer. J'ai travaillé par copier/coller puisse-que le téléchargement ne fonctionne pas!
Parse error: syntax error, unexpected T_STRING in C:\Program Files\EasyPHP-5.3.3.1\www\infopub\essai3.php on line 95
Pouvez-vous m'aider à corriger cette ligne?
De ce fait, il n'affiche rien dans la 2ème liste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print"<option value="."id_salle. ">" . "nom_salle . "</option>";
Sincères remerciements
Claudine
Bonjour,
(remplacer tous les
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo '<option value="'. $id_salle. '">' . $nom_salle . '</option>';
il faudrait aussi remplacer
parprint " selected";
Ca donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo ' selected="selected"';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php // Connexion a la base include('../connectbase.inc') ; // Execution requete $ma_req = "SELECT * FROM lieu;"; $res_req = mysql_query($ma_req) or die("Selection table \"lieu\" impossible"); // Affectation des variables utilisees pour l'affichage if (mysql_num_rows($res_req)!=0) { // resultat non vide while ($une_ligne = mysql_fetch_array($res_req)) { $id_lieu = $une_ligne["id_lieu"]; $nom_lieu = $une_ligne["nom_lieu"]; $sel_lieu = ($id_lieu == $lieux)? ' selected="selected"' : ''; // option selectionnee ? oui : non echo '<option value="'.$id_lieu'"'.$sel_lieu.'>'.$nom_lieu.'</option>'; } } ?>
Bonsoir Jreaux62
Grand merci pour cette réponse rapide.
En remplaçant dans un premier temps tous les 'print par 'echo' ainsi que :tout fonctionne" presque" normalement puisque enfin et grâce à vous après une selection dans la liste des lieux, la 2ème liste me donne les choix possibles correspondants
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo ' selected="selected"';
Petit problème: le choix affiché dans la liste 1 ne reste pas affiché!
J'ai par la suite modifié le code comme indiqué(ca donne)
mais une erreur empêche de voir le résultat:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in C:\Program Files\EasyPHP-5.3.3.1\www\infopub\essai3.php on line 56]
c'est-à-dire à la ligne:
Pouvez-vous une fois de plus venir à mon secours car je n'arrive pas a trouver la solution?
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo '<option value="'.$id_lieu'"'.$sel_lieu.'>'.$nom_lieu.'</option>';
Sincères remerciements car vous êtes mon sauveur après autant de recherches infructueuses.
Encore merci, mille fois merci
Claudine
Il manque un point (après $id_lieu):
Pour que le choix reste affiché :echo '<option value="'.$id_lieu.'"'.$sel_lieu.'>'.$nom_lieu.'</option>';
$lieux est justement le choix qui avait été fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sel_lieu = ($id_lieu == $lieux)? ' selected="selected"' : ''; // option selectionnee ? oui : non
on doit avoir au début du fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $lieux = $_POST['selectlieu'];
Bonsoir Jreaux62
Désolé de vous importuner une fois de plus mais le message suivant apparaît:
Notice: Undefined index: selectlieu in C:\Program Files\EasyPHP-5.3.3.1\www\infopub\essai3Bis.php on line 23
Mais cependant l'affichage du lieu selectionné reste affiché 1seconde pour disparaître mais, aussitôt dans le formulaire apparaît dans: >>>>>>1<<<<<<( ce qui correspond bien à l' ld du lieu)Ennuyeux que le nom du lieu ne reste pas affiché dans la liste lieu!
Je ne doute pas un instant que vous pourrez résoudre ce petit problème!
Sincères salutations et merci pour votre aide précieuse.
claudine
Pour bien faire, il faudrait que tu donnes TON code (complet, si possible).
Au minimum, le bout de code qui vient avant et après l'erreur :
Notice: Undefined index: selectlieu in C:\Program Files\EasyPHP-5.3.3.1\www\infopub\essai3Bis.php on line 23
Re Bonsoir
comme demandé, je te joins le fichier complet,ce qui te permettra de situer le problème pour la variable inconnue et surtout pour que l'affichage de lma donnée lieu reste affichée dans la liste:
Bonne nuit et à demain
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <html> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language=javascript> function modifcombo(){ document.location.replace("essai3.php?lieu=" + document.form1.selectlieu.value ); document.form1.selectlieu.value = $lieu; } </script>; </head> <body> <?php if (isset($_GET['lieu'])){ $lieu = $_GET['lieu']; } else { $lieu = NULL; } echo ">>>>" . $lieu ."<<< <br> <br> <br>"; $lieu = $_POST['selectlieu']; ?> <p>Essai formulaire</p> <form name="form1" method="post" action=""> <table width="100%" border="1"> <td><div align="right">lieu :</div></td> <td><select name="selectlieu" class="txt16-000000" onChange="javascript : modifcombo()"> <option value=""></option> <!-- Valeur vide pour forcer l'utilisateur ? s?lectionner --> <?php // Connexion ? la base $host = 'localhost'; $user = 'root'; $pass = ''; $db = 'test'; // connection à la DB $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); // Execution requ?te $ma_req = "SELECT * FROM lieu;"; $res_req = mysql_query($ma_req) or die("Selection table \"lieu\" impossible"); // Affectation des variables utilis?es pour l'affichage if (mysql_num_rows($res_req)!=0) { // r?sultat non vide while ($une_ligne = mysql_fetch_array($res_req)) { $id_lieu = $une_ligne["id_lieu"]; $nom_lieu = $une_ligne["nom_lieu"]; $sel_lieu = ($id_lieu == $lieu)? ' selected="selected"' : ''; // option selectionnee ? oui : non echo '<option value="'.$id_lieu.'",'.$sel_lieu.'>'.$nom_lieu.'</option>'; } } ?> "</option>"; } } ?> </select> </td> </tr> <tr> <td> <div align="right">salle : </div></td> <td><select name="selectsalle" class="txt16-000000"> <option value=""></option> <!-- Valeur vide pour forcer l'utilisateur ? s?lectionner --> <?php $host = 'localhost'; $user = 'root'; $pass = ''; $db = 'test'; // connection à la DB $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); ?> <?php // Execution requ?te $ma_req = "SELECT * FROM salle WHERE id_lieu = '$lieu';"; $res_req = mysql_query($ma_req) or die("Selection table \"salle\" impossible"); // Affectation des variables utilis?es pour l'affichage if (mysql_num_rows($res_req)!=0) { // r?sultat non vide while ($une_ligne = mysql_fetch_array($res_req)) { $id_salle = $une_ligne["id_salle"]; $nom_salle = $une_ligne["nom_salle"]; echo '<option value="'. $id_salle. '">' . $nom_salle . '</option>'; } } ?> </select></td> </tr> </table> </form> </body> </html>
merci pour votre aide
Claudine
ok, ca, c'est le fichier php
(-> je vois déjà des bouts de codes qui n'ont pas lieu d'être ! ...)
Ce qu'il me faut (pour tester), c'est la source générée (dans le navigateur -> "afficher la source")
A priori, ca doit ressembler à ca, une fois les fautes corrigées et le code remis en forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php // connection à la DB $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); ?> <?php // initialisation/recuperation de la selection // lieu if (isset($_GET['lieu'])){ $lieu = $_GET['lieu']; } elseif (isset($_POST['selectlieu'])){ $lieu = $_POST['selectlieu']; } else { $lieu = ''; } // salle if (isset($_POST['selectsalle'])){ $salle = $_POST['selectsalle']; } else { $salle = ''; } ?> <!DOCTYPE HTML> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"> <head> <title>Document sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script type="text/javascript"> function modifcombo(){ document.location.replace("essai3.php?lieu=" + document.form1.selectlieu.value ); document.form1.selectlieu.value = <?php echo $lieu; ?>; } </script> </head> <body> <p>Essai formulaire</p> <form name="form1" method="post" action=""> <table width="100%" border="1"> <tr> <td>lieu :</td> <td> <select id="idselectlieu" name="selectlieu" class="txt16-000000" onchange="javascript: modifcombo();"> <option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner --> <?php // Execution requete : tous les LIEUX $ma_req = "SELECT * FROM lieu;"; $res_req = mysql_query($ma_req) or die("Selection table \"lieu\" impossible"); // Affectation des variables utilisees pour l'affichage if (mysql_num_rows($res_req)!=0) { // resultat non vide while ($une_ligne = mysql_fetch_array($res_req)) { $id_lieu = $une_ligne["id_lieu"]; $nom_lieu = $une_ligne["nom_lieu"]; $sel_lieu = ($id_lieu == $lieu)? ' selected="selected"' : ''; // option selectionnee ? oui : non ?> <option value="<?php echo $id_lieu; ?>"<?php echo $sel_lieu; ?>><?php echo $nom_lieu; ?></option> <?php } // fin while } // fin if ?> </select> </td> </tr> <tr> <td>salle :</td> <td> <select id="idselectsalle" name="selectsalle" class="txt16-000000"> <option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner --> <?php // Execution requete : les SALLES de ce lieu (selectionné) $ma_req = "SELECT * FROM salle WHERE id_lieu = '".$lieu."';"; $res_req = mysql_query($ma_req) or die("Selection table \"salle\" impossible"); // Affectation des variables utilis?es pour l'affichage if (mysql_num_rows($res_req)!=0) // resultat non vide { while ($une_ligne = mysql_fetch_array($res_req)) { $id_salle = $une_ligne["id_salle"]; $nom_salle = $une_ligne["nom_salle"]; $sel_salle = ($id_salle == $salle)? ' selected="selected"' : ''; // option selectionnee ? oui : non ?> <option value="<?php echo $id_salle; ?>"<?php echo $sel_salle; ?>><?php echo $nom_salle; ?></option> <?php } // fin while } // fin if ?> </select> </td> </tr> <tr> <td colspan="2"> <input type="submit" name="envoiformulaire" value="envoyer" /> </td> </tr> </table> </form> </body> </html>
Bonjour Jreaux 62
C'est avec joie et empressement que j'ai testé ce petit bijou.
Dès que je choisis un lieu dans la 1ère liste déroulante, la 2ème liste reste vide! Mais, si je clic sur envoyer, tout va alors fonctionner normalement.
En effet, la 1ère liste a gardé la valeur selectionnée et la 2ème liste 'salle' est complète et permet de choisir une des valeurs donc fonctionnement normal.
Il subsiste donc ce petit problème du départ(en 2étapes) qui m'oblige après selection d'une valeur de lieu d'envoyer cette valeur pour que le formulaire fonctionne par la suite normalement.
Veux-tu me corriger ce dernier petit problème?
Merci pour le travail de remise en ordre de ce logiciel qui va me permettre de l'étudier et comprendre son fonctionnement
Sincères remerciements
Claudine
A moins que ton fichier ne s'appelle essai3.php, il faut modifier cette ligne :
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.location.replace("essai3.php?lieu=" + document.form1.selectlieu.value );
ou (ca revient au même) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.location.replace("nom-de-CE-fichier.php?lieu=" + document.form1.selectlieu.value );
explication :
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.location.replace("?lieu=" + document.form1.selectlieu.value );
la page "se remplace", "elle-même", mais avec le paramètre "lieu" dans l'URL (d'où le $_GET['lieu'] en début de fichier)
Bonjour jreaux62,
j'ai exécuter vos consignes et j'ai même reformulé"essai3.php" en "listesliées.php , mais le même problème subsiste.
Je suis désolé de vous solliciter de nouveau car moi, pauvre débutante, sans votre aide je suis dans l'incapacité de résoudre ce problème qui apparemment est plus complexe qu'il n'y paraît.
Je ne doute pas que vous trouverez rapidement la solution.
Dans l'attente de vous lire, veuillez agréer mes sincères salutations
Claudine
Bonjour Claudine,
1/ n'utilise JAMAIS ni accent, ni espace dans un mot de fichier !
listesliées.php-> listesliees.php
ok, vu !Dès que je choisis un lieu dans la 1ère liste déroulante, la 2ème liste reste vide! Mais, si je clic sur envoyer, tout va alors fonctionner normalement.
Peux-tu redonner TON code ?
Remplace le script par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <script type="text/javascript"> function modifcombo(){ var idlieu = document.form1.selectlieu.value; document.location.replace("?lieu=" + idlieu ); } </script>
Rerebonjour Jean
Laissez-moi vous témoigner mes plus vifs remerciements pour ce beau travail qui est maintenant parfait dans son fonctionnement.
Pourquoi ne le publieriez vous pas sous forme de tuto car à ma connaissance,j'ai eu l'occasion de télécharger des logiciels de listes liées dynamiques mais aucun ne fonctionnait.
Je vais pour ma part essayer de progresser en commentant chaque ligne pour bien comprendre le fonctionnement.
Ainsi en changeant ces 3 premières lignes :
Si vous pouviez une dernière fois me confirmer ou corriger mes commentaires,ou me citer une source ce serai plus que parfait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function modifcombo(){ // appel de fonction de listes combinées var idlieu = document.form1.selectlieu.value;// déclaration de la variable idlieu dans le formulaire1 document.location.replace("listesselectionnes?lieu=" + idlieu );// replacer le même document"listesselectionnées" parceque ce document est unique(pas un docphp puis un doc ajax)
Un tout grand merci pour votre collaboration.
Claudine
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager