Liste déroulante + lien en php
mistick240
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
mistick240 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
mistick240 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterais qu'en sélectionnant un nom dans ma liste déroulante que cette valeur soit récupérer pour ensuite l'ajouter dans un URL
Voici mon code et je bloque sur ce point !
Merci pour votre aide
Code :
Je souhaiterais qu'en sélectionnant un nom dans ma liste déroulante que cette valeur soit récupérer pour ensuite l'ajouter dans un URL
Voici mon code et je bloque sur ce point !
Merci pour votre aide
Code :
<?php include '../conn.php'; ?> <!Doctype HTML> <html lang="fr"> <body> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="refresh" content="900;url=../logout.php" /> <link rel="shortcut icon" href="../image/logo.png" type="favicon/ico" /> <link rel="stylesheet" href="style2.css" /> </head> <br> <div><center> <p1> <!-- Tableau 2x2 --> <table width="50%" border="1" cellspacing="1" cellpadding="50"> <tr> <td bgcolor="#CCCCCC" height="50px"> <center>Test de 5 requêtes dans une liste déroulante <br></center> </td> <td align="center" bgcolor="#F00"> <?php echo '<select name="select" id="select_valeur" >'; $q = $conn->query("SELECT name FROM Poste_1 UNION SELECT name FROM Poste_2 UNION SELECT name FROM Poste_3 UNION SELECT name FROM Poste_5"); while ( $r = mysqli_fetch_array($q) ) { echo '<option>'.$r['name'].'</option>'; } echo '</select> <br />'; ?> </td> </tr> </tr> </table> </p1> <br><br> <p2> <!-- Bouton cliquable pour afficher --> <button class="favorite styled" >AFFICHER</button> </p2> <br><br><hr> <script type="text/javascript"> function Click_Button() { var valeur = document.getElementById("select_valeur").value; url = 'file:///C:\Users\\X\\Desktop\\nom1\\'+valeur+'.pdf' window.open(url, '_blank'); } </script> </body> </html>
A voir également:
- Liste déroulante + lien en php
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
4 réponses
Bonjour,
Soit tu places cette liste dans un <form ( un formulaire ) et tu récupères sa valeur une fois le formulaire "submit" ...
Soit, tu veux effectuer l'action dès que la valeur change dans ta liste .. et dans ce cas ça ne se fera pas en PHP .. mais en Javascript ( via l'évènement ONCHANGE )
et puis..
C'est à dire ?
Sous quelle forme ?
Pour en faire quoi ?
en sélectionnant un nom dans ma liste déroulante
Soit tu places cette liste dans un <form ( un formulaire ) et tu récupères sa valeur une fois le formulaire "submit" ...
Soit, tu veux effectuer l'action dès que la valeur change dans ta liste .. et dans ce cas ça ne se fera pas en PHP .. mais en Javascript ( via l'évènement ONCHANGE )
et puis..
l'ajouter dans un URL
C'est à dire ?
Sous quelle forme ?
Pour en faire quoi ?
Merci pour ta réponse,
En gros j'ai réalisé une liste déroulante avec tous les noms des fichiers qui sont dans ma BDD.
Ensuit je voudrais que quand l'user choisisse un nom et qu'il appuie sur le bouton afficher cela ouvre le pdf dans un autre onglet
Avant je faisais sans BDD avec du JS, mais j'avais tous mes documents dans un dossier et je faisais comme ceci :
Et ça fonctionnait mais trop de place prise sur le pc, j'ai donc pris une BDD online et j'ai mis tous mes documents dans une table sql (id, name, file) avec file en LONGBLOB et maintenant je voudrais que quand l'user choisisse le nom, ça affiche le pdf dans un onglet web.
Voici ce que donne ma partie front pour l'instant :

En gros j'ai réalisé une liste déroulante avec tous les noms des fichiers qui sont dans ma BDD.
Ensuit je voudrais que quand l'user choisisse un nom et qu'il appuie sur le bouton afficher cela ouvre le pdf dans un autre onglet
Avant je faisais sans BDD avec du JS, mais j'avais tous mes documents dans un dossier et je faisais comme ceci :
<script type="text/javascript"> function Click_Button() { var poste = document.getElementById("select").value; var num = document.getElementById("liste2").value; url = 'file:///C:\Users\\X\\Desktop\\'+poste +'\\'+num+'.pdf' window.open(url, '_blank'); } function choisir() { var liste = document.getElementById("select"); var numero = liste.selectedIndex; var valeur = liste.options[numero].value; var liste2 = document.getElementById("liste2"); var select1 = '<option>ONDSC</option><option>XIDFX</option><option>NDLSC</option><option>LUFVM</option><option>MKGUR</option><option>KJGCH</option><option>QAFIC</option><option>AWXTC</option><option>RIXLFC</option><option>YADYA</option><option>NUPOY</option><option>GDREL</option><option>LRMQM</option><option>QKYAQ</option><option>CVWDA</option><option>AGPKU</option><option>CAPEL</option>' var select2 = '<option>MHPHK</option><option>KRNKN</option><option>MUTYB</option><option>SEZTR</option><option>SMNQJ</option><option>NZLKF</option><option>EQNLR</option><option>OUPGT</option><option>DICAC</option><option>IARKN</option><option>SHNMA</option><option>VIYSI</option>' var select3 = '<option>SBWNA</option><option>LHAQR</option><option>ZKUAF</option><option>LGAFG</option><option>VAFAZ</option><option>GHLBE</option><option>BDLTU</option><option>LPSAR</option><option>SARIA</option><option>HEOOL</option><option>LAPNI</option><option>USSRA</option><option>OSPTT</option>' var select5 = '<option>TAMBO</option><option>URIAD</option><option>UEREB</option><option>ZABER</option><option>TADEL</option><option>PKULM</option>' var select0 = '<option>ONDSC</option><option>XIDFX</option><option>NDLSC</option><option>LUFVM</option><option>MKGUR</option><option>KJGCH</option><option>QAFIC</option><option>AWXTC</option><option>RIXLFC</option><option>YADYA</option><option>NUPOY</option><option>GDREL</option><option>LRMQM</option><option>QKYAQ</option><option>CVWDA</option><option>AGPKU</option><option>CAPEL</option><option>ONDSC</option><option>XIDFX</option><option>NDLSC</option><option>LUFVM</option><option>MKGUR</option><option>KJGCH</option><option>QAFIC</option><option>AWXTC</option><option>RIXLFC</option><option>YADYA</option><option>NUPOY</option><option>GDREL</option><option>LRMQM</option><option>QKYAQ</option><option>CVWDA</option><option>AGPKU</option><option>CAPEL</option><option>SBWNA</option><option>LHAQR</option><option>ZKUAF</option><option>LGAFG</option><option>VAFAZ</option><option>GHLBE</option><option>BDLTU</option><option>LPSAR</option><option>SARIA</option><option>HEOOL</option><option>LAPNI</option><option>USSRA</option><option>OSPTT</option><option>TAMBO</option><option>URIAD</option><option>UEREB</option><option>ZABER</option><option>TADEL</option><option>PKULM</option>' switch(valeur){ case "Sans Poste": liste2.innerHTML = select0; break; case "Poste 1": liste2.innerHTML = select1; break; case "Poste 2": liste2.innerHTML = select2; break; case "Poste 3": liste2.innerHTML = select3; break; case "Poste 5": liste2.innerHTML = select5; break; } } </script>
Et ça fonctionnait mais trop de place prise sur le pc, j'ai donc pris une BDD online et j'ai mis tous mes documents dans une table sql (id, name, file) avec file en LONGBLOB et maintenant je voudrais que quand l'user choisisse le nom, ça affiche le pdf dans un onglet web.
Voici ce que donne ma partie front pour l'instant :
oula... stocker des fichiers en blob dans une bdd ... mauvaise idée et mauvaise pratique ...
Tu vas vite saturer la base de données ..
Mais bon..
Pour en revenir à ton besoin,
Avec un peu de JS, tu pourrais facilement ouvrir une nouvelle page qui pointerait vers un fichier php qui attendrait, en paramètre, l'ID du document.
Au niveau de ta liste déroulante, il faudrait déjà ajouter ces id dans les VALUE de tes OPTIONS
comme ceci
Au niveau de ta balise select, comme indiqué précédemment.. utiliser l'event ONCHANGE
qui déclencherait un script js de ce genre
et enfin, dans le fichier chemin/vers/script/php/pour/generer/pdf/a/partir/du/blob.php
il suffit de récuper l'id passé dans l'url via la variable $_GET
Aller chercher en BDD le blob correspondant ( une simple requête avec un WHERE sur l'id )
Générer le fichier à partir du blob ( des tonnes d'exemples existent sur le net à ce sujet )
Tu vas vite saturer la base de données ..
Mais bon..
Pour en revenir à ton besoin,
Avec un peu de JS, tu pourrais facilement ouvrir une nouvelle page qui pointerait vers un fichier php qui attendrait, en paramètre, l'ID du document.
Au niveau de ta liste déroulante, il faudrait déjà ajouter ces id dans les VALUE de tes OPTIONS
comme ceci
while ( $r = mysqli_fetch_array($q) ) { echo '<option value="'.$r['id'].'">'.$r['name'].'</option>'; }
Au niveau de ta balise select, comme indiqué précédemment.. utiliser l'event ONCHANGE
qui déclencherait un script js de ce genre
var liste = document.getElementById("select"); liste.addEventListener('change',function(){ let id = this.value; let url = " chemin/vers/script/php/pour/generer/pdf/a/partir/du/blob.php?id=" + id; window.open(url,'_blank'); });
et enfin, dans le fichier chemin/vers/script/php/pour/generer/pdf/a/partir/du/blob.php
il suffit de récuper l'id passé dans l'url via la variable $_GET
Aller chercher en BDD le blob correspondant ( une simple requête avec un WHERE sur l'id )
Générer le fichier à partir du blob ( des tonnes d'exemples existent sur le net à ce sujet )
J'ai 1Go de stockage dans ma BDD et je penses en utiliser environs 100-200Mo grand max
Après c'est la première fois que j'essaye ce type de manœuvre entre BDD et page HTML
Et sur mon bouton pour afficher ce blob, on fait un fonction "onclick" ?
Après c'est la première fois que j'essaye ce type de manœuvre entre BDD et page HTML
Et sur mon bouton pour afficher ce blob, on fait un fonction "onclick" ?
Ah ben j'avais directement attaché l'évènement sur la liste ( vu qu'au départ c'est ce que tu demandais )
Mais si tu as un bouton..
Il n'y a même plus besoin de javascript ...
Il suffit de mettre ta liste et ton bouton dans un formulaire (<form action="chemin/vers/script/php/pour/generer/pdf/a/partir/du/blob.php" >)
et ça va se faire tout seul
liste.addEventListener('change',function(){
Mais si tu as un bouton..
Il n'y a même plus besoin de javascript ...
Il suffit de mettre ta liste et ton bouton dans un formulaire (<form action="chemin/vers/script/php/pour/generer/pdf/a/partir/du/blob.php" >)
et ça va se faire tout seul
c'est possible quelque chose de ce type :
<div><center> <p1> <!-- Tableau 2x2 --> <table width="50%" border="1" cellspacing="1" cellpadding="50"> <tr> <td bgcolor="#CCCCCC" height="50px"> <center>Tous les fichiers<br></center> </td> <td align="center" bgcolor="#F00"> <form name="fichier" enctype="multipart/form-data" method="post" > <?php echo '<select name="select" id="select_valeur" >'; $q = $conn->query("SELECT name FROM all_file"); while ( $r = mysqli_fetch_array($q) ) { echo '<option value="'.$r['id'].'">'.$r['name'].'</option>'; } echo '</select> <br />'; ?> </td> </tr> </tr> </table> <input type="submit" name="submit" class="favorite styled" /> </form> </p1>