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

Langage PHP Discussion :

Problème Notice dans les champs de formulaire.


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de pony99
    Femme Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 69
    Points
    69
    Par défaut Problème Notice dans les champs de formulaire.
    Bonjour,

    J'ai déjà posté ma question dans ce topic , mais vu qu'il est noté [Résolu] je ne pense pas avoir de réponse.

    Mon problème c'est que je voudrai bien utilisé le formulaire donné par Jumano dans ce même topic que j'ai remis ci-dessous mais dans les champs de ce formulaire j'ai des notices : Undefined index alors qu'il y a bien des vérification avec isset () qui sont faites.





    Je ne trouve pas d'où peu venir le problème.

    Merci de votre aide


    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
     
    <?php
    // Ici on teste si le formulaire a été envoyé : Envoyer correspondant au nom du bouton
    if (isset($_POST['Envoyer'])) { 
    // Ensuite si aucun champs n'est vide donc <>"" (différent de vide)
    if(($_POST['nom'] <> "") AND ($_POST['prenom'] <> "") AND ($_POST['adresse'] <> "") AND ($_POST['ville'] <> "") AND ($_POST['telephone'] <> "") AND ($_POST['email'] <> "") AND ($_POST['message'] <> "")) {
    //On créé une varaible qui nous permettra d'afficher le remerciement
    $formulaire = "OK";
    // On peut envoyer le mail
    $msg = "nom:\t$nom\n";
    $msg .= "prenom:\t$prenom\n";
    $msg .= "adresse:\t$adresse\n\n";
    $msg .= "ville:\t$ville\n\n";
    $msg .= "telephone:\t$telephone\n\n";
    $msg .= "email:\t$email\n\n";
    $msg .= "message:\t$message\n\n";
     
    $recipient = "contact@atc73.com";
    $subject = "Formulaire / albens travaux sur cordes";
     
    $mailheaders = "From: <a href='http://www.atc73.com' target='_blank'>www.atc73.com</a> \n";
    $mailheaders .= "Reply-To: $sender_email\n\n";
     
    mail($recipient, $subject, $msg, $mailheaders);
     
    } else { // Sinon, donc si un des champs est vide
    $formulaire = "KO";
    }
    } else { // Ici, si le formulaire n'a pas été envoyé
    $formulaire = "KO";
    }
    ?>
    <!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>
    <style>
    .Input_erreur {
    background-color:#FF3333;
    }
    </style>
    </head>
     
    <body>
    <?php if($formulaire == "KO") { ?>
    <div id="contact">
    <form method="post" action="contact.php">
        <p class="double">
            <label for="nom">Nom :</label>
            <input name="nom" type="text" id="nom" <?php if ((isset($_POST['nom'])) && ($_POST['nom'] == "")) { ?> class="Input_erreur" <?php } ?> onfocus="this.className='';" value="<?php echo $_POST['nom'] ; ?>" />
        </p>
        <p class="double">
            <label for="prenom">Prénom :</label>
            <input name="prenom" type="text" id="prenom" <?php if ((isset($_POST['prenom'])) && ($_POST['prenom'] == "")) { ?> class="Input_erreur" <?php } ?> onfocus="this.className='';" value="<?php echo $_POST['prenom'] ; ?>"/>
        </p>
        <p class="double">
            <label for="adresse">Adresse :        </label>
            <input name="adresse" type="text" id="adresse" <?php if ((isset($_POST['adresse'])) && ($_POST['adresse'] == "")) { ?> class="Input_erreur" <?php } ?> onfocus="this.className='';" value="<?php echo $_POST['adresse'] ; ?>"/>
        </p>
        <p class="double">
            <label for="ville">Ville :        </label>
            <input type="text" name="ville" id="ville" <?php if ((isset($_POST['ville'])) && ($_POST['ville'] == "")) { ?> class="Input_erreur" <?php } ?> onfocus="this.className='';" value="<?php echo $_POST['ville'] ; ?>"/>
        </p>
        <p class="double">
            <label for="telephone">Téléphone :</label>
            <input type="text" name="telephone" id="telephone" <?php if ((isset($_POST['telephone'])) && ($_POST['telephone'] == "")) { ?> class="Input_erreur" <?php } ?> onfocus="this.className='';" value="<?php echo $_POST['telephone'] ; ?>"/>
        </p>
     
        <p class="double">
            <label for="email">E.mail :</label>
            <input name="email" type="text" id="email" <?php if ((isset($_POST['email'])) && ($_POST['email'] == "")) { ?> class="Input_erreur" <?php } ?> onfocus="this.className='';" value="<?php echo $_POST['email'] ; ?>"/>
        </p>
     
        <p class="double">
            <label for="infos">Message :</label>
            <textarea id="message" name="message" rows="5" cols="30" <?php if ((isset($_POST['message'])) && ($_POST['message'] == "")) { ?> class="Input_erreur" <?php } ?> onfocus="this.className='';"><?php echo $_POST['message'] ; ?></textarea>
        </p>
        <p class="simple">
          <input type="submit" value="Envoyer ces informations" name="Envoyer" />
          <input name="R&eacute;initialiser" type="reset" value="Annuler" onclick="change_class();" />
        </p>
    </form>
    </div>
    <?php } ?>
    <?php if($formulaire == "OK") { ?>
    <div id="contact">Votre mail a bien été envoyé, merci.</div>
    <?php } ?>
    </body>
    </html>

  2. #2
    Membre du Club Avatar de pony99
    Femme Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 69
    Points
    69
    Par défaut
    J'ai pas aussi compris la récupération des entrée du formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Ensuite si aucun champs n'est vide donc <>"" (différent de vide)
    if(($_POST['nom'] <> "") AND ($_POST['prenom'] <> "") AND ($_POST['adresse'] <> "") AND ($_POST['ville'] <> "") AND ($_POST['telephone'] <> "") AND ($_POST['email'] <> "") AND ($_POST['message'] <> "")) {
    //On créé une varaible qui nous permettra d'afficher le remerciement
    $formulaire = "OK";
    // On peut envoyer le mail
    $msg = "nom:\t$nom\n";
    $msg .= "prenom:\t$prenom\n";
    $msg .= "adresse:\t$adresse\n\n";
    $msg .= "ville:\t$ville\n\n";
    $msg .= "telephone:\t$telephone\n\n";
    $msg .= "email:\t$email\n\n";
    $msg .= "message:\t$message\n\n";
    Que veux dire if(($_POST['nom'] <> "")

    et $msg .= "prenom:\t$prenom\n";

  3. #3
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    BOnjour !^^ Il me semble qu'en php les test se font ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(($_POST['nom'] != "")
    Sinon je prends cette ligne par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea id="message" name="message" rows="5" cols="30" <?php if ((isset($_POST['message'])) && ($_POST['message'] == "")) { ?> class="Input_erreur" <?php } ?> onfocus="this.className='';"><?php echo $_POST['message'] ; ?></textarea>
    VOila ce que je comprends : SI $_POST['message'] existe et qu'il est vide on met une class particulière FIN SI...

    Et après le fin SI tu affiche $_POST['message'] qu'il existe ou pas alors pourquoi ne pas l'afficher que si il existe?

    Je suis clair? ^^

    EDIT : Ouais je pige pas non plus sur le coup aussi, tout comme d'où sort $nom et $prenom par exemple ^^ Sinon pour le <> ca veut dire "différent de "

  4. #4
    Membre du Club Avatar de pony99
    Femme Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 69
    Points
    69
    Par défaut
    Salut obito

    Ok je comprend mieux avec <> veut dire différent donc c'est != (Merci) ^^

    Mais reste le problème des la notification des notices indefine index

  5. #5
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    En haut de ta page au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(($_POST['nom'] <> "") AND ($_POST['prenom'] <> "") AND ($_POST['adresse'] <> "") AND ($_POST['ville'] <> "") AND ($_POST['telephone'] <> "") AND ($_POST['email'] <> "") AND ($_POST['message'] <> "")) {
    essaie ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_POST['nom']) AND !empty($_POST['prenom']) AND !empty($_POST['adresse'] ) AND !empty($_POST['ville']) AND !empty($_POST['telephone']) AND !empty($_POST['email'] ) AND !empty($_POST['message'])) {
    Par ailleurs relis bien mon premier message je pense qu'il y a un problème au niveau de l'algo : Il affiche $_POST['message'] qu'il existe ou pas

  6. #6
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    le problème vient que tu boucle sur le même fichier php et que lorsque tu arrive la première fois $_POST est normalement vide $_POST['message'] n'existe pas et les autres aussi.

    trop d'erreur dans le code pour etre corrigé il faut tout revoir.

    initialise d'abord les variables que tu vas retrouver dans ton code ainsi elle existe toujours et plus de problème
    puis recherche si c'est le premier envois sinon récupère les $_POST

    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
     
    // initialisation variable
    $message = '';
    $isMessage = true;
    .....
    // test si formulaire à été envoyé
    if (isset($_POST['Envoyer'])) {
    /* pour chaque variable on rentre une valeur $_POST si elle existe
    * forme conditionnelle abrégé ci dessous
    * $variable = condition ? valeur_vrai : valeur_fausse;
    */
    $message = isset($_POST['message']) ? $_POST['message'] : '';
    // pour chaque variable on test si elle est non vide
    $isMessage = $message <> '' ? true : false
    .....
    }
    la condition dans ton code par la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ......
    <textarea id="message" name="message" rows="5" cols="30" <?php if (!$isMessage) { ?> class="Input_erreur" <?php } ?> onfocus="this.className='';"><?php echo $message ; ?></textarea>
    ....

  7. #7
    Membre du Club Avatar de pony99
    Femme Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par obito Voir le message
    Par ailleurs relis bien mon premier message je pense qu'il y a un problème au niveau de l'algo : Il affiche $_POST['message'] qu'il existe ou pas
    Humm c'est vrais, et c'est sûrement la cause des notices, car la variable $_POST['message'] n'est pas définie.

    Même en m'etant Empty ça ne fonctionne pas, car elle dépend de la condition $_POST['Envoyer']

  8. #8
    Membre du Club Avatar de pony99
    Femme Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 69
    Points
    69
    Par défaut
    Merci Helfima pour ta réponse, car je pensai récupéré un formulaire correcte, et il me fallait que l'adapter. mais c'est pas le cas.
    C'est après coup que j'ai compris d'ou venaient les notices.

    Donc je vais m'en inspiré, et retroussé mes manches

  9. #9
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Voila

    Maintenant il te reste juste à ... tout re coder parce que la ca va pas trop, mais ce qu'a écrit Helfima me semble bon donc démarre avec cette base plutôt

Discussions similaires

  1. [RegEx] accepter les tirets dans un champs de formulaire
    Par mouss4rs dans le forum Langage
    Réponses: 3
    Dernier message: 30/01/2009, 09h56
  2. Réponses: 3
    Dernier message: 11/01/2009, 11h13
  3. [MySQL] Problème pour récupèrer les champs d'un formulaire qui se trouve dans un while
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 21/03/2008, 14h59
  4. Réponses: 2
    Dernier message: 22/05/2007, 16h15
  5. Affichage dans les champs d'un formulaire
    Par perlgirl dans le forum Langage
    Réponses: 2
    Dernier message: 25/08/2006, 16h40

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