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 :

Form php, comment mettre message d'erreur dans la page ?


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Form php, comment mettre message d'erreur dans la page ?
    Bonjour à tous ,

    ayant un niveau zéro en php (j'attaque les cours et tutoriels), j'avais mis au point un fichier php pour rediriger l'utilisateur vers une page en fonction de la valeur qu'il entre dans le formulaire:

    (voir plus bas si cela peut servir à quelqu'un)

    Ce que je voudrais faire et que le code ne fait pas, serait de ne pas renvoyer vers une page d'erreur en cas de mauvaise saisie mais d'afficher un message d'erreur à coté du formulaire. Un peu comme les message d'erreur chez yahoo ou autre lorsqu'on se trompe de mot de passe pour consulter ses mails. Avec la fonction echo on renvoit un texte mais dans une nouvelle page. Je ne sais pas comment mettre la texte d'erreur à coté du formulaire . J'ai cherché sur les forums et les tutos de php mais j'en ressort plus embrouillé qu'autre chose.

    Merci d'avance

    EDIT: Je sais pas si c'est vrai mais je viens de lire qu'il faut faire un javascript sinon c'est obigatoirement un chagement de page qui a lieu. C'est vrai? Enfin je suis pas plus avancé


    Extrait de la page Html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	<form method="post" action="redirection.php">
     
    					Ville:   <input type="text" name="ville">
     
    					<input type="submit" value="Envoyer">
     
    				</form>
    Fichier php:
    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
        <?php
        //ici tu récupères la valeur saisie
        $saisie = htmlspecialchars($_POST['ville']);
        $saisie = ucwords(strtolower($saisie)); // met tout en minuscules et la première lettre en majuscule Aaaaa
     
        $villes_array = array('Paris','Lyon','Aix-en-provence','Angers','Bordeaux','Clermont-ferrand','Dijon','Grenoble','Lehavre','Lemans','Lille','Marseille','Nice','Nimes','Reims','Rennes','Toulouse','Brest','Nantes','Strasbourg','Saintetienne, Valence');// Les marques s걡r꦳ par , et mis entre '', de la forme 'Marque'
     
        $redirection = urlencode("erreur.htm");
     
        if(in_array($saisie, $villes_array))
        {
        $redirection = "http://".strtolower($saisie).".site.fr";
        }
     
     
     
        header('Location: '.$redirection);
        exit();
    	?>

  2. #2
    Membre régulier
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Points : 71
    Points
    71
    Par défaut
    salut, oui tu dois passer par un langage client qui permet de ne pas recharger la page.
    javascript te permet d'afficher des alert windows avec le message d'erreur que tu veux. pour afficher dynamiquement à côté de tes champs je crois que c'est pas possible par javascript, il faut passer par la technologie Ajax

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 196
    Points : 165
    Points
    165
    Par défaut gestion erreur
    Dans yahoo mail lorsque tu te trompes de code, il faut bien envoyer les données côté serveur pour les analyser. C'est donc une nouvelle page qui te sera renvoyé identique a celle de départ avec un message d'erreur. Tu n'as pas besoin de Java pour ça !

    juste avant d'écrire le code de ton formulaire tu places :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    foreach( $villes_array as $v ){
       if( $saisie == $v ){ ta redirection }
    }
    //on fait apparaire le message d'erreur
    if ( !empty( $saisie ) ){
     echo 'erreur de saisie';
    }
    ?>

  4. #4
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par LDDL Voir le message
    C'est donc une nouvelle page qui te sera renvoyé identique a celle de départ avec un message d'erreur. Tu n'as pas besoin de Java pour ça !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    foreach( $villes_array as $v ){
       if( $saisie == $v ){ ta redirection }
    }
    //on fait apparaire le message d'erreur
    if ( !empty( $saisie ) ){
     echo 'erreur de saisie';
    }
    ?>

    OK globalement avec toi mais

    1) EMPTY est peu fiable
    Et retourne FALSE si var a une valeur non-vide et différente de zéro.
    Ce qui suit est considéré comme étant vide :

    "" (une chaîne vide)
    0 (0 en tant qu'entier)
    "0" (0 en tant que chaîne de caractères)
    NULL
    FALSE
    array() (un tableau vide)
    var $var; (une variable déclarée, mais sans valeur dans une classe)

    .............

    2) D'autre part, il faut (je conseilles) traiter TOUT les POST GET et SESSION
    en tête comme cela on n'emploie plus aprés que la variable équivalente
    par exemple une fois traité $_POST['truc'] on utilisera $truc
    que nous aurons créé !!

    Donc en tête de mes PHP je charges toujours mes POST et autres ensuite je n'utilises plus que leurs variables. comme ceci comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    if (isset($_POST["ville"])) $ville=htmlentities(trim($_POST["ville"]));
        else $ville="";
        $ville = ucwords(strtolower($ville));

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 196
    Points : 165
    Points
    165
    Par défaut V0.2
    Oui d'ailleurs ce teste ne sert à rien ! soit $saisie correspond à une ville soit c'est une erreur !!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    $nombre_ville = count( $villes_array )-1;
     
    foreach( $villes_array as $key=>$ville ){
     
       if( $saisie == $ville ){ ta redirection }
     
       //accune ville correspond c'est une erreur
       if( $key == $nombre_element && $saisie !== $villes_array[$nombre_element] ){ echo 'erreur';}
     
    }
     
    ?>

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par LDDL Voir le message
    Oui d'ailleurs ce teste ne sert à rien ! soit $saisie correspond à une ville soit c'est une erreur !!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    $nombre_ville = count( $villes_array )-1;
     
    foreach( $villes_array as $key=>$ville ){
     
       if( $saisie == $ville ){ ta redirection }
     
       //accune ville correspond c'est une erreur
       if( $key == $nombre_element && $saisie !== $villes_array[$nombre_element] ){ echo 'erreur';}
     
    }
     
    ?>

    Ce serait bien de mettre le PHP d'entéte complet, avec


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (isset($_POST["ville"])) $ville=htmlentities(trim($_POST["ville"]));
        else $ville="";
        $ville = ucwords(strtolower($ville));
    ou sous forme d'array pas de problémes, mais de toute façon la disparition de la valeur globale interdit heureusement pour les infiltrations
    $ville directement sans faire appel a POST et sans faire un minimum de sécurisation

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Salut, merci pour vos réponses.


    Citation Envoyé par LDDL Voir le message
    Dans yahoo mail lorsque tu te trompes de code, il faut bien envoyer les données côté serveur pour les analyser. C'est donc une nouvelle page qui te sera renvoyé identique a celle de départ avec un message d'erreur. Tu n'as pas besoin de Java pour ça !
    Déjà ça c'est un bon point pour comprendre pour moi
    Dans tout les cas il faut recharger une nouvelle page avec juste un texte d'erreur en plus. Bon j'imagine qu'en étant doué on doit pouvoir faire un frame avec juste une partie de la page qui se recharge mais je vais faire charger une nouvelle page avec juste le texte d'erreur de saisie.



    Après je n'ai pas bien compris ce que vous proposez avec les compteurs et les déclarations de départ. Mais ça m'intéresse: est ce qu'il s'agit de ne plus rentrer les nom des villes possibles en se passant d'array?

    J'ai fait un fichier php pour la redirection. LDDL, tu dis que je ne suis pas obligé et que je peux le mettre dans le code html de la page. Je sens que je pose une grosse question newbiesque mais : comment?

    Merci à vous!

  8. #8
    Membre habitué
    Inscrit en
    Juillet 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 196
    Points : 165
    Points
    165
    Par défaut
    Slt

    Je te joins une page, j'espère que c'est ce que tu souhaites !

    Pour tester ta ville les fonctions in_array() c'est bien, moi j'ai fais une boucle parceque j'aime les boucles !

    Bref dans ton formulaire => action = "Ta_PAGE.php"

Discussions similaires

  1. Messages d'erreur dans une page JSP
    Par pepitoluna dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 12/07/2010, 09h34
  2. [EasyPHP] Message d 'erreur dans ma page de demarrage index.php
    Par cdevl32 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 25/09/2007, 16h33
  3. ecrire un message d'erreur dans la page html
    Par slyfer dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/08/2007, 14h27
  4. [Tiles]message d'erreur dans un footer (form mal rempli)
    Par clement42 dans le forum Struts 1
    Réponses: 5
    Dernier message: 09/06/2005, 14h51
  5. Comment mettre le même TMainMenu dans plusieurs Form ?
    Par gmc dans le forum Composants VCL
    Réponses: 6
    Dernier message: 12/08/2004, 21h03

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