Listes liées

Présentation
Il faut juste rajouter la connection à la base.
Téléchargement
1  0 
Téléchargé 50 fois Voir les 16 commentaires
Détails
Catégories : Formulaires
Avatar de frenchsting
Expert éminent
Voir tous les téléchargements de l'auteur
Licence : Non renseignée
Date de mise en ligne : 15 février 2011




Avatar de - https://www.developpez.com
le 24/08/2011 à 18:42
Bonjour,
Code : Sélectionner tout
echo '<option value="'. $id_salle. '">' . $nom_salle . '</option>';
(remplacer tous les print par des echo)

il faudrait aussi remplacer
print " selected";
par
Code : Sélectionner tout
echo ' selected="selected"';
Ca donne :
Code : Sélectionner tout
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>';
		}
	}
?>
Avatar de - https://www.developpez.com
le 24/08/2011 à 20:16
Il manque un point (après $id_lieu):
echo '<option value="'.$id_lieu.'"'.$sel_lieu.'>'.$nom_lieu.'</option>';
Pour que le choix reste affiché :
Code : Sélectionner tout
			$sel_lieu = ($id_lieu == $lieux)? ' selected="selected"' : ''; // option selectionnee ? oui : non
$lieux est justement le choix qui avait été fait
on doit avoir au début du fichier :
Code : Sélectionner tout
$lieux = $_POST['selectlieu'];
Avatar de - https://www.developpez.com
le 24/08/2011 à 23:00
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"
Avatar de - https://www.developpez.com
le 24/08/2011 à 23:38
A priori, ca doit ressembler à ca, une fois les fautes corrigées et le code remis en forme :
Code : Sélectionner tout
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>
Avatar de - https://www.developpez.com
le 25/08/2011 à 13:50
Bonjour Claudine,
1/ n'utilise JAMAIS ni accent, ni espace dans un mot de fichier !
listesliées.php -> listesliees.php

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.
ok, vu !

Peux-tu redonner TON code ?
Avatar de - https://www.developpez.com
le 25/08/2011 à 13:59
Remplace le script par :
Code : Sélectionner tout
1
2
3
4
5
6
	<script type="text/javascript">
	function modifcombo(){
		var idlieu = document.form1.selectlieu.value;
		document.location.replace("?lieu=" + idlieu );
	}
	</script>
Avatar de Claudine Claudine - Membre régulier https://www.developpez.com
le 24/08/2011 à 17:11
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?
Code : Sélectionner tout
1
2
print"<option value="."id_salle. ">" . "nom_salle . "</option>";
De ce fait, il n'affiche rien dans la 2ème liste
Sincères remerciements
Claudine
Avatar de Claudine Claudine - Membre régulier https://www.developpez.com
le 24/08/2011 à 20:03
Bonsoir Jreaux62
Grand merci pour cette réponse rapide.
En remplaçant dans un premier temps tous les 'print par 'echo' ainsi que :
Code : Sélectionner tout
echo ' selected="selected"';
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
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:
Code : Sélectionner tout
echo '<option value="'.$id_lieu'"'.$sel_lieu.'>'.$nom_lieu.'</option>';
Pouvez-vous une fois de plus venir à mon secours car je n'arrive pas a trouver la solution?
Sincères remerciements car vous êtes mon sauveur après autant de recherches infructueuses.
Encore merci, mille fois merci
Claudine
Avatar de Claudine Claudine - Membre régulier https://www.developpez.com
le 24/08/2011 à 21:03
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
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.