Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PDO]Inserer une variable php dans une requete SQL

Sujet résolu
    11 janvier 2020 à 20:37:00

    Bonjour,

    Je voudrais récuperer la valeur d'un select pour le mettre dans une requête SQL. A force de regarder partout, je suis un peu perdu :'(

    voici le code:

    <?php
    	session_start();
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>ALBUM</title>
    	<link rel="stylesheet" type="text/css" href="frame.css">
    </head>
    <body>
    	<?php
    		try	{
    				$bdd = new PDO('mysql:host='.$_SESSION['domaine'].';dbname='.$_SESSION['base'].';charset=utf8', $_SESSION['user'], $_SESSION['mdp'],array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    			}
    		catch (Exception $e)
    		{
            die('Erreur : ' . $e->getMessage());
    		}
    	?>
    
    	<div id="B"class="grid-album" >
    		<div class="menu-gauche">
    			<h3><?php echo"Bienvenue dans la ". $_SESSION['base']; ?></h3>
    
    			<?php
    		//Construction du select pays
    				$reponse=$bdd->query('SELECT DISTINCT pays FROM timbre');
    			?>
    			<FORM method="POST" action="page_album.php">
    			<p><label>Selectionnez le pays : </label>
    			<select name="choix_pays" id="choix_pays" onchange="selectpays()" >;
    			<option value="" selected="selected">---</option>
    			<?php
    				while ($ligne=$reponse->fetch())
    				{
    				echo "<option value='".$ligne[0]."'>".$ligne[0]."</option>";
    				}
    			?>
    			</select>
    			<input type="hidden" id="select_pays" name="select_pays" value="">
    			</FORM>
    
    			<?php
    				$mon_pays = $_GET['select_pays'];
    				echo $mon_pays;
    		//Construction liste à puce par année
    				$reponse = $bdd->prepare('SELECT DISTINCT annee FROM timbre WHERE pays = ?');
    				$reponse->execute(array('?????'));
    				echo '<ul>';
    					while ($donnees = $reponse->fetch())
    					{			
    					echo'<li>'.$donnees['annee']. '</li>';
    					}	
    				echo '</ul>';
    				$reponse->closeCursor();
    			?>
    		</div>
    		<div class="album">ALBUM</div>
    	</div>
    </body>
    </html>

    Je construit mon select dynamiquement, ca c'est bon, mais après ??

    Merci pour votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      11 janvier 2020 à 22:19:20

      Bonjour,

      il manque un bouton submit à ton formulaire il me semble non?

      ensuite, dans la 2e partie php tu dois gérer la variable $_POST ( et pas $_GET qui concerne les variables dans l'URL!), $_POST qui est vide la 1ere fois, puis remplie par le formulaire lorsque tu l'envoie la 2eme fois avec la valeur sélectionnée.

      enlève aussi le input hidden, inutile, la valeur sélectionnée est contenue dans $_POST['choix_pays'] ...

      • Partager sur Facebook
      • Partager sur Twitter
        25 janvier 2020 à 15:09:51

        Bonjour,

        désolé de ne pas avoir répondu, petite absence :)

        du coup, je reprends. En fait je récupère la valeur par js, mais comment faire après pour utiliser cette valeur dans ma requête.

        <?php
        	session_start();
        ?>
        <!DOCTYPE html>
        <html>
        <head>
        	<title>ALBUM</title>
        	<link rel="stylesheet" type="text/css" href="frame.css">
        </head>
        <body>
        	<?php
        		try	{
        				$bdd = new PDO('mysql:host='.$_SESSION['domaine'].';dbname='.$_SESSION['base'].';charset=utf8', $_SESSION['user'], $_SESSION['mdp'],array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
        			}
        		catch (Exception $e)
        		{
                die('Erreur : ' . $e->getMessage());
        		}
        	?>
        
        	<div id="B"class="grid-album" >
        		<div class="menu-gauche">
        			<h3><?php echo"Bienvenue dans la ". $_SESSION['base']; ?></h3>
        
        			<?php
        		//Construction du select pays
        				$reponse=$bdd->query('SELECT DISTINCT pays FROM timbre');
        			?>
        		<form name="form_pays">
        			<p><label>Selectionnez le pays : </label>
         			<select name="choix_pays" id="choix_pays" onchange="selectpays()" >;
        
        			<option value="" selected="selected">---</option>
        			<?php
        				while ($ligne=$reponse->fetch())
        				{
        				echo "<option value='".$ligne[0]."'>".$ligne[0]."</option>";
        				}
        			?>
        			</select>
        <!-- 			<input type="hidden" id="select_pays" name="select_pays" value=""> -->
        		</form>
        
        			<?php
        		//Construction liste à puce par année
        				$reponse = $bdd->prepare('SELECT DISTINCT annee FROM timbre WHERE pays = ?');
        				// $reponse->execute(array('Angola'));//pour test
        				$reponse->execute(array('Variable select_pays'));//pour test
        				echo '<ul>';
        					while ($donnees = $reponse->fetch())
        					{			
        					echo'<li>'.$donnees['annee']. '</li>';
        					}	
        				echo '</ul>';
        				$reponse->closeCursor();
        			?>
        		</div>
        
        		<div class="album">ALBUM</div>
        		
        	</div>
        	<script src="grid.js"></script>
        </body>
        </html>

        et mon js

        function selectpays(){
        	document.getElementById('select_pays').value = document.getElementById('choix_pays').value;
        }

        la ou c'est écrit "Angola" il me faut la valeur sélectionnée ):

        Merci pour votre aide



        • Partager sur Facebook
        • Partager sur Twitter
          25 janvier 2020 à 15:38:33

          Salut,

          as-tu eu l'idée d'aller voir les cours basiques avant de poser une question si basique ?

          Non parce que là...

          • Partager sur Facebook
          • Partager sur Twitter
            25 janvier 2020 à 15:51:42

            Bonjour christouphe,

            j'ai suivi les cours sur openclassroom, mais je t'avoue que là je me mélange un peu les pinceaux,

            alors si tu as une suggestion je suis tout à ton écoute. :)

            $reponse->execute(array('Variable select_pays'));

            c'est dans cette ligne que je veux utiliser mon select.

            Merci

            -
            Edité par Stef_Dev 25 janvier 2020 à 16:39:10

            • Partager sur Facebook
            • Partager sur Twitter
              27 janvier 2020 à 9:23:26

              Bonjour,

              Manque de recherche

              La question que vous posez est très fréquente, cela démontre un manque de recherche évident. Internet et ce forum fourmillent de ressources répondant à votre besoin.

              Je vous invite à effectuer de vraies recherches qui sont à la base d'un bon apprentissage…

              Stef_Dev a écrit:

              $reponse->execute(array('Variable select_pays'));

              c'est dans cette ligne que je veux utiliser mon select.

              pifou25 a écrit:

              tu dois gérer la variable $_POST ( et pas $_GET qui concerne les variables dans l'URL!), $_POST qui est vide la 1ere fois, puis remplie par le formulaire lorsque tu l'envoie la 2eme fois avec la valeur sélectionnée

              Commence par lire les propositions données, les appliquer, et rechercher un peu. Au pire le cours PHP : https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/914293-lisez-des-donnees#/id/r-2175368

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

              [PDO]Inserer une variable php dans une requete SQL

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown