IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Listes liées


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #1
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut Listes liées
    Bonjour,

    Je vous propose un nouvel élément à utiliser : Listes liées

    Il faut juste rajouter la connection à la base.

    Qu'en pensez-vous ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut logiciel 2 listes liées
    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 - Visualiser dans une fenêtre à part
    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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    echo ' selected="selected"';
    Ca donne :
    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>';
    		}
    	}
    ?>

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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

  5. #5
    Invité
    Invité(e)
    Par défaut
    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 - Visualiser dans une fenêtre à part
    			$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 - Visualiser dans une fenêtre à part
    $lieux = $_POST['selectlieu'];

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    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

  7. #7
    Invité
    Invité(e)
    Par défaut
    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

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    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:
    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>
    Bonne nuit et à demain
    merci pour votre aide
    Claudine

  9. #9
    Invité
    Invité(e)
    Par défaut
    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")

  10. #10
    Invité
    Invité(e)
    Par défaut
    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>

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    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

  12. #12
    Invité
    Invité(e)
    Par défaut
    A moins que ton fichier ne s'appelle essai3.php, il faut modifier cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		document.location.replace("essai3.php?lieu=" + document.form1.selectlieu.value );
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		document.location.replace("nom-de-CE-fichier.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("?lieu=" + document.form1.selectlieu.value );
    explication :
    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)

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    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

  14. #14
    Invité
    Invité(e)
    Par défaut
    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 ?

  15. #15
    Invité
    Invité(e)
    Par défaut
    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>

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    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 :
    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)
    Si vous pouviez une dernière fois me confirmer ou corriger mes commentaires,ou me citer une source ce serai plus que parfait.
    Un tout grand merci pour votre collaboration.
    Claudine

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Claudine Voir le message
    Rerebonjour Jean
    Jean ?

    On m'a déjà appelé "JR", ou Gérard (à cause de "Gégé"), ou Guillaume, ou (d'autres-plus-intimes-que-je-ne-peux-pas-dire) mais pas encore Jean.
    C'est une première

Discussions similaires

  1. Pb listes liées javascript/php
    Par boo64 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2006, 12h35
  2. Deux listes lies et un lien
    Par arti2004 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/03/2006, 16h44
  3. [MySQL] 1 table et 2 listes liées
    Par Ekik dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 07/02/2006, 16h47
  4. XMLHTTPRequest et listes liées
    Par ben23 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/12/2005, 16h32
  5. Problème avec listes liées entre elles et bouton "précé
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2005, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo