requète dans une liste déroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requète dans une liste déroulante

Re: requète dans une liste déroulante

par msi79 » 13 sept. 2013, 18:54

personne pour m aider ??

Re: requète dans une liste déroulante

par msi79 » 09 sept. 2013, 21:36

bonsoir @moogli j'ai réussi a régler mon problème . mon champ texte se rempli bien avec le mail du destinateur choisi . mais je veux ajouter un deuxième champ text qui va contenir le le contact du destinateur choisi . donc si on sélectionne un destinateur le premier champ se rempli avec son mail et le deuxième champ avec son contact. donc le code sql devient :
$req = mysql_query("SELECT dest_Mail,nom_dest,dest_Contact FROM destinateurs ORDER BY nom_dest DESC");
voici mon conde avec un seul champ texte qui marche :
<?php
include("connect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Document sans titre</title>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script type="text/javascript">
var afficheMail = function () {
    $('#fieldsemail').val($("#annee").val());
};
    </script>
    <style type="text/css">
        #selectedMail {
            margin: 5px 25px;
            border: thin solid #9acd32;
            padding: 5px;
        }
    </style>
</head>

<body>
<form method="post" action="reception.php">
    <p>

<select name="annee" id="annee" onchange="afficheMail()">
<option value="Choisissez">Choisissez</option>
<?php
$req = mysql_query("SELECT dest_Mail,nom_dest FROM destinateurs ORDER BY nom_dest DESC");
            while ($d = mysql_fetch_assoc($req)) {
                echo '<option value="' . $d['dest_Mail'] . '">' . $d['nom_dest'] . '</option>'.PHP_EOL;
                }
            ?>
        </select>
    </p>
    <div id="paragrapheSupplementaire">
        <input type="text" name="fieldsemail" id="fieldsemail" value=""/>
    </div>
    <p>
        <input type="submit" value="-- OK --"/>
    </p>
</form>

</body>
</html>
et voici ce que j'ai tenté avec les 2 champs text qui marche pas :
<?php
include("connect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Document sans titre</title>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script type="text/javascript">
var afficheMail = function () {
    $('#fieldsemail').val($("#annee").val());
	$('#fieldscontact').val($("#annee").val());
};
    </script>
    <style type="text/css">
        #selectedMail {
            margin: 5px 25px;
            border: thin solid #9acd32;
            padding: 5px;
        }
    </style>
</head>

<body>
<form method="post" action="reception.php">
    <p>

<select name="annee" id="annee" onchange="afficheMail()">
<option value="Choisissez">Choisissez</option>
<?php
$req = mysql_query("SELECT dest_Mail,nom_dest,dest_Contact FROM destinateurs ORDER BY nom_dest DESC");
            while ($d = mysql_fetch_assoc($req)) {
                echo '<option value="' . $d['dest_Mail'] . '">' . $d['nom_dest'] . '</option>'.PHP_EOL;
                }
            ?>
        </select>
    </p>
    <div id="paragrapheSupplementaire">
        <input type="text" name="fieldsemail" id="fieldsemail" value=""/>
    </div>
        <div id="paragrapheSupplementaire2">
        <input type="text" name="fieldscontact" id="fieldscontact" value=""/>
    </div>
    <p>
        <input type="submit" value="-- OK --"/>
    </p>
</form>

</body>
</html>

Re: requète dans une liste déroulante

par moogli » 09 sept. 2013, 11:23

tu as le nom parce que c'est la valeur qui affichée.

Tu peux, avec JQuery, récupérer ou le texte qui s'affiche ou la valeur de la liste déroulante (la différence entre le value et ce qu'il y a entre les tags option (<option> le texte affiché</option>).
si, à la construction, tu met en value l'adresse email tu la récupère avec jquery directement, plutôt que de prendre le texte affiché ;) (avec la méthode val() au lien de la méthode text()).

exemple http://api.jquery.com/val/


@+

Re: requète dans une liste déroulante

par msi79 » 08 sept. 2013, 20:02

oui je crois que j'avance et c'est vrais que je m'y connais pas trop en js .
maintenant le champ text est renseigné quand je sélectionne un élément de la liste déroulante . mais c'est pas encore ce que je veux . je veux que ce soit l'email de la personne sélectionnée dans le champ déroulant. or ici c'est le nom sélectionné qui apparait dans le champ text.

ensuite j'ai pas trop saisi cette partie "tu peux aussi créer un tableau javascript avec les infos et te permettre de générer la liste déroulante, ou utiliser une requête ajax pour avoir l'adresse email à partir de l'id, voir même tout coupler ensemble".

Re: requète dans une liste déroulante

par moogli » 08 sept. 2013, 17:54

rassure moi tu n'as pas compris le fonctionnement du code JS (avec JQuery) que tu as ajouté ?

il te suffit de modifier cette ligne $('#selectedMail').html($('#annee option:selected').text());
par
$('#fieldsemail').val($('#annee option:selected').text());

ensuite tu ne peux utiliser que deux valeurs avec l'option, c'est pour cela que j'ai mis l'id dans le value.
si l'adresse e-mail te semble plus pertinente tu peux très bien la mettre a la place de l'id, sachant que c'est un clef candidate, donc qui peux se substituer à la clef primaire, cela ne pose pas trop de soucis hors mis de performance (un index sur cette colonne serait une bonne idée d'ailleurs).

dans ton select tu récupère trois infos il y en a une inutile.

tu peux aussi créer un tableau javascript avec les infos et te permettre de générer la liste déroulante, ou utiliser une requête ajax pour avoir l'adresse email à partir de l'id, voir même tout coupler ensemble ;)

@+

Re: requète dans une liste déroulante

par msi79 » 08 sept. 2013, 16:36

j'ai ajouté le code sql . mais j'obtiens pas le résultat que je veux.
exemple .
Dubois a pour mail [email protected]

donc si je sélection dans la liste déroulante Dubois automatiquement son mail s'affiche dans le champ
<input type="text" name="fieldsemail" id="fieldsemail" value=""/>
afin que je puisse poster les 2 .

voici le code avec le sql que j'ai ajouté :
<?php
include("connect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Document sans titre</title>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#annee').change(function () {
                $('#selectedMail').html($('#annee option:selected').text());
            });
        });
    </script>
    <style type="text/css">
        #selectedMail {
            margin: 5px 25px;
            border: thin solid #9acd32;
            padding: 5px;
        }
    </style>
</head>

<body>
<form method="post" action="reception.php">
    <p>

        <select name="annee" id="annee">
            <option value="Choisissez">Choisissez</option>
            <?php
            $req = mysql_query("SELECT id_dest,nom_dest,dest_Mail FROM destinateurs ORDER BY nom_dest DESC");
            while ($d = mysql_fetch_assoc($req)) {
                echo '<option value="' . $d['id_dest'] . '">' . $d['nom_dest'] . '</option>'.PHP_EOL;
                }
            ?>
        </select>
    </p>
    <div id="paragrapheSupplementaire">
        <input type="text" name="fieldsemail" id="fieldsemail" value=""/>
    </div>
    <p>
        <input type="submit" value="-- OK --"/>
    </p>
</form>
<p id="selectedMail"></p>
</body>
</html>

Re: requète dans une liste déroulante

par moogli » 08 sept. 2013, 16:17

#emails n'existe pas dans le code fournit => cela ne peux fonctionner

voici un exemple fonctionnel, à toi de rajouter les requêtes SQL de mon précédent post
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Document sans titre</title>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#annee').change(function () {
                $('#selectedMail').html($('#annee option:selected').text());
            });
        });
    </script>
    <style type="text/css">
        #selectedMail {
            margin: 5px 25px;
            border: thin solid #9acd32;
            padding: 5px;
        }
    </style>
</head>

<body>
<form method="post" action="reception.php">
    <p>
        <select name="annee" id="annee">
            <option value="1">un@email</option>
            <option value="2">deux@email</option>
            <option value="3">trois@email</option>
            <option value="4">quatre@email</option>
            <option value="5">cinq@email</option>
            <option value="6">six@email</option>
            <option value="7">sept@email</option>
            <option value="8">huit@email</option>
            <option value="9">neuf@email</option>
            <option value="10">dix@email</option>
        </select>
    </p>
    <div id="paragrapheSupplementaire">
        <input type="text" name="fieldsemail" id="fieldsemail" value=""/>
    </div>
    <p>
        <input type="submit" value="-- OK --"/>
    </p>
</form>
<p id="selectedMail"></p>
</body>
</html>
@+

Re: requète dans une liste déroulante

par msi79 » 08 sept. 2013, 15:46

oui la liste déroulante est bien renseignée . mais moi je veux que lorsque je choisi un élément de cette liste déroulante automatiquement le champs texte soit renseigné par le mail de ce destinataire. (champ lié a liste déroulante). or c'est pas le cas . rien ne ce passe quand je sélectionne un élément de la liste déroulante

Re: requète dans une liste déroulante

par moogli » 08 sept. 2013, 15:36

[quote="msi79"vraiment je suis perdu avec le PDO donc j'ai laissé le PDO.
[/quote]

Tu n'instancie pas l'objet PDO donc ça ne fonctionne pas.
Pas plus que cela ne fonctionnerais sans un mysql_connect.

Quand a ton code tu n'as pas besoin de tableau temporaire, utilise directement la ressource de la requête.

La balise option n'as pas d'attribut name.

ton code peux ressembler à ceci
<?php
include("connect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Document sans titre</title>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#annee').change(function () {

                var Email = $("option:selected", this).attr('name');
                var Emails = $('#emails').html();
                if (Emails == "") {
                    $('#emails').html(Email);
                } else {
                    $('#emails').html(Emails + "<br>" + Email);
                }
            });
        });
    </script>
</head>

<body>
<form method="post" action="reception.php">
    <p>
        <select name="annee" id="annee">
            <option value="Choisissez">Choisissez</option>
            <?php
            $req = mysql_query("SELECT * FROM destinateurs ORDER BY nom_dest DESC");
            while ($d = mysql_fetch_assoc($req)) {
                echo '<option value="' . $d['id_dest'] . '">' . $d['nom_dest'] . '</option>'.PHP_EOL;
                }
            ?>
        </select>
    </p>
    <div id="paragrapheSupplementaire">
        <input type="text" name="fieldsemail" id="fieldsemail" value=""/>
    </div>
    <p>
        <input type="submit" value="-- OK --"/>
    </p>
</form>
</body>
</html>
tu peux tester, et voir ce que cela change ou si cela correspond a ce que tu veux. (cela doit afficher la liste déroulante avec dedans les noms des destinataires.

Par contre nommer "annee" cette liste ne me semble pas une bonne idée ;)


@+

Re: requète dans une liste déroulante

par msi79 » 08 sept. 2013, 14:11

bonjour . vraiment je suis perdu avec le PDO donc j'ai laissé le PDO.
mais malgré ça je n'est pas le résultat voulu . il n'y a plus d'erreur qui s'affiche pas j'ai pas ce que je veux .
voici mon nouveau code :
<?php
include("connect.php");
//$req = $pdo->prepare("SELECT * FROM destinateurs ORDER BY nom_dest DESC");
$req = mysql_query("SELECT * FROM destinateurs ORDER BY nom_dest DESC");
//$req->execute();
$destinataires = array();
//while($d = $req->fetch()){
	while($d = mysql_fetch_assoc($req)){
$id = $d['id_dest'];
$destinataires = $d['nom_dest'];
$email = $d['dest_Mail'];
$tab = array("id" => $id,"destinataire" => $destinataires,"email" => $email);
array_push($destinataires,$tab);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript">
        $(document).ready(function(){
           $('#annee').change(function(){
              
              var Email = $("option:selected",this).attr('name');
              var Emails = $('#emails').html();
              if(Emails == ""){
                  $('#emails').html(Email);
              }else{
                  $('#emails').html(Emails+"<br>"+Email);
              }       
           });
        });
</script>
</head>

<body>
      <form method="post" action="reception.php">
         <p>
            <select name="annee" id="annee">
            <option value="Choisissez">Choisissez</option>
            <?php
            for($i = 0; $i < count($destinataires); $i++){
            echo '
            <option name="'.$destinataires[$i]["email"].'" value="'.$destinataires[$i]["destinataire"].'">'.$destinataires[$i]["destinataire"].'</option>
            ';
            }
            ?>
            </select>
         </p>
         <div id="paragrapheSupplementaire">
            <input type="text" name="fieldsemail" id="fieldsemail" value="" />
         </div>
         <p>
           <input type="submit" value="-- OK --"/>
         </p>
      </form>
</body>
</html>

Re: requète dans une liste déroulante

par moogli » 08 sept. 2013, 11:14

La c'est clair $pdo n'existe pas y a pas comme un soucis dans l'inclusion ?

@+

Re: requète dans une liste déroulante

par msi79 » 07 sept. 2013, 22:59

on dirai que je me suis mal exprimé .
voici ce que je veux exactement.
j'ai une table destinateurs avec pour champ nom_dest et dest_Mail.
1. je récupère tous les noms dans une liste déroulante
2. a chaque fois que je choisi un nom de la liste déroulante automatiquement l'autre champ (champ texte) se rempli avec le mail de ce destinateurs.
voici l'erreur affichée :
Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\TUTO LISTE LIEE 2\test1.php on line 3
et voici ou j'en suis maintenant
<?php
include("connect2.php");
$req = $pdo->prepare("SELECT * FROM destinateurs ORDER BY nom_dest DESC");
$req->execute();
$destinataires = array();
while($d = $req->fetch()){
$id = $d['id_dest'];
$destinataire = $d['nom_dest'];
$email = $d['dest_Mail'];
$tab = array("id" => $id,"destinataire" => $destinataire,"email" => $email);
array_push($destinataires,$tab);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript">
        $(document).ready(function(){
           $('#annee').change(function(){
              
              var Email = $("option:selected",this).attr('name');
              var Emails = $('#emails').html();
              if(Emails == ""){
                  $('#emails').html(Email);
              }else{
                  $('#emails').html(Emails+"<br>"+Email);
              }       
           });
        });
</script>
</head>

<body>
      <form method="post" action="reception.php">
         <p>
            <select name="annee" id="annee">
            <option value="Choisissez">Choisissez</option>
            <?php
            for($i = 0; $i < count($destinataires); $i++){
            echo '
            <option name="'.$destinataires[$i]["email"].'" value="'.$destinataires[$i]["destinataire"].'">'.$destinataires[$i]["destinataire"].'</option>
            ';
            }
            ?>
            </select>
         </p>
         <div id="paragrapheSupplementaire">
            <input type="text" name="fieldsemail" id="fieldsemail" value="" />
         </div>
         <p>
           <input type="submit" value="-- OK --"/>
         </p>
      </form>
</body>
</html>

Re: requète dans une liste déroulante

par moogli » 07 sept. 2013, 22:43

tu as quoi comme résultat lorsque test ta requête (SELECT id_dest,nom_dest FROM destinateurs) dans un clients sql (phpmyadmin, mysql workbench etc etc).



@+

Re: requète dans une liste déroulante

par msi79 » 07 sept. 2013, 22:16

bonjour @moogli merci de me répondre . j’étais malade ce qui explique mon absence ces derniers temps.
j'ai pas encore trouvé la solution a mon problème.
@moogli j'ai corrigé le t qui manquait id_dest. le navigateur n'affiche pas de message d'erreur malgré que j'ai mi :
error_reporting = E_ALL
display_errors = On
display_startup_errors = On

mais le code fonctionne toujours pas .
voici ou j'en suis :
<?php
include("connect.php");
?>
<!doctype html>
<html lang="fr">
   <head>
      <meta charset="UTF-8"/>
      <title>Formulaire dynamique</title>
      <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
      <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
      <script type="text/javascript" src="jquery.js"></script>
   </head>
   <body>
      <form method="post" action="reception.php">
         <p>

            <select name="destinataire" id="destinataire" style="size:auto">
                <option></option>
                <?php
                $req = "SELECT id_dest,nom_dest  FROM destinateurs ";
                $res = mysql_query($req);
                if ($res !== false) {
                    while ($tab = mysql_fetch_assoc($res)) {
                        echo '<option value="' . $tab['id_dest'] . '" >' . $tab['nom_dest'] . '</option>';
                    }
                    mysql_free_result($res);
                } else {
                    echo '<p>Erreur SQL : ' . mysql_error() . '<br />Avec la requette :' . $req . '</p>';
                }
                ?>
            </select>
         </p>
         <div id="paragrapheSupplementaire">
            <input type="text" name="fieldsemail" id="fieldsemail" value="" />
         </div>
         <p>
           <input type="submit" value="-- OK --"/>
         </p>
      </form>
<script>
   var dataarray = <?php echo json_encode($dataarray);?>
  function anneeChange(){
     document.getElementById("fieldsemail").value=dataarray[document.getElementById("destinataire").value];
  }
</script>

<a href="test1.php">TEST</a>
<a href="test2.php">TEST2</a>
   </body>
</html>
 

Re: requète dans une liste déroulante

par moogli » 22 août 2013, 00:58

Il est impératif que tu :
[*] active touts les raport d'erreurs E_ALL pour le développement c'est obligatoire
[*] vérifie les scripts que l'on te fournit !

Le premier t'indiqueras l'erreur en l'affichant, le second t'aurais permis de voir le t qu'il manque à id_dest dans l'utilisation du jeux de résultat !

Du coup mon script ne peux fonctionner correctement vu que l'index n'existe pas dans tab.


Dernières choses, quand quelque chose ne va pas, regarde toujours le html généré pour voir s'il est conforme à ce que t attend.
Utilise var_dump / print_r pour afficher le contenu des variables $_ GET et $_POST et voir ce que le navigateur envois ;)

Ou mieux utiliser un déboggeur ;)

@+