IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Récupération d'un champ et affichage


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Par défaut Récupération d'un champ et affichage
    bonjour

    je viens vous soumettre un petit souci :

    j'ai un formulaire qui me sert a rentrer une adresse mail, et je voudrais pouvoir integrer celle ci dans mon code php de ma page contact (en gros je rentre l'email que je veux, et ca la selectionne automatiquement)

    voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    //connexion au serveur:
    $cnx = mysql_connect( "localhost", "", "" );
    //sélection de la base de données:
    $db= mysql_select_db("");
    //création de la requête SQL:
    $sql = "SELECT * FROM mail  ORDER BY id_mail DESC LIMIT 1";
    //exécution de notre requête SQL:
    $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
    //récupération avec mysql_fetch_array(), et affichage de nos résultats :
     
    $result = mysql_fetch_array( $requete );
    echo($result ["email"]);
        define( 'MAIL_TO', 'echo ($result ["email"])');  //ajouter votre courriel
        define( 'MAIL_FROM', '' ); // valeur par défaut
    le echo affiche bien ce que je veux, a savoir l'adresse mail, par contre quand je le met dans la balise definie, cela ne fonctionne pas, aucun message d'erreur, le script m'indique que mon message est bien parti, mais cela ne fonctionne pas...

    si quelqu'un avait une ptite idée...

    Merci d'avance.

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Il faudrait plutot faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define( 'MAIL_TO', $result ["email"]);
    Mais ca reste une méthode bizarre.
    Pourquoi ne pas plutot mettre l'email dans une variable et l'utiliser plus loin dans le script?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mail_to = $result ["email"];
    // ... plus loin ...
    echo "le mail est envoyé à " . $mail_to;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Par défaut
    Citation Envoyé par koopajah Voir le message
    Il faudrait plutot faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define( 'MAIL_TO', $result ["email"]);
    Bonjour

    j'ai essayer ca, mais du coup il m'indique: l'adresse de courrier n'est pas valide

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Qui indique cette erreur ? L'adresse affichée juste avant par le "echo" est-elle correcte?
    Si oui il faudrait donner plus de code et expliquer pourquoi vous passer par cette méthode

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Par défaut
    oui l'adresse est correcte.. j'ai justement collé un echo plus haut pour etre sur qu'elle s'affiche correctement...

    voila le code de la page complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?php
    //connexion au serveur:
    $cnx = mysql_connect( "localhost", "", "" );
    //sélection de la base de données:
    $db= mysql_select_db("");
    //création de la requête SQL:
    $sql = "SELECT * FROM mail  ORDER BY id_mail DESC LIMIT 1";
    //exécution de notre requête SQL:
    $requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
    //récupération avec mysql_fetch_array(), et affichage de nos résultats :
     
    $result = mysql_fetch_array( $requete );
    echo($result ["email"]);
        define( 'MAIL_TO', 'echo ($result ["email"])');  //ajouter votre courriel
        define( 'MAIL_FROM', '' ); // valeur par défaut
        define( 'MAIL_OBJECT', 'objet du message' ); // valeur par défaut
        define( 'MAIL_MESSAGE', 'votre message' ); // valeur par défaut
        $mailSent = false; // drapeau qui aiguille l'affichage du formulaire OU du récapitulatif
        $errors = array(); // tableau des erreurs de saisie
        if( filter_has_var( INPUT_POST, 'send' ) ) // le formulaire a été soumis avec le bouton [Envoyer]
        {
            $from = filter_input( INPUT_POST, 'from', FILTER_VALIDATE_EMAIL );
            if( $from === NULL || $from === MAIL_FROM ) // si le courriel fourni est vide OU égale à la valeur par défaut
            {
                $errors[] = 'Vous devez renseigner votre adresse de courrier &eacute;lectronique.';
            }
            elseif( $from === false ) // si le courriel fourni n'est pas valide
            {
                $errors[] = 'L\'adresse de courrier &eacute;lectronique n\'est pas valide.';
               $from = filter_input( INPUT_POST, 'from', FILTER_SANITIZE_EMAIL );
            }
            $object = filter_input( INPUT_POST, 'object', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
            if( $object === NULL OR $object === false OR empty( $object ) OR $object === MAIL_OBJECT ) // si l'objet fourni est vide, invalide ou égale à la valeur par défaut
            {
                $errors[] = 'Vous devez renseigner l\'objet.';
            }
            /*     pas besoin de nettoyer le message. 
            /    http://www.phpsecure.info/v2/article/MailHeadersInject.php
            /    Logiquement, les parties message, To: et Subject: pourraient servir aussi à injecter quelque chose,     mais la fonction mail()
            /    filtre bien les deux dernières, et la première est le message, et à partir du moment où on a sauté une ligne dans l'envoi du mail,
            /    c'est considéré comme du texte; le message ne saurait donc rester qu'un message.*/
            $message = filter_input( INPUT_POST, 'message', FILTER_UNSAFE_RAW );
            if( $message === NULL OR $message === false OR empty( $message ) OR $message === MAIL_MESSAGE ) // si le message fourni est vide ou égale à la valeur par défaut
            {
                $errors[] = 'Vous devez &eacute;crire un message.';
            }
            if( count( $errors ) === 0 ) // si il n'y a pas d'erreurs
            {
                if( mail( MAIL_TO, $object, $message, "From: $from\nReply-to: $from\n" ) ) // tentative d'envoi du message
                {
                    $mailSent = true;
                }
                else // échec de l'envoi
                {
                    $errors[] = 'Votre message n\'a pas &eacute;t&eacute; envoy&eacute;.';
                }
            }
        }
        else // le formulaire est affiché pour la première fois, avec les valeurs par défaut
        {
            $from = MAIL_FROM;
            $object = MAIL_OBJECT;
            $message = MAIL_MESSAGE;
        }
    ?>
     
    <?php
        if( $mailSent === true ) // si le message a bien été envoyé, on affiche le récapitulatif
        {
    ?>
            <p id="success">Votre message a bien &eacute;t&eacute; envoy&eacute;.</p>
            <p><strong>Courriel pour la r&eacute;ponse&nbsp;:</strong><br /><?php echo( $from ); ?></p>
            <p><strong>Objet&nbsp;:</strong><br /><?php echo( $object ); ?></p>
            <p><strong>Message&nbsp;:</strong><br /><?php echo( nl2br( htmlspecialchars( $message ) ) ); ?></p>
    <?php
        }
        else // le formulaire est affiché pour la première fois ou le formulaire a été soumis mais contenait des erreurs
        {
            if( count( $errors ) !== 0 )
            {
                echo( "\t\t<ul>\n" );
                foreach( $errors as $error )
                {
                    echo( "\t\t\t<li>$error</li>\n" );
                }
                echo( "\t\t</ul>\n" );
            }
            else
            {
                echo( "\t\t<p id=\"welcome\"><em>Tous les champs sont obligatoires</em></p>\n" );
            }
    ?>
     
    <table>
            <form id='contact' method="post" action="<?php echo( $_SERVER['REQUEST_URI'] ); ?>">
                <p>
     
                    <label for="from">Courriel pour la r&eacute;ponse</label><br>
                    <input type="text" name="from" id="from"  value="<?php echo( $from ); ?>" />
                </p>
    			<br>
                <p>
                    <label for="object">Objet</label><br>
                    <input type="text" name="object" id="object" value="<?php echo( $object ); ?>" />
                </p> 
    			<br>
                <p>
                    <label for="message">Message</label><br>
                    <textarea name="message" id="message" rows="15" cols="40"><?php echo( $message ); ?></textarea>
                </p>
    			<br>
                <p>
                    <input type="reset" name="reset" value="Effacer" />
                    <input type="submit" name="send" value="Envoyer" />
                </p>
            </form>
    <?php
        }
    ?>

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    elseif( $from === false ) // si le courriel fourni n'est pas valide
    {
        $errors[] = 'L\'adresse de courrier &eacute;lectronique n\'est pas valide.';
    }
    C'est ce code là qui t'affiche une erreur, donc il se plaint que l'adresse "d'expéditeur" est incorrecte et non pas l'adresse destinataire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $from = filter_input( INPUT_POST, 'from', FILTER_SANITIZE_EMAIL );
    Le probleme vient du fait que la constante MAIL_FROM ou le champ 'from' ne sont pas renseignés je pense (soit par un formulaire soit par ton script).
    Mais j'avoue n'avoir jamais utiliser les fonctions filter_*() que tu emploies.

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/09/2011, 10h01
  2. Récupération d'un champ BLOB et téléchargement/affichage
    Par roadyrod dans le forum Général Java
    Réponses: 2
    Dernier message: 19/09/2011, 17h34
  3. Réponses: 6
    Dernier message: 26/01/2006, 00h01
  4. [TIBSQL] Problème de récupération d'un champs
    Par TitiFr dans le forum Bases de données
    Réponses: 6
    Dernier message: 07/08/2005, 13h33
  5. Récupération d'un champs
    Par gibet_b dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/07/2004, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo