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 :

SQL PHP liste déroulante méthode d'insertion ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut SQL PHP liste déroulante méthode d'insertion ?
    Bonjour à tous,

    Voila je voulais savoir si c'est possible de faire une liste déroulante avec les données : A;B;C;D;E;F qui correspondra à des id : 1;2;3;4;5;6 qui seront stockés dans une table "batiment" sachant que les données seront envoyé dans la table "salle"

    Table "batiment"
    -idBat= 1;2;3;4;5;6
    -Lettre=A;B;C;D;E;F
    -Nom=al;bo;ce;de;ef;fe

    Table "salle"
    -id=3;6;4;5 (auto increment)
    -idBat= cela correspondra au idBat de la table batiment = 1;2;3;4;5;6
    -numSalle= 502

    Voila j'espere que vous avez compris

    Si vous avez besoin de plus d'informations n'hésitez pas

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 499
    Par défaut
    Saut,

    Il faut d'abord te connecter à la base de donnée avec un driver (PDO ou mysqli) puis tu lance une requête qui renvoie toutes les lignes de la table bâtiment.

    Exemple de PDO:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $connection=new PDO('mysql:host=localhost;dbname=nom_de_base', 'nom_utilisateur', 'mot_de_passe', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
    $req="select idBat,Lettre from batiment";
    $prepared=$connection->prepare($req);
    $prepared->execute();
    $select='<select>';
    if($prepared->rowCount()>0){ 
       while($data=$prepared->fetch(PDO::FETCH_ASSOC)){
          $select.= "<option value='".$data['idBat']."'>".$data['Lettre']."</option>";
       }
    }
    else {$select.="<option value=0>Aucune donnée n'a été trouvée</option>";}
    $select.="</select>";
    echo $select;
    $connection=null;

    puis pour insérer l'id bâtiment dans la table salle, tu n'as qu'a prendre la "value" de l'option sélectionnée.

  3. #3
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    D'accord merci pour ton aide mais j'ai pas trop compris le code avec le select

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 499
    Par défaut
    qu'est ce que tu n'as pas compris ? la concaténation en php ?

  5. #5
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $req="select idBat,Lettre from batiment";
    $prepared=$connection->prepare($req);
    $prepared->execute();
    $select='<select>';
    if($prepared->rowCount()>0){ 
       while($data=$prepared->fetch(PDO::FETCH_ASSOC)){
          $select.= "<option value='".$data['idBat']."'>".$data['Lettre']."</option>";
       }
    }
    else {$select.="<option value=0>Aucune donnée n'a été trouvée</option>";}
    $select.="</select>";
    echo $select;
    $connection=null;
    j'ai compris que la requête affiche "idbat et lettre" puis si il trouve quelque chose il prends 1 comme valeur et on rentre dans le if et la je suis plus

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 499
    Par défaut
    1-c'est une boucle while qui stocke les items trouvés de $prepared->fetch(PDO::FETCH_ASSOC) dans la variable $data.
    $prepared->fetch(PDO::FETCH_ASSOC) retourne un tableau ayant la structure :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [
       ["idBat"=>1,"Lettre"=>"A"],
       ["idBat"=>2,"Lettre"=>"B"],
       ["idBat"=>3,"Lettre"=>"C"],
       ["idBat"=>4,"Lettre"=>"D"],
       ["idBat"=>5,"Lettre"=>"E"],
       ["idBat"=>6,"Lettre"=>"F"]
    ];
    maintenant il va falloir parcourir ce tableau pour créer les options selon ses valeurs "idBat" et "Lettre" :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $select="<select>";//ouverture de la balise <select>
    while($data=$prepared->fetch(PDO::FETCH_ASSOC)){//on ajoute les options dans la variable $select
       $select.= "<option value='".$data['idBat']."'>".$data['Lettre']."</option>";
       /* résultat :
       <select>
         <option value="1">A</option>
         <option value="2">B</option>
         <option value="3">C</option>
         <option value="4">D</option>
         <option value="5">E</option>
         <option value="6">F</option>
       */
    }
    $select.="</select>"; /*On ferme la balise <select> qu'on a ouvert au début du script, c'est équivalent à $select=$select."</select>";*/

    2-cette ligne
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $select.= "<option value='".$data['idBat']."'>".$data['Lettre']."</option>";

    est équivalente à
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $select=$select."<option value='".$data['idBat']."'>".$data['Lettre']."</option>";

  7. #7
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    D'accord je crois que j'ai compris, je reviens vers toi si j'ai un prboleme ^^

    Merci pour ta précieuse aide ça fait toujours plaisir d'en avoir

  8. #8
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    Voila j'ai tester ton code ^^

    le problème c'est que c'est pas vraiment ce que je veux faire, je veux bien faire un liste mais comment faire pour envoyé les données sélectionnées et les envoyé dans une autre table aura IDBAT cela correspondra au meme idée que IDBAT de la table bâtimentNom : Capture d’écran 2019-01-29 à 09.10.48.png
Affichages : 1649
Taille : 28,2 Ko

  9. #9
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 499
    Par défaut
    Salut,
    Le code que je t'ai envoyé ne fait que remplir les <option> du <select>, et pour insérer le id bâtiment de l'option sélectionnée, normalement tu dois avoir un formulaire et un bouton submit.

    qu'est ce que tu as mis comme codes php et html ?

  10. #10
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    J'ai essayé quelques trucs mais je rame un peu

    du coup j'ai fais ça mais voila

    Code html : 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
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
                      <?php
                     $connection=new PDO('mysql:host=localhost;dbname=**', '**', '**', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
                     $req="select idBat, lettre from batiment";
                     $prepared=$connection->prepare($req);
                     $prepared->execute();
                     $select='<select>';
                     if($prepared->rowCount()>0){ 
                        while($data=$prepared->fetch(PDO::FETCH_ASSOC)){
                           $select.= "<option value='".$data['idBat']."'>".$data['lettre']."</option>";
                        }
                     }
                     else {$select.="<option value=0>Aucune donnée n'a été trouvée</option>";}
                     $select.="</select>";
                     echo $select;
                     $connection=null;
                      ?>
                <input  type="text" name="numSalle" />
        <button ><span>Valider</span></button>
        </form>
    </body>
    </html>


    Code php : 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
     
    <?php
     
       $bdd = include 'connect_bdd.php';
       $sql='INSERT INTO salle(lettre, numSalle) VALUES (? , ?)';
     
    try { 
       //la ligne qui lance la requête préparée
       $stmt = $bdd->prepare($sql);
       //on affecte les marqueurs précis sur les filtres
     
       $lettre=$_POST['lettre'];
       $numSalle=$_POST['numSalle'];
     
       $stmt->execute(array($lettreBat , $numSalle));
       // on peut récupérer le nombre de lignes affectées 
       $nb_insert = $stmt->rowCount();
       echo $nb_insert.' insertion effectuée<br/>';
       unset($bdd);
    } 
    catch (Exception $e) {
       //s'il y a un problème PHP ou SQL, tout s'affichera ici
       print "Erreur ! " . $e->getMessage() . "<br/>";
    }
     
    ?>

  11. #11
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 499
    Par défaut
    Ehh oui... ton code n'est pas correcte et tu as confondu les champs de tes tables...

    Il faut qu'on se mettes d'accord sur la structure de tes deux tables

    la table batiment
    Pièce jointe 445691


    la table salle
    Pièce jointe 445687


    Le fichier connect_bdd.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    $bdd=new PDO('mysql:host=localhost;dbname=***', '***', '***', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
    ?>

    Ta page index.php
    Code php : 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
     
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
    	<script
    	  src="https://code.jquery.com/jquery-3.3.1.js"
    	  integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
    	  crossorigin="anonymous">
    	</script>
    	<script>
    		$(document).ready(function(){
    			var idbatiment,salle;
    			$('#valider').click(function(){
    				idbatiment=$('#select_batiment option:selected').val();
    				salle=$('#numSalle').val();
    				console.log('idbat :'+idbatiment+', salle :'+salle);
    				$.ajax({
    					url:'add.php',
    					method:'post',
    					data:{lettre:idbatiment,numSalle:salle},
    					success:function(data){
    						console.log(data);
    					},
    					error:function(err){alert("Erreur ajax :"+err);}
    				});
    			});
    		});
    	</script>
    </head>
    <body>
    	<form>
    	  <?php
    		 include 'connect_bdd.php';
    		 $req="select idBat, lettre from batiment";
    		 $prepared=$bdd->prepare($req);
    		 $prepared->execute();
    		 $select='<select id="select_batiment">';
    		 if($prepared->rowCount()>0){ 
    			while($data=$prepared->fetch(PDO::FETCH_ASSOC)){
    			   $select.= "<option value='".$data['idBat']."'>".$data['lettre']."</option>";
    			}
    		 }
    		 else {$select.="<option value=0>Aucune donnée n'a été trouvée</option>";}
    		 $select.="</select>";
    		 echo $select;
    		 $bdd=null;
    	  ?>
    	<input  type="text" id="numSalle" name="numSalle" />
        <button id="valider">Valider</button>
        </form>
    </body>
    </html>

    Le fichier add.php
    Code php : 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
     
    <?php
    include 'connect_bdd.php';
    $sql='INSERT INTO salle(idBat, numSalle) VALUES (? , ?)';
     
    try { 
       //la ligne qui lance la requête préparée
       $stmt = $bdd->prepare($sql);
       //on affecte les marqueurs précis sur les filtres
     
       $lettre=$_POST['lettre'];
       $numSalle=$_POST['numSalle'];
     
       $stmt->execute(array($lettre , $numSalle));
       // on peut récupérer le nombre de lignes affectées 
       $nb_insert = $stmt->rowCount();
       echo $nb_insert.' insertion effectuée<br/>';
       unset($bdd);
    } 
    catch (Exception $e) {
       //s'il y a un problème PHP ou SQL, tout s'affichera ici
       print "Erreur ! " . $e->getMessage() . "<br/>";
    }
     
    ?>

  12. #12
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    euh d'accord ça fonctionne mais c'est hyper galere

    On peut pas faire plus simple ? sinon pas grave c'est gentil quand même
    merci

  13. #13
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 499
    Par défaut
    apparemment c'est l'utilisation de jQuery (ce n'est qu'une bibliothèque de javascript) qui te pose problème, c'est pour ça que ça te parait hyper galère

    Sinon tu peux le faire sans jQuery mais avec un bouton de type "submit" et tu ajoutes l'attribut action au form <form action="chemin_vers_add.php"> , puis après l'insertion tu fais une redirection vers la page initiale index.php.

  14. #14
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    Oui effectivement je ne encore aucune connaissance en JS je vais essayer de faire comme ça alors

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2008, 12h30
  2. [JS-PHP] Liste déroulante générée dynamiquement
    Par Sytchev3 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 18/09/2007, 17h43
  3. [PHP-JS] Problème javascript php liste déroulante
    Par bodysplash007 dans le forum Langage
    Réponses: 2
    Dernier message: 26/03/2007, 11h06
  4. php , liste déroulante
    Par marie4449 dans le forum Langage
    Réponses: 3
    Dernier message: 22/03/2007, 12h45
  5. [SQL] pb liste déroulante
    Par lecail65 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 31/07/2006, 11h11

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