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

Langage PHP Discussion :

Relation entre 2 listes liées alimentées avec bdd avec l'affichage dans un tableau HTML


Sujet :

Langage PHP

  1. #1
    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 Relation entre 2 listes liées alimentées avec bdd avec l'affichage dans un tableau HTML
    Bonjour à tous,
    J'ai un petit logiciel de 2 listes déroulantes liées et alimentées par bdd qui fonctionne très bien, mais je voudrais que les résultats d'une requête affiche les données d'une autre table"coordonnees" provenant d'une autre bdd dans le tableau html. Malheureusement il m'affiche toujours le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Notice: Undefined index: nom_categorie in C:\Program Files\EasyPHP-5.3.3.1\www\infopub\Tab.php on line 41
     
    Notice: Undefined index: nom_selection in C:\Program Files\EasyPHP-5.3.3.1\www\infopub\Tab.php on line 41
    Ci-joint :listeslieesBis.php

    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
    <?php
    // Connexion à la base
     
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'test';
     
     
    $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
    // categorie
    if (isset($_GET['categorie'])){
    	$categorie= $_GET['categorie'];
    } elseif (isset($_POST['selectcategorie'])){
    	$categorie = $_POST['selectcategorie'];
    } else {
    	$categorie = '';
    }
    // selection
    if (isset($_POST['selectselection'])){
    	$selection = $_POST['selectselection'];
    } else {
    	$selection = '';
    }
    ?>
     
    <!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()
    	{
    		var id_categorie = document.form1.selectcategorie.value;
    		document.location.replace("listeslieesBis.php?categorie=" + id_categorie );
    	}
    	</script>
     
    </head>
     
    <body>
     
    	<p>Essai formulaire</p>
     
    	<form name="form1" method="post" action="Tab.php">
    	<table width="100%" border="1">
    	<tr>
    	    <td>categorie:</td>
    		<td>
    			<select id="idselectcategorie" name="selectcategorie" class="txt16-000000" onChange="javascript: modifcombo();">
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    <?php			// Execution requete : tous les categories
    				$ma_req = "SELECT * FROM T_CATEGORIES;";					  
    				$res_req = mysql_query($ma_req) or die("Selection table \"T_CATEGORIES\" 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_categorie = $une_ligne["id_categorie"];
    						$nom_categorie = $une_ligne["nom_categorie"];
    						$sel_categorie = ($id_categorie == $categorie)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    				<option value="<?php echo $id_categorie; ?>"<?php echo $sel_categorie; ?>><?php echo $nom_categorie; ?></option>
    <?php				} // fin while
    				} // fin if
    ?> 
    			</select>
    		</td>
    	</tr>
    	<tr>
    		<td>selection :</td>   
            <td>
    			<select id="idselectselection" name="selectselection" class="txt16-000000">		
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    <?php	  		// Execution requete : les selection des catégories selectionnées 
    				$ma_req = "SELECT * FROM T_SELECTIONS WHERE id_categorie = '".$categorie."';";
    				$res_req = mysql_query($ma_req) or die("Selection table \"T_SELECTIONS\" 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_selection = $une_ligne["id_selection"];
    						$nom_selection = $une_ligne["nom_selection"];
    						$sel_selection = ($id_selection == $selection)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    				<option value="<?php echo $id_selection; ?>"<?php echo $sel_selection; ?>><?php echo $nom_selection; ?></option>	
    <?php				} // fin while
    				} // fin if
    ?> 
    			</select>
    		</td>
    	</tr>
    	<tr>
            <td colspan="2">
    			<input type="submit" name="envoyer" value="envoyer" />
    		</td>
    	</tr>
    	</table>
    	</form>
     
    </body>
    </html>
    et le code: Tab.php
    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
     
    <?php
     
     if (isset($_POST['envoyer'])) 
    {
    	function Verif_magicquotes ($chaine)
    	    {
    	        if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    	        return $chaine;
    	    } 
     // Récupération des valeurs des champs du formulaire 
    	$message = array();
     
     //$categorie = $_POST['selectcategorie'];
    	$id_categorie = isset($_POST['selectcategorie']) && trim($_POST['selectcategorie']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['selectcategorie']))) : null;
     if ($id_categorie=$_POST['selectcategorie']);
    	$selection = isset($_POST['selectselection']) && trim($_POST['selectselection']) != '' ? Verif_magicquotes(ucfirst(trim($_POST['selectselection']))) : null;
     	echo $_POST['selectcategorie'];
    	echo $_POST['selectselection'];
     
    	if (!isset($selection))
    	    {
    		     $message[] = 'Veuillez choisir une option dans la seconde liste déroulante';
    		}  
    	}
        if (isset($message) && count($message) == 0) 
    	// connexion à la base de données
    try
    {
    //echo'<strong>Faites votre choix dans la liste :</strong>';
    // information pour la connection à le DB
    $host = 'localhost';
    $user = 'root';
     
    $pass = '';
    $db = 'clients';
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
           $select = "SELECT * FROM coordonnees WHERE  cat='$_POST[nom_categorie]' AND selection='$_POST[nom_selection]'";
     
     
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
     
    // si on a récupéré un résultat on l'affiche.
    if($total) {
        // debut du tableau
    	echo $selection;
        echo '<table bgcolor="FFFFFF">'."\n";
            // première ligne on affiche les titres prénom et surnom dans 2 colonnes
            echo '<tr>';
    		echo '<td bgcolor="#669999"><b><u>id</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>cat</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>selection</u></b></td>';
     
            echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
            echo '<td bgcolor="#669999"><b><u>prenom</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>numtel</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>codepostal</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>ville</u></b></td>';
    		echo '</tr>'."\n";
        // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
        while($row = mysql_fetch_array($result)) {
            echo '<tr>';
    		echo '<td bgcolor="#CCCCCC">'.$row["id"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["cat"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["selection"].'</td>';
            echo '<td bgcolor="#90EE90">'.$row["nom"].'</td>';
            echo '<td bgcolor="#90EE90">'.$row["prenom"].'</td>';
    		echo '<td bgcolor="#9ACD32">'.$row["numtel"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["codepostal"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["ville"].'</td>';
    		echo '</tr>'."\n";
        }
        echo '</table>'."\n";
        // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($result);
    }
    catch(Exception $e)
    {
        // En cas d'erreur précédemment, on affiche un message et on arrête tout
        die('Erreur : '.$e->getMessage());
    }
     
     
    ?>
    Quelqu'un peut-il m'aider à résoudre ce problème car j'avoue que l'index indéfini de nom_categorie et nom_selection me laisse perplexe?
    Sincères remerciements
    Claudine

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir,

    $select = "SELECT * FROM coordonnees WHERE cat='$_POST[nom_categorie]' AND selection='$_POST[nom_selection]'";
    Tu n'as pas d'élément avec le name nom_selection dans ton formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = "SELECT * FROM coordonnees WHERE  cat='".$_POST["selectcategorie"]."' AND selection='".$_POST["nom_selectselection"]."'";
    A+.

  3. #3
    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 Andry.aime
    merci pour cette réponse rapide mais malheureusement cela ne fonctionne pas. j'ai une nouvelle erreur: idex inconnu de nom_selectselection.
    J'ai donc transformé avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = "SELECT * FROM coordonnees WHERE  cat='".$_POST["selectcategorie"]."' AND selection='".$_POST["selectselection"]."'";
    il n'y a plus d'erreur mais il m'affiche:"'Pas d\'enregistrements dans cette table..." ce qui est faux puisqu'il y en a 6.
    Je crois que c'est normal car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $_POST['selectcategorie'];
    	echo $_POST['selectselection'];
    cela affiche1 ce qui correspond a l'id dans la table T_categorie correspondant au nom_catégorie de la même table
    et de nouveau 1 ce qui correspond à l'id dans la tableT_selection correspondant au nom_selection de cette même table
    Or dans la base de données "coordonnees" 'cat' est un nom d'une catégorie et non une id et "idem pour selection
    Je ne suis pas capable de retrouver les variables nom_categorie et nom_selection dans le javascript ou y a-t-il lieu de modifier alors que les deux listes liées fonctionnent très bien?
    Votre aide me serait précieuse.
    Merci
    Claudine

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour Claudine,
    voila pourquoi je t'avais conseillé d'utiliser des NOMS DE VARIABLES EXPLICITES (pour éviter les confusions).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    			<select id="idselectcategorie" name="selectcategorie" class="txt16-000000" onChange="javascript: modifcombo();">
    				<!-- ........... -->
    				<option value="<?php echo $id_categorie; ?>"<?php echo $sel_categorie; ?>><?php echo $nom_categorie; ?></option>
    				<!-- ........... -->
    			</select>
    			<select id="idselectselection" name="selectselection" class="txt16-000000">		
    				<!-- ........... -->
    				<option value="<?php echo $id_selection; ?>"<?php echo $sel_selection; ?>><?php echo $nom_selection; ?></option>	
    				<!-- ........... -->
    			</select>
    name="selectcategorie" -> value="<?php echo $id_categorie; ?>" -> $_POST['selectcategorie'] récupère id_categorie (de la table T_CATEGORIES)
    name="selectselection" -> value="<?php echo $id_selection; ?>" -> $_POST['selectselection'] récupère id_selection (de la table T_SELECTIONS)
    Comme le vois que tu as une nouvelle table "coordonnees" :
    => peux-tu nous donner la structure et les champs de tes 3 tables ?

    Plus précisément, qu'enregistres-tu dans "coordonnees" :
    - id_categorie ou nom_categorie ?
    - id_selection ou nom_selection ?

  5. #5
    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,
    Très heureux de vous relire.
    La structure de la table"coordonnees" est la suivante:
    id , motdepasse , cat , selection , nom, prenom , numtel , codepostal , ville .
    le 'cat' correspond aux choix des catégories choisies par les clients
    la "selection" correspond aux choix des sélections choisies par les clients.

    Il faudrait donc que la catégorie choisie dans les listes liées(nom_catégorie) corresponde à 'cat' dans la table"coordonnes" et de même pour la selection.
    Le problème c'est que le javacript reprend les id des catégories et sélections et non les noms!
    Sincères remerciements
    Claudine

  6. #6
    Invité
    Invité(e)
    Par défaut
    Comme je l'ai expliqué ci-dessus, c'est défini de cette manière dans les select : on récupère les 2 ids !

    Si tu veux récupérer les noms, alors il faut :
    - SOIT modifier les 2 selects pour récupérer directement les noms (et le reste du code en conséquence),
    - SOIT récupérer les noms A PARTIR des 2 ids récupérés (2 requêtes à faire).

    TOUT n'est qu'une question de BONNE CONCEPTION.
    Et une BONNE CONCEPTION découle de BONS CHOIX.

  7. #7
    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,
    merci pour ces conseils.
    J'ai essayé en récupérant les noms A PARTIR des 2 ids récupérés (2 requêtes à faire). mais, j'ai toujours le même message:index indéfini pour nom_categorie
    Ci-joint ce que j'ai essayé de réaliser : j'arrive à afficher les valeurs des noms(categorie et selection) grâce aux deux requêtes mais je n'arrive pas à récupérer ces valeurs pour les utiliser dans la dernière requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = "SELECT * FROM coordonnees WHERE cat='$_POST[nom_categorie]' AND selection='$_POST[nom_selection]'";
    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
    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
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
    <?php
    // information pour la connection à le DB
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'test';
     
     
     
     if (isset($_POST['envoyer'])) 
    {
    	function Verif_magicquotes ($chaine)
    	    {
    	        if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);
     
    	        return $chaine;
    	    } 
     // Récupération des valeurs des champs du formulaire 
    //	$message = array();
    	if (isset( $_POST ['nom_categorie'])){
    	$categorie= $_POST['nom_categorie'];
    	}
     
        if (isset( $_POST ['nom_selection'])){
    	$categorie= $_POST['nom_selection'];
    	}
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
     
    // requête SQL qui compte le nombre total d'enregistrements dans la table et qui
    //récupère tous les enregistrements
    $select = "SELECT nom_categorie FROM T_CATEGORIES where id_categorie= '$_POST[selectcategorie]'"; 
     
     
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
     
    // si on a récupéré un résultat on l'affiche.
    if($total) {
     
        while($row = mysql_fetch_array($result)) {
            echo '<tr>';
          echo '<td bgcolor="#CCCCCC">'.$row['nom_categorie'].'</td>';
     
            echo '</tr>'."\n";
        }
        echo '</table>'."\n";
        // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($result);
    }
     
     
     
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
     
    // requête SQL qui compte le nombre total d'enregistrements dans la table et qui
    //récupère tous les enregistrements
    $select = "SELECT nom_selection FROM T_SELECTIONS where id_selection= '$_POST[selectselection]'"; 
     
     
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
     
    // si on a récupéré un résultat on l'affiche.
    if($total) {
     
        while($row = mysql_fetch_array($result)) {
            echo '<tr>';
     
          //  echo ''.$row['nom_selection'].'</td>';
            echo '</tr>'."\n";
        }
        echo '</table>'."\n";
        // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($result);
     
     
    ?>
    <?php
     // Récupération des valeurs des champs du formulaire 
    	$message = array();
        if (isset( $_POST ['nom_categorie'])){
    	$categorie= $_POST['nom_categorie'];
    	}
    	echo '<>'.$row['nom_categorie'].'</td>';
    $host = 'localhost';
    $user = 'root';
     
    $pass = '';
    $db = 'clients';
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
       //    $select = "SELECT * FROM coordonnees WHERE  cat='$_POST[nom_categorie]' AND selection='$_POST[nom_selection]'";
           $select = "SELECT id,cat,selection,nom,prenom,numtel,codepostal,ville FROM coordonnees WHERE  cat='".$_POST["nom_categorie"]."' AND selection='".$_POST["nom_selection"]."'";
     
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
     
    // si on a récupéré un résultat on l'affiche.
    if($total) {
        // debut du tableau
    	//echo $selection;
        echo '<table bgcolor="FFFFFF">'."\n";
            // première ligne on affiche les titres prénom et surnom dans 2 colonnes
            echo '<tr>';
    		echo '<td bgcolor="#669999"><b><u>id</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>cat</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>selection</u></b></td>';
     
            echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
            echo '<td bgcolor="#669999"><b><u>prenom</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>numtel</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>codepostal</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>ville</u></b></td>';
    		echo '</tr>'."\n";
        // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
        while($row = mysql_fetch_array($result)) {
            echo '<tr>';
    		echo '<td bgcolor="#CCCCCC">'.$row["id"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["cat"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["selection"].'</td>';
            echo '<td bgcolor="#90EE90">'.$row["nom"].'</td>';
            echo '<td bgcolor="#90EE90">'.$row["prenom"].'</td>';
    		echo '<td bgcolor="#9ACD32">'.$row["numtel"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["codepostal"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["ville"].'</td>';
    		echo '</tr>'."\n";
        }
        echo '</table>'."\n";
        // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($result);
    ?>
    Voulez-vous m'aider s.v.p?
    sincères remerciements
    Claudine

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour Claudine,
    loin de moi l'idée d'être blessant ou vexant, mais...
    ton code est un peu n'importe quoi, voire même (au choix) : "la foire du slip !" / "le jour des soldes !" / "la braderie de Lille !"
    Il faut comprendre ce que tu fais. Coller des bouts de code "au pif" apporte rarement le résultat espéré.

    1/ $_POST['nom_categorie'] => toujours pas... (déjà dit par andry.aime)
    Du formulaire, on ne récupère QUE :
    $_POST['selectcategorie'] et $_POST['selectselection']

    2/ Il faut TOUJOURS PROTEGER sa Bd des injections SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // recuperation de nom_categorie A PARTIR de $_POST[selectcategorie]
    $cat_select = "SELECT nom_categorie FROM T_CATEGORIES WHERE id_categorie= '" . mysql_real_escape_string($_POST['selectcategorie']) . "';"; 
    $cat_result = mysql_query($cat_select,$link) or die ('Erreur : '.mysql_error() );
    $cat_row =  mysql_fetch_array($cat_result);
    $nom_categorie = $cat_row['nom_categorie']; // => QU'ON POURRA ALORS UTILISER dans la requête sur la table "coordonnees"
    // idem pour nom_selection
    => revois ton code à tête reposée, écris les évènements dans le bon ordre d'execution, et ça ira mieux.
    Dernière modification par Invité ; 09/09/2011 à 17h24.

  9. #9
    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,
    Au-delà de toutes polémiques inutiles(liste à choix multiples),J'ai suivi vos conseils et tout particulièrement les 6 dernières lignes qui m'ont permises de pouvoir afficher toutes les coordonnées voulues dans le tableau html. C'était relativement simple, mais je ne pouvais exprimer la routine des 3 dernières lignes avec le row!
    Je comprends votre irritation face à tant d'incompétence, soyez indulgent et non désobligeant, car sans vous(ainsi que les membres de ce forum génial),nous les nuls, sommes voués à l'échec perpétuel.
    A près de 70 ans, je suis très heureuse de pouvoir progresser lentement mais sûrement et garder un pied dans cet univers internet moderne de programmation.Je vous demande donc un peu de compréhension et de patience pour la satisfaction du plus grand nombre d'adhérents à ce forum.
    Encore mille mercis pour votre collaboration. Afin de compléter mes connaissances et poursuivre la compréhension,voulez-vous m'aider à récupérer les noms suivant la 1ère méthode proposée :à savoir modifier les 2 selects pour récupérer directement les noms . J'ai essayé mais dès que je modifie le select de la liste sélection, cette liste déroulante reste vide.
    Mes respectueuses salutations pour ce travail harassant de bénévole mais oh !combien utile pour la formation continue et de plus totalement désinteréssé.
    Claudine

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour Claudine,
    sache que tu as tout mon respect, et mon admiration.
    Ta volonté d'apprentissage est tout à ton honneur.
    Quand je pense que ma mère sait juste consulter ses emails sur son portable (ce qui n'est déjà pas si mal à 77 ans) !

    De mon côté, je pratique une forme d'humour parfois (souvent !) ironique, voire sarcastique, mais j'essaie de ne jamais être désobligeant.
    Il m'arrive aussi d'être vexant ou cassant, mais sans jamais aucune méchanceté.

    Bref ! ceci pour dire que je suis toujours disposé à t'aider à progresser.

    Peux-tu nous donner :
    -> ton code actuel (avec tes dernières corrections) ?
    -> le "code source généré" (sur I.E. : onglet "Page" -> "Afficher la source")

    ps : Pour la table "coordonnées", voici un rappel de conseil, que je t'avais donné ici :
    Je te conseille vivement d'utiliser des conventions d'écriture, et des noms de variables/champs/fichiers/fonctions... explicites et clairs.
    Notamment les 2 champs "cat" et "selection", que tu aurais pu/dû nommer "nom_cat" et "nom_sel" (par exemple), ce qui évitait tout risque de confusion.
    Dernière modification par Invité ; 12/09/2011 à 11h07.

  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 Jreaux62
    Voici le code source généréj'apprends une nouvelle chose!)
    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
     
    <!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()
    	{
    		var nom_categorie = document.form1.selectcategorie.value;
    		document.location.replace("ListeslieesModif.php?categorie=" + nom_categorie );
    	}
    	</script>
     
    </head>
     
    <body>
     
    	<p>Essai formulaire</p>
     
    	<form name="form1" method="post" action="ListeslieesModifRep.php">
    	<table width="100%" border="1">
    	<tr>
    	    <td>categorie:</td>
    		<td>
    			<select id="selectcategorie" name="selectcategorie" class="txt16-000000" onChange="javascript: modifcombo();">
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    				<option value="1" selected="selected">Métiers</option>
    				<option value="2">Particuliers</option>
    				<option value="3">Jardins</option>
     
    			</select>
    		</td>
    	</tr>
    	<tr>
    		<td>selection :</td>   
            <td>
    			<select id="selectselection" name="selectselection" class="txt16-000000">		
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    				<option value="1">Boulanger</option>	
    				<option value="2">Plombier</option>	
    				<option value="3">Electricien</option>	
     
    			</select>
    		</td>
    	</tr>
    	<tr>
            <td colspan="2">
    			<input type="submit" name="envoyer" value="envoyer" />
    		</td>
    	</tr>
    	</table>
    	</form>
     
    </body>
    </html>
    ?>
    LE CODE ACTUEL/
    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
     
    php
    // Connexion à la base
     
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'test';
     
     
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
    ?>
     
    <?php
    // initialisation/recuperation des différentes selections
    // categorie
    if (isset($_GET['categorie'])){
    	$categorie= $_GET['categorie'];
    } elseif (isset($_POST['selectcategorie'])){
    	$categorie = $_POST['selectcategorie'];
    } else {
    	$categorie = '';
    }
    // selection
    if (isset($_POST['selectselection'])){
    	$selection = $_POST['selectselection'];
    } else {
    	$selection = '';
    }
    ?>
     
    <!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()
    	{
    		var nom_categorie = document.form1.selectcategorie.value;
    		document.location.replace("ListeslieesModif.php?categorie=" + nom_categorie );
    	}
    	</script>
     
    </head>
     
    <body>
     
    	<p>Essai formulaire</p>
     
    	<form name="form1" method="post" action="ListeslieesModifRep.php">
    	<table width="100%" border="1">
    	<tr>
    	    <td>categorie:</td>
    		<td>
    			<select id="selectcategorie" name="selectcategorie" class="txt16-000000" onChange="javascript: modifcombo();">
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    <?php	
    		// Execution requete : tous les categories
    				$ma_req = "SELECT * FROM T_CATEGORIES;";					  
    				$res_req = mysql_query($ma_req) or die("Selection table \"T_CATEGORIES\" 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_categorie = $une_ligne["id_categorie"];
    						$nom_categorie = $une_ligne["nom_categorie"];
    						$sel_categorie = ($id_categorie == $categorie)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    				<option value="<?php echo $id_categorie; ?>"<?php echo $sel_categorie; ?>><?php echo $nom_categorie; ?></option>
    <?php				} // fin while
    				} // fin if
    ?> 
    			</select>
    		</td>
    	</tr>
    	<tr>
    		<td>selection :</td>   
            <td>
    			<select id="selectselection" name="selectselection" class="txt16-000000">		
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    <?php	  		// Execution requete : les selection des catégories selectionnées 
    			$ma_req = "SELECT * FROM T_SELECTIONS WHERE id_categorie = '".$categorie."';";
    				$res_req = mysql_query($ma_req) or die("Selection table \"T_SELECTIONS\" 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_selection = $une_ligne["id_selection"];
    						$nom_selection = $une_ligne["nom_selection"];
    						$sel_selection = ($id_selection == $selection)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    				<option value="<?php echo $id_selection; ?>"<?php echo $sel_selection; ?>><?php echo $nom_selection; ?></option>	
    <?php				} // fin while
    				} // fin if
    ?> 
    			</select>
    		</td>
    	</tr>
    	<tr>
            <td colspan="2">
    			<input type="submit" name="envoyer" value="envoyer" />
    		</td>
    	</tr>
    	</table>
    	</form>
     
    </body>
    </html>
    ?>
    ET ENFIN LA REPONSE/(tableau html à remplir avec les données de la table coordonnées choisies après choix dans les listes liées)
    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
     
    <?PHP
    $host = 'localhost';
    $user = 'root';
     
    $pass = '';
    $db = 'clients';
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
     
           $select = "SELECT id,cat,selection,nom,prenom,numtel,codepostal,ville FROM coordonnees WHERE  cat='". $categorie."' AND selection='".$nom_selection."'";
     
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
     
    // si on a récupéré un résultat on l'affiche.
    if($total) {
        // debut du tableau
    	//echo $selection;
        echo '<table bgcolor="FFFFFF">'."\n";
            // première ligne on affiche les titres dans les colonnes
            echo '<tr>';
    		echo '<td bgcolor="#669999"><b><u>id</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>cat</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>selection</u></b></td>';
     
            echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
            echo '<td bgcolor="#669999"><b><u>prenom</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>numtel</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>codepostal</u></b></td>';
    		echo '<td bgcolor="#669999"><b><u>ville</u></b></td>';
    		echo '</tr>'."\n";
        // lecture et affichagelesrésultats sur les colonnes, 1 résultat par ligne.    
        while($row = mysql_fetch_array($result)) {
            echo '<tr>';
    		echo '<td bgcolor="#CCCCCC">'.$row["id"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["cat"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["selection"].'</td>';
            echo '<td bgcolor="#90EE90">'.$row["nom"].'</td>';
            echo '<td bgcolor="#90EE90">'.$row["prenom"].'</td>';
    		echo '<td bgcolor="#9ACD32">'.$row["numtel"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["codepostal"].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$row["ville"].'</td>';
    		echo '</tr>'."\n";
        }
        echo '</table>'."\n";
        // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($result);
    ?>
    Je tiens compte de vos remarques pour toutes nouvelles tables ou bdd mais si je change maintenant les noms de la table coordonnées, je dois tout recommencer à zéro, car j'ai déjà de nombreux logiciels qui y sont dépendants
    Mille remerciements pour votre aide.
    Claudine

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Claudine Voir le message
    j'ai déjà de nombreux logiciels qui y sont dépendants
    Me voila fort impressionné !

    1/ Dans le code "actuel" : ?> en trop à la fin (à supprimer)
    </html>
    ?>
    2/ Comme déjà conseillé : mets le code de connexion à la BdD dans un fichier (connexion_bd.php) à part, et met juste dans tes fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php require_once('connexion_bd.php'); ?>
    3/ Question : ce que tu as appelé "LA REPONSE" :
    - c'est le fichier ListeslieesModifRep.php ?
    - il est en "include" ? dans quel 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.
    Oui, bien sûr quand je me relis une troisième fois ce n'est pas clair!
    Le code actuel : c'est le fichier principal(ListeslieesModif.php) avec un 'POST' action= ListesliéesModifRep.php (c'est ce dernier fichier que j'ai appelé "La reponse").
    J'ose espérer avoir repondu correctement!
    Donc ma question: comment modifier les 2 selects pour récupérer directement les noms du fichier(ListeslieesModif.php) et faire apparaître le tableau des coordonnées dans ListelieesModifRep.php?
    Merci pour votre aide
    Claudine

  14. #14
    Invité
    Invité(e)
    Par défaut
    Voilà à quoi doit ressembler le fichier ListesliéesModifRep.php :

    1/ traitement php : en haut du fichier
    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
    <?php
    // connexion a la base de donnees
    require_once('connexion_bd.php');
     
    // -------------------------
    // RECUPERATION depuis le formulaire
    // id_categorie
    if (isset($_POST['selectcategorie'])){
    	$id_categorie = $_POST['selectcategorie'];
    } else {
    	$id_categorie = '';
    }
    // id_selection
    if (isset($_POST['selectselection'])){
    	$id_selection = $_POST['selectselection'];
    } else {
    	$id_selection = '';
    }
     
    // -------------------------
    // AVANT DE FAIRE LA REQUETE -> PROTECTION contre INJECTION SQL 
    $bd_id_categorie = mysql_real_escape_string($categorie);
    $bd_id_selection = mysql_real_escape_string($selection);
     
    // -------------------------
    // ON RECUPERE LES NOMS :
    // REQUETE : nom_categorie
    $cat_select 	= "SELECT nom_categorie FROM T_CATEGORIES WHERE id_categorie= '" .$bd_id_categorie. "';"; 
    $cat_result 	= mysql_query($cat_select,$link) or die ('Erreur : '.mysql_error() );
    $cat_row 	=  mysql_fetch_array($cat_result);
    $nom_categorie = $cat_row['nom_categorie'];
    // REQUETE : nom_selection
    $sel_select 	= "SELECT nom_selection FROM T_SELECTIONS WHERE id_selection= '" .$bd_id_selection. "';"; 
    $sel_result 	= mysql_query($sel_select,$link) or die ('Erreur : '.mysql_error() );
    $sel_row 	=  mysql_fetch_array($sel_result);
    $nom_selection = $sel_row['nom_selection'];
     
    // -------------------------
    // AVANT DE FAIRE LA REQUETE -> PROTECTION contre INJECTION SQL 
    $bd_nom_categorie = mysql_real_escape_string($nom_categorie);
    $bd_nom_selection = mysql_real_escape_string($nom_selection);
     
    // -------------------------
    // REQUETE : LES COORDONNEES
    $select 	= "SELECT id, cat, selection, nom, prenom, numtel, codepostal, ville 
    		FROM coordonnees 
    		WHERE cat = '". $bd_nom_categorie."' AND selection = '".$bd_nom_selection."';";
    $result 	= mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total 	= mysql_num_rows($result);
    // -------------------------
    ?>
    2/ début du code html : head, avec style CSS
    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
    <!DOCTYPE HTML">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    	<title>Test</title>
     
    	<script type="text/javascript">
    	</script>
     
    	<style type="text/css">
    #matable {
    	background-color:#FFFFFF;
    	border-collapse:collapse;
    	border:1px solid #666;
    }
    #matable th { /* première ligne on affiche les titres dans les colonnes */
    	background-color:#669999;
    	font-weight:bold;
    	font-style:underline;
    }
    #matable td { /* autres lignes (courante) */
    	background-color:#CCCCCC;
    }
    #matable td.tdnomprenom { /* autres lignes (special) */
    	background-color:#90EE90;
    }
    #matable td.tdtelephone { /* autres lignes (special) */
    	background-color:#9ACD32;
    }
    	</style>
     
    </head>
    3/ corps de la page : body
    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
    <body>
     
    <?php
    // ON AFFICHE LES COORDONNEES
    // si on a récupéré un résultat on l'affiche.
    if($total>0) {
    ?>
    	<table id="matable">
     
    	<!-- ENTETE : première ligne on affiche les titres dans les colonnes -->
    	<thead>
    		<tr>
    			<th>id</th>
    			<th>cat</th>
    			<th>selection</th>
    			<th>nom</th>
    			<th>prenom</th>
    			<th>numtel</th>
    			<th>codepostal</th>
    			<th>ville</th>
    		</tr>
    	</thead><!-- fin entete du tableau -->
     
        <!-- CORPS : lecture et affichage des résultats sur les colonnes, 1 résultat par ligne. -->
    	<tbody>
    <?php	while($row = mysql_fetch_array($result)) { ?>
    		<tr>
    			<td><?php echo htmlentities($row["id"]); ?></td>
    			<td><?php echo htmlentities($row["cat"]); ?></td>
    			<td><?php echo htmlentities($row["selection"]); ?></td>
    			<td class="tdnomprenom"><?php echo htmlentities($row["nom"]); ?></td>
    			<td class="tdnomprenom"><?php echo htmlentities($row["prenom"]); ?></td>
    			<td class="tdtelephone"><?php echo htmlentities($row["numtel"]); ?></td>
    			<td><?php echo htmlentities($row["codepostal"]); ?></td>
    			<td><?php echo htmlentities($row["ville"]); ?></td>
    		</tr>
    <?php	} ?>
    	</tbody><!-- fin corps du tableau -->
     
    	</table><!-- fin du tableau -->
    <?php
    } else { // si pas de résultat :
    ?>
    	Pas d'enregistrements dans cette table...
    <?php
    }
    // on libère le résultat
    mysql_free_result($result);
    ?>
     
    </body>
    </html>

  15. #15
    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,
    Merci pour ce travail qui me montre très bien la structure du fichier surlequel j'ai bien travailler. Si je ne me trompe ,il s'agit bien de la 2ème méthode que vous aviez suggérée. J'avais pu à l'aide des 5 dernières lignes le réaliser avec succès. Peu importe dans ce cas çi, j'ai rencontré 2 problèmes:
    1) Des variables indéfinies c'est-à-dire bd_id_categorie et bd_id_categorie ainsi que bd_nom_categorie et bd_nom_selection. J'ai donc tout simplement supprimé le bd_ partout et tout fonctionne à condition d'annuler:
    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // AVANT DE FAIRE LA REQUETE -> PROTECTION contre INJECTION SQL 
    $bd_id_categorie = mysql_real_escape_string($categorie);
    $bd_id_selection = mysql_real_escape_string($selection);
    Bizare avec le(2)?
    Veux-tu voir où est le problème? et vérifier le formulaire(ListelieesModif.php)
    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
     
    <?php
    // connexion a la base de donnees
    require_once('connect-bd.php');
     
    // initialisation/recuperation des différentes selections
    // categorie
    if (isset($_GET['categorie'])){
    	$categorie= $_GET['categorie'];
    }
     
    ?>
     
    <!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()
    	{
    		var id_categorie = document.form1.selectcategorie.value;
    		document.location.replace("ListeslieesModif.php?categorie=" + id_categorie );
    	}
    	</script>
     
    </head>
     
    <body>
     
    	<p>Essai formulaire</p>
     
    	<form name="form1" method="post" action="ListeslieesModifRep.php">
    	<table width="100%" border="1">
    	<tr>
    	    <td>categorie:</td>
    		<td>
    			<select id="selectcategorie" name="selectcategorie" class="txt16-000000" onChange="javascript: modifcombo();">
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    <?php	
    		// Execution requete : tous les categories
    				$ma_req = "SELECT * FROM T_CATEGORIES;";					  
    				$res_req = mysql_query($ma_req) or die("Selection table \"T_CATEGORIES\" 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_categorie = $une_ligne["id_categorie"];
    						$nom_categorie = $une_ligne["nom_categorie"];
    						$sel_categorie = ($id_categorie == $categorie)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    				<option value="<?php echo $id_categorie; ?>"<?php echo $sel_categorie; ?>><?php echo $nom_categorie; ?></option>
    <?php				} // fin while
    				} // fin if
    ?> 
    			</select>
    		</td>
    	</tr>
    	<tr>
    		<td>selection :</td>   
            <td>
    			<select id="selectselection" name="selectselection" class="txt16-000000">		
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    <?php	  		// Execution requete : les selection des catégories selectionnées 
    			$ma_req = "SELECT * FROM T_SELECTIONS WHERE id_categorie = '".$categorie."';";
    				$res_req = mysql_query($ma_req) or die("Selection table \"T_SELECTIONS\" 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_selection = $une_ligne["id_selection"];
    						$nom_selection = $une_ligne["nom_selection"];
    						$sel_selection = ($id_selection == $selection)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    				<option value="<?php echo $id_selection; ?>"<?php echo $sel_selection; ?>><?php echo $nom_selection; ?></option>	
    <?php				} // fin while
    				} // fin if
    ?> 
    			</select>
    		</td>
    	</tr>
    	<tr>
            <td colspan="2">
    			<input type="submit" name="envoyer" value="envoyer" />
    		</td>
    	</tr>
    	</table>
    	</form>
     
    </body>
    </html>
    Mes plus chaleureux remerciements
    Claudine

  16. #16
    Invité
    Invité(e)
    Par défaut
    Il fallait juste modifier (erreur d'écriture de ma part, mais faute de lecture de la tienne !) :
    $bd_id_categorie = mysql_real_escape_string($categorie);
    $bd_id_selection = mysql_real_escape_string($selection);
    par :
    $bd_id_categorie = mysql_real_escape_string($id_categorie);
    $bd_id_selection = mysql_real_escape_string($id_selection);

  17. #17
    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)bonjour Jreaux62,
    Parfait et pourtant j'y avait consacré pas mal de temps!
    Pourquoi l'expresson "$bd_id.....? Quelle est l'utilité du bd?
    Je vous cite:"Si tu veux récupérer les noms, alors il faut :
    - SOIT modifier les 2 selects pour récupérer directement les noms (et le reste du code en conséquence),
    - SOIT récupérer les noms A PARTIR des 2 ids récupérés (2 requêtes à faire).
    Voulez-vous modifier le début du formulaire joint au précédent message pour que puisse appliquer la 1ère méthode(modifier les 2 selects pour récupérer directement les noms) pour que j'essaie de trouver la solution?
    Sincères remerciements pour votre aide précieuse.
    Claudine

  18. #18
    Invité
    Invité(e)
    Par défaut
    $bd_id_......., c'est juste pour bien te FAIRE COMPRENDRE que ces variables :
    - doivent être PROTEGEE contre les injections SQL ;
    -> pour être utilisées dans les requêtes.

    On peut mettre ce qu'on veut, comme nom de variable.
    Mais comme je l'ai déjà dit : "utiliser des noms explicites évite les confusions".

    Ce qui est IMPORTANT, c'est de BIEN COMPRENDRE ce qu'on fait.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Claudine Voir le message
    1- SOIT modifier les 2 selects pour récupérer directement les noms (et le reste du code en conséquence),
    Voulez-vous modifier le début du formulaire joint au précédent message pour que puisse appliquer la 1ère méthode (modifier les 2 selects pour récupérer directement les noms) pour que j'essaie de trouver la solution?
    C'est simple :
    remplacer :
    $sel_selection = ($id_selection == $selection)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    <option value="<?php echo $id_selection; ?>"<?php echo $sel_selection; ?>><?php echo $nom_selection; ?></option>
    par :
    $sel_selection = ($nom_selection == $selection)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    <option value="<?php echo $nom_selection; ?>"<?php echo $sel_selection; ?>><?php echo $nom_selection; ?></option>
    + Idem pour nom_categorie.
    + autres changements, que je te laisse faire.

    => DANS CE CAS, c'est bien nom_selection et nom_categorie qu'on récupère depuis le formulaire.

  20. #20
    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,
    C'est tellement simple que je suis incapable d'obtenir le résultat escompté!
    Encore mieux, la 2ème liste(selection) reste vide! avec en plus la disparition du bouton envoyer. J'y perd mon latin et mes méninges surchauffent
    Voulez-vous regarder au formulaire pour signaler mes erreurs?
    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
     
    <?php
    // connexion a la base de donnees
    require_once('connect-bd.php');
     
    // initialisation/recuperation des différentes selections
    // categorie
    if (isset($_GET['nom_categorie'])){
    	$categorie= $_GET['nom_categorie'];
    }
    ?>
    <!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()
    	{
    	nom_categorie="+ document.form1.selectcategorie.value;
    	document.form1.selectcategorie.value=$categorie;	
     
    	}
    	</script>
     
    </head>
     
    <body>
     
    	<p>Essai formulaire</p>
     
    	<form name="form1" method="post" action="ListeslieesModifRepSelec.php">
    	<table width="100%" border="1">
    	<tr>
    	    <td>categorie:</td>
    		<td>
    			<select id="nom_categorie" name="selectcategorie" class="txt16-000000" onChange="javascript: modifcombo();">
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    <?php	
    		// Execution requete : tous les categories
    				$ma_req = "SELECT nom_categorie FROM T_CATEGORIES;";					  
    				$res_req = mysql_query($ma_req) or die("Selection table \"T_CATEGORIES\" 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_categorie = $une_ligne["id_categorie"];
    						$nom_categorie = $une_ligne["nom_categorie"];
    						$sel_categorie = ($nom_categorie == $categorie)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    				<option value="<?php echo $nom_categorie; ?>"<?php echo $sel_categorie; ?>><?php echo $nom_categorie; ?></option>
    <?php				} // fin while
    				} // fin if
    ?> 
    			</select>
    		</td>
    	</tr>
    	<tr>
    		<td>selection :</td>   
            <td>
    			<select id="nom_selection" name="selectselection" class="txt16-000000">		
    				<option value="">...</option><!-- Valeur vide pour forcer l'utilisateur a selectionner  -->
    <?php	  		// Execution requete : les selection des catégories selectionnées 
    			$ma_req = "SELECT nom_selection FROM T_SELECTIONS WHERE nom_categorie = '".$categorie."';";
    				$res_req = mysql_query($ma_req) or die("Selection table \"T_SELECTIONS\" 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_selection = $une_ligne["id_selection"];
    						$nom_selection = $une_ligne["nom_selection"];
    						$sel_selection = ($nom_selection == $selection)? ' selected="selected"' : ''; // option selectionnee ? oui : non
    ?>
    				<option value="<?php echo $nom_selection; ?>"<?php echo $sel_selection; ?>><?php echo $nom_selection; ?></option>	
    <?php				} // fin while
    				} // fin if
    ?> 
    			</select>
    		</td>
    	</tr>
    	<tr>
            <td colspan="2">
    			<input type="submit" name="envoyer" value="envoyer" />
    		</td>
    	</tr>
    	</table>
    	</form>
     
    </body>
    </html>
    sincères salutations
    Claudine

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/06/2014, 11h45
  2. Réponses: 1
    Dernier message: 02/12/2011, 10h46
  3. Réponses: 1
    Dernier message: 29/05/2010, 18h22
  4. relation entre 2 liste déroulantes
    Par all4youweb dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/01/2010, 15h26
  5. [MySQL] liste déroulante alimentée par BDD
    Par mitch46000 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 07/06/2007, 15h14

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