Problème de récupération de donnée via un <select>

Résolu
creaDB Messages postés 28 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 25 mars 2009 - 25 févr. 2009 à 12:37
creaDB Messages postés 28 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 25 mars 2009 - 27 févr. 2009 à 11:21
Bonjour tout le monde je poste le code en 1er lieu :

 Séléctionnez le patient à contacter :
            </td>
            <td>         
            <select size="5" style="width:400px" name="liste_patient">
                <?php $sql = mysql_query("SELECT nom,nom_jf,prenom,mail FROM $table_patients ORDER BY nom ASC");
                    if (mysql_num_rows($sql) > 0)
                            {
                                while ($res = mysql_fetch_array($sql))
                                {
                                    echo '<option>';
                                   
                                if (!$res["nom"])
                                    {
                                        echo ''.$res["nom_jf"].'';
                                    }
                                else
                                    {
                                        echo ''.$res["nom"].' '.$res["nom_jf"].' ';
                                    }     
                                        echo ''.$res["prenom"].'</option>\n';
                                }
                            }                    
                ?>
            </select>
            </td>
            <tr>
            <td width="100px" align="right">
            E-Mail :
            </td>
            <td>       
            " size="50px" style="color:red" readonly="readonly" />
            </td>
            </tr>
        </table>

Voilà, le problème viens de $res["mail"] je pense que le code est faux vu que je ne récupère pas la valeur mail de la table patient si qq à une petite idée je suis preneur
MERCI !!!!!

14 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
25 févr. 2009 à 15:30
oh ok on n'avais pas compris !!!

donc effectivement ton <?php echo .$res["mail"]; ?> ne sert a rien :)

il faut soit passer par ajax soit simplement avec javascript et donc executer ta fonction JS ou AJAX avec onchange="mafonction()" au niveau de la balise select :

exemple de fonction JS :

<script type="text/javascript">
function getEmail(pMail){
   document.getElementById('email').value = pMail;
}
</script>

Et modifier ton code comme ceci :

 Séléctionnez le patient à contacter :
            </td>
            <td>         
            <select size="5" style="width:400px" name="liste_patient" onchange="getEmail(this.value)">
                <?php $sql = mysql_query("SELECT nom,nom_jf,prenom,mail FROM $table_patients ORDER BY nom ASC");
                    if (mysql_num_rows($sql) > 0)
                            {
                                while ($res = mysql_fetch_array($sql))
                                {
                                    echo '<option value=".$res["mail"].">';
                                   
                                if (!$res["nom"])
                                    {
                                        echo ''.$res["nom_jf"].'';
                                    }
                                else
                                    {
                                        echo ''.$res["nom"].' '.$res["nom_jf"].' ';
                                    }     
                                        echo ''.$res["prenom"].'</option>\n';
                                }
                            }                    
                ?>
            </select>
            </td>
            <tr>
            <td width="100px" align="right">
            E-Mail :
            </td>
            <td>       
           

            </td>
            </tr>
        </table>
3
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
25 févr. 2009 à 15:32
petite erreur :


id="email" name="email" value="" size="50px" style="color:red" readonly="readonly" />
3
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
25 févr. 2009 à 12:49
Hello,

Actuellement tu mets : <?php echo"".$res["mail"]."";?>

essaie en changeant cela par :

<?php echo $res["mail"]; ?>
0
creaDB Messages postés 28 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 25 mars 2009
25 févr. 2009 à 12:55
Merci pour ta réponse mais aucun effet 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
25 févr. 2009 à 13:23
Arf, ok je vois le probleme !

tu ferme ta boucle while avant de faire echo $res["mail"]; , du coup $res n'existe pas !

Essaie avec sa :

Séléctionnez le patient à contacter :
            </td>
            <td>         
            <select size="5" style="width:400px" name="liste_patient">
                <?php $sql = mysql_query("SELECT nom,nom_jf,prenom,mail FROM $table_patients ORDER BY nom ASC");
                    if (mysql_num_rows($sql) > 0)
                            {
                                while ($res = mysql_fetch_array($sql))
                                {
                                    echo '<option>';
                                   
                                if (!$res["nom"])
                                    {
                                        echo ''.$res["nom_jf"].'';
                                    }
                                else
                                    {
                                        echo ''.$res["nom"].' '.$res["nom_jf"].' ';
                                    }     
                                        echo ''.$res["prenom"].'</option>\n';
                                           
                ?>
            </select>
            </td>
            <tr>
            <td width="100px" align="right">
            E-Mail :
            </td>
            <td>       
           
" size="50px" style="color:red"
readonly="readonly" />
            </td>
            </tr>
        </table>
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
25 févr. 2009 à 13:25
<?php echo $res["mail"];  } } ?>
0
cs_canibale Messages postés 33 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 28 février 2009
25 févr. 2009 à 13:33
Bonjour,
 Si je puis te donner quelques conseils, pour ta requête je rajouter un or die(mysql_error());
Si tu veux pas laisser le mysql_error pour éviter qu'un méchant n'hackeur puisse récupérer plus d'informations sur la structure de tes tables en provoquant une erreur je te propose la solution suivante : création d'une constante DEBUG qui sera sur true lorsque tu veux afficher les erreurs et sur false dans le cas contraire. tu aurais donc une fonction, par exemple, comme suit :
function mysql_debug() {
        if(DEBUG = = true){
    return die('<center>Erreur MySQL n°'.mysql_errno().' :
'.mysql_error().' </center>');
        }
}
et à la fin de tes requetes tu mettrais, à la place de "or die(mysql_error());", un "or mysql_debug();".
Bon bon c'est un peu hors sujet ça...pour ton problème il me semble que quand tu fais ça while "($res = mysql_fetch_array($sql))" l'array $res est disponible uniquement dans la boucle, ton $res['Mail'] n'étant pas dans la boucle ça marche pas.
essaye donc de mettre le $res = mysql_fetch_array($sql) avant la boucle et de mettre une boucle foreach à la place de la while.
mais à ce moment là l'adresse mail a t'elle un lien avec le patient ? est ce l'adresse du patient ? si oui je pense qu'il faut revoir le code.
0
cs_canibale Messages postés 33 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 28 février 2009
25 févr. 2009 à 13:36
Orange73 à répondu avant moi =(
0
creaDB Messages postés 28 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 25 mars 2009
25 févr. 2009 à 14:25
Merci pour vos réponses à tout les deux ( + le ptit zel )

J'ai essayé de fermer la boucle plus loin comme indiqué mais le pbl c'est que maintenant il vient incrusté dans la boucle :
E-Mail :
            </td>
            <td>       
           
" size="50px" style="color:red"
readonly="readonly" />
            </td>
            </tr>

Donc il vient affiché plusieurs fois le texte et il met les noms des patients dedans plutôt que le mail lol 
Je pense que je vais plutôt m'orienter vers de l'Ajax pour régler se pbl, pour un affichage dynamique.
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
25 févr. 2009 à 14:30
Que dois afficher
<?php echo .$res["mail"]; ?> normalement ? car apparement c'est un champ texte unique...
0
creaDB Messages postés 28 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 25 mars 2009
25 févr. 2009 à 15:03
oui l'adresse doit avoir un rapport avec le mail, elle doit correspondre dans l'affichage au select si je clic sur bidule c'est l'adresse mail de bidule qui s'affiche ... je pense aussi code a revoir mais un peu perdu
0
creaDB Messages postés 28 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 25 mars 2009
25 févr. 2009 à 15:53
Un grand merci sa fonctionne !!!!!
I'm so happy !!!!

Très bonne réponse avec rapidité, fluidité et fonctionnalité ... lol
Sujet résolu !!!
0
ouzb Messages postés 63 Date d'inscription mercredi 20 septembre 2006 Statut Membre Dernière intervention 17 juillet 2012
25 févr. 2009 à 15:58
Salut eske réellement ta table s'appelle comme çà :
 $table_patients
0
creaDB Messages postés 28 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 25 mars 2009
27 févr. 2009 à 11:21
Problème résolu ... aucune déclaration 
0
Rejoignez-nous