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

PHP & Base de données Discussion :

liste liée php/Mysql


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut liste liée php/Mysql
    Bonjour,
    Je suis débutant, pouvez vous m'aidez?
    J'ai une base de donnée que j'arrive à exploiter avec un menu déroulant, mais je n'arrive pas à lier le deuxième menu déroulant.
    C'est à dire : dans ma table j'ai plusieurs "nom" identique et je voudrais afficher les détails en fonction du prénom choisi.
    Je suis assez clair !
    je joint le fichier.
    Merci pour votre aide

    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
    <head>
    	<title>Infocontact</title>
    </head>
     
        <body style="background-color: silver;">
    	<a href="101_nouveaucontact.php">Acceuil</a><br>
     
    <?php
     
    if(isset($_POST['quitter'])){
        header("location: http://localhost/Tableau%20de%20bord/mabase/");
    }
    //Intégrer le fichier des fonctions
    include("01_fonction.php");
     
    if(isset($_POST['info'])){
        $info=$_POST['info'];
    }
      ?>
            <h2>Vous souhaitez voir les coordonnées de :</h2>
    			<form name="info" method="post" action="102_infocontact.php">
                <p><select name="info">
     
                <?php
     
    		connectmabase();
     
    	 $sql = "select distinct nom from abonnes"; 
    $rep = mysql_query("$sql") ; 
    while($table_col = mysql_fetch_array($rep)) 
    { 
    echo "<option>".$table_col[nom]."</option>"; 
    } 
     
     
     ?>         
    <input type="submit" name="valider" value="Valider"/> 
                </select><br/></p>
     
     
     
            <p><?php
            /*attention à la gestion des libérations de mémoire
            c'est à la fin de chaque requête différente
            Plusieurs peuvent donc se succéder
            tandis que la connexion à la base et la déconnexion 
            ne se font qu'une seule fois quand la base entre ou sort du jeu*/
     
            //Commun à n'importe quelle option
     
            if (isset ($_POST['info'])){			
    			//connexion initiale de la db
                connectmabase();
     
                //Gérer chaque choix :
                //if($info=='nom'){
                   // $sql='SELECT * from abonnes WHERE nom';
    			    $sql="SELECT * from abonnes WHERE nom='".$_POST['info']."'";
                    $requete = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
                    while ($table_col = mysql_fetch_array($requete)) { 
                        echo $table_col['prenom'].' '.$table_col['nom']. '<br/>';
    					echo '<strong>Adresse :</strong>' .$table_col['adresse']. '<br/>';
    					echo '<strong>Ville : ' .$table_col['ville'].'</strong><br/>';
    					echo  $table_col['cp'];
                    }
                    mysql_free_result ($requete); 
                }
     
                else{
                    echo'Vous n\'avez rien sélectionné ?';
                }
     
            //clôture finale de la db
            mysql_close ();  
            //}
            ?></p>
     
    		<p><input type="submit" name="quitter" value="quitter"/></p>
     
    		</form>
     
    </body>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut au moins mettre des "value" dans tes "options" :

    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
    <?php
     
    connectmabase();
     
    echo '<h2>Vous souhaitez voir les coordonnées de :</h2>
    <form method="post" action="">';
     
    if (isset($_POST['nom'])) {
     
    	echo '<p>' . $_POST['nom'] . '</p>';
     
    	echo '<select name="id">';
    	$sql="SELECT id, prenom from abonnes WHERE nom='".mysql_real_escape_string($_POST['info'])."'";
    	$rep = mysql_query($sql); 
    	while($table_col = mysql_fetch_array($rep)) { 
    		echo '<option value="' .$table_col['id'] . '" >'.$table_col['prenom'].'</option>'; 
    	}
    	echo '</select>';
    }
    else {
    	echo '<select name="nom">':
    	$sql = "select distinct nom from abonnes"; 
    	$rep = mysql_query($sql); 
    	while($table_col = mysql_fetch_array($rep)) { 
    		echo '<option="' .$table_col['nom'] . '" >'.$table_col['nom'].'</option>'; 
    	} 
    	echo '</select>
    	</p>';
    }
     
    echo '<input type="submit" name="valider" value="Valider"/>';
     
    </form>
     
    if (isset($_POST['id'])) {
    				$sql="SELECT prenom, nom, adresse,ville from abonnes WHERE id= ".intval($_POST['id']);
                    $requete = mysql_query($sql); 
                    while ($table_col = mysql_fetch_array($requete)) { 
                        echo $table_col['prenom'].' '.$table_col['nom']. '<br/>';
    					echo '<strong>Adresse :</strong>' .$table_col['adresse']. '<br/>';
    					echo '<strong>Ville : ' .$table_col['ville'].'</strong><br/>';
    					echo  $table_col['cp'];
                    }
    }
    La première liste affiche les noms.
    Une fois que le nom est choisi on affiche la liste des prénoms.
    La liste des prénoms envoi l'id précis (j'ai mis "id" mais c'est évidemment le nom de ta colonne id à toi) de la personne qu'on veut.

    Evidemment d'un point de vue interface c'est sommaire.
    Si on veut quelque chose de plus fluide il faut passer par Ajax.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci,
    mais je n'ai pas réussi à exploiter ta modif.
    As tu un peu de temps à me consacrer et modifier mon fichier pour mieux comprendre?
    Merci

  4. #4
    Membre régulier
    Femme Profil pro
    Etudiante en informatique
    Inscrit en
    Janvier 2013
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante en informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 98
    Points : 95
    Points
    95
    Par défaut
    Comme dit précédemment, pour récuperer la valeur de l'option choisie dans ta liste il faut imperativement une value :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="dupond"> DUPOND </option>
    Lorsque l'utilisateur va selectionner DUPOND dans la liste, tu vas récupérer (râce à ta méthode POST) la valeur "dupond".

    Sinon, pour faire des listes déroulantes liées il faut mieux passer par AJAX.
    L'AJAX va te permettre de mettre à jour ta liste de prénom sans recharger la page, alors qu'en PHP tu seras obligé de recharger la page.. Ce qui n'est vraiment pas terrible du tout...

    Si tu tiens absolument à faire ça en PHP, tu peux toujours le faire grâce à une succession de POST...

  5. #5
    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
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <body style="background-color: silver;">
    	<a href="101_nouveaucontact.php">Acceuil</a><br>
     
    <?php
     
    if(isset($_POST['quitter'])){
        header("location: http://localhost/Tableau%20de%20bord/mabase/");
    }
    Tu ne peux plus utiliser la fonction header une fois que quelque chose a été déjà envoyé vers le navigateur.

    A+.

Discussions similaires

  1. [AJAX] 3 listes déroulantes liées PHP/MYSQL/AJAX
    Par zied.ellouze dans le forum AJAX
    Réponses: 2
    Dernier message: 06/09/2011, 12h58
  2. Réponses: 3
    Dernier message: 16/03/2011, 16h47
  3. [MySQL] Liste déroulante php & mysql
    Par soksabaidee dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/05/2010, 09h25
  4. [MySQL] problème remplissage liste dynamique php mysql
    Par jeinny dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 25/05/2009, 17h32
  5. Listes liées php/ajax/javasript
    Par johnson95 dans le forum Langage
    Réponses: 3
    Dernier message: 21/04/2008, 16h24

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