Problème de récupération de donnée via un <select> [Résolu]

Signaler
Messages postés
28
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
25 mars 2009
-
Messages postés
28
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
25 mars 2009
-
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

Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

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>
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

petite erreur :


id="email" name="email" value="" size="50px" style="color:red" readonly="readonly" />
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Hello,

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

essaie en changeant cela par :

<?php echo $res["mail"]; ?>
Messages postés
28
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
25 mars 2009

Merci pour ta réponse mais aucun effet 
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

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>
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

<?php echo $res["mail"];  } } ?>
Messages postés
33
Date d'inscription
mardi 23 mai 2006
Statut
Membre
Dernière intervention
28 février 2009

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.
Messages postés
33
Date d'inscription
mardi 23 mai 2006
Statut
Membre
Dernière intervention
28 février 2009

Orange73 à répondu avant moi =(
Messages postés
28
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
25 mars 2009

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.
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Que dois afficher
<?php echo .$res["mail"]; ?> normalement ? car apparement c'est un champ texte unique...
Messages postés
28
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
25 mars 2009

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
Messages postés
28
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
25 mars 2009

Un grand merci sa fonctionne !!!!!
I'm so happy !!!!

Très bonne réponse avec rapidité, fluidité et fonctionnalité ... lol
Sujet résolu !!!
Messages postés
64
Date d'inscription
mercredi 20 septembre 2006
Statut
Membre
Dernière intervention
17 juillet 2012

Salut eske réellement ta table s'appelle comme çà :
 $table_patients
Messages postés
28
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
25 mars 2009

Problème résolu ... aucune déclaration