requète dans une liste déroulante

Eléphant du PHP | 162 Messages

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>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

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 ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 162 Messages

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".

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

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/


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 162 Messages

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>

Eléphant du PHP | 162 Messages

13 sept. 2013, 18:54

personne pour m aider ??