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 :

Redirection vers un même formulaire.


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut Redirection vers un même formulaire.
    Bonjour a tous !

    Voilà je suis en train de créer un formulaire. Je l'ai mis ds une page php car je souhaite faire la redirection vers ce meme formulaire si certain champs ne sont pas valide.

    Ma page = Formulaire.php
    <form action="Formulaire.php" ...>

    mon soucis est le suivant : lors de l'affichage de la page j'obtient des erreur car les variables ne sont pas reconnues.

    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
     
     
    <form action="formulaire.php" name="form" method="POST">
    <fieldset>
    <legend></legend>
     
    <table border=0 width=100%>
     
    <!-- //partie pour l'identite du contact -->
    <tr>
        <td colspan=2 class="titre">Identification de la personne</td>
    <tr>
    <tr>
        <td><P class="libelle">Civilité *</p></td>
        <td><select id="civ" class="marge">
            <option selected value=0> - choix - </option>
            <option value=1> Md. </option>
            <option value=2> Mme. </option>
            <option value=3> M. </option>
            </select>
            </td>
    <tr>
    <tr>
        <? if (($Espion == "retour") && (strlen($nom) == 0)) echo "Vous devez renseigner le nom";?>
        <td><p class="libelle">Nom *</p></td>
        <td><input type="text" value="<? echo $nom;?>" name="nom" class="marge"></td>
    <tr>
    <tr>
        <td><p class="libelle">Prénom *</p></td>
        <td><input type="text" value="<? echo $prenom;?>" name="prenom" class="marge"></td>
    <tr>
    <tr>
        <td colspan=2><Hr></td>
    <tr>
    <!-- partie pour la fonction du contact -->
    <tr>
        <td colspan=2 class="titre">Fonction de la personne</td>
    <tr>
    <tr>
        <td><P class="libelle">Fonction *</p></td>
        <td><select id="idf" class="marge">
            <option selected value=0> - choix - </option>
            <option value=1> Maire </option>
            <option value=2> Maire-Adjoint </option>
            <option value=3> Conseiller Régional </option>
            <option value=4> Conseiller Général </option>
            </select></td>
    <tr>
    <tr>
        <? if (($Espion == "retour") && (strlen($fonction_a) == 0)) echo "Vous devez renseigner la fonction";?>
        <td><input type="checkbox" id="idactive" name="active" onclick="disableInput('ida','idf',this.checked)" class="libelle">Autre</td>
        <td><input type="text" id="ida" value="<? echo $fonction_a;?>" name="fonction_a" disabled="true" style ="BACKGROUND-COLOR=#CCC" class="marge"></td>
    <tr>
    <tr>
        <td colspan=2><Hr></td>
    <tr>
    <!-- partie pour les coordonnees du contact -->
    <tr>
        <td colspan=2 class="titre">Coordonnées de la personne</td>
    <tr>
    <tr>
        <td><p class="libelle">Adresse *</p></td>
        <td><input type="text" value="" name="adresse" class="marge" size=50></td>
    <tr>
    <tr>
        <? if (($Espion == "retour") && (strlen($ville) == 0)) echo "Vous devez renseigner la ville";?>
        <td><p class="libelle">Ville *</p></td>
        <td><input type="text" value="<? echo $ville;?>" name="ville" class="marge" size=30></td>
    <tr>
    <tr>
        <? if (($Espion == "retour") && (strlen($cp) == 0)) echo "Vous devez renseigner le code postal";?>
        <td><p class="libelle">Code postal *</p></td>
        <td><input type="text" value="<? echo $cp;?>" name="cp" class="marge" size=5></td>
    <tr>
    <tr>
        <td><p class="libelle">Portable </p></td>
        <td><input type="text" value="" name="portable" class="marge" size=14></td>
    <tr>
    <tr>
        <td><p class="libelle">Fixe </p></td>
        <td><input type="text" value="" name="fixe" class="marge" size=14></td>
    <tr>
    <tr>
        <td><p class="libelle">Mail </p></td>
        <td><input type="text" value="" name="mail" class="marge" size=14></td>
    <tr>
    <tr>
        <td colspan=2><Hr></td>
    <tr>
    <tr>
        <td colspan=2 align="center">
        <input type="SUBMIT" value="Enregistrer" name="envoyer">
        <input type="hidden" name="Espion" value="retour"></td>
    <tr>
     
    </table>
     
    </fieldset>
    </form>
    J'utilise la variable "espion" affin de savoir si c'est la premiere fois ou pas que je suis sur cette page.

    voici le résultat lors de l'affichage:

    en haut du formulaire:

    Notice: Undefined variable: Espion in c:\program files\easyphp1-8\www\zone_de_test_form\formulaire_test2.php on line 76

    dans les zones de texte :

    <br /><b>Notice</b>: Undefined variable: nom in <b>c:\program files\easyphp1-8\www\zone_de_test_form\formulaire_test2.php</b> on line <b>78</b><br />

    Je sais bien qu'une solution existe en redirigeant vers une autre page mais je trouve interressant de n'utiliser qu'une seule page. ( du moins pour les vérification ).

    Merci d'avance pour votre aide .

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Il faut que tu récupères les informations du formulaire en utilisant le tableau $_POST (ex $_POST["Espion"])

  3. #3
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    la méthode sans utiliser le tableau superglobal $_POST marchait avec php3 il me semble, mais depuis php4 et 5 il faut utiliser ces tableaux pour récupérer les valeurs 'postées'

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    Je viens de changer mes variables comme tu me l'as dis.

    $_POST["Espion"], $_POST["nom"] ...

    mais les erreurs persistent.

    De plus, qqch que je n'avais pas signalé tout à l'heure.
    Dans la ligne de code suivant le php n'est pas reconnu car il n'apparait pas au couleur habituelle , est ce normal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <td><input type="text" value="<? echo $_POST['prenom'];?>" name="prenom" class="marge"></td>

  5. #5
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    est-ce que tu peux mettre un peu plus de code ?

    tu as probablement un problème avec les ' ou "

  6. #6
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    voila une ligne qui devrait marcher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php echo '<td>
            <input type=text value="'.$_POST['prenom'].'" name=prenom class=marge>
         </td>'; ?>

  7. #7
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par Commodore_Psykopate
    la méthode sans utiliser le tableau superglobal $_POST marchait avec php3 il me semble, mais depuis php4 et 5 il faut utiliser ces tableaux pour récupérer les valeurs 'postées'
    4.2.0 pour être précis

    Citation Envoyé par lecail65
    mais les erreurs persistent.
    ben donne-les nous, c'est forcément pas les mêmes (donne aussi le bout de code que tu as modifié tant qu'à faire).

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    désolé mais il y a toujours un soucis.

    voilà un bout 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
    16
     
     
    // syntaxe d'origine pour la varible nom :
     
    <tr>
        <? if (($_POST['Espion'] == "retour") && (strlen($_POST['nom']) == 0)) echo "Vous devez renseigner le nom";?>
        <td><p class="libelle">Nom *</p></td>
        <td><input type="text" value="<? echo $_POST['nom'];?>" name="nom" class="marge"></td>
    <tr>
     
    // avec la méthode précédante pour la varible prénom ou on ne fait pas de test
     
    <tr>
        <td><p class="libelle">Prénom *</p></td>
        <?php echo' <td><input type=text value="'.$_POST['prenom'].'" name=prenom class=marge></td>';?>
    <tr>

    voici les deux erreurs qu'IE envoi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Nom *
     
    Notice: Undefined index: Espion in c:\program files\easyphp1-8\www\zone_de_test_form\formulaire_test2.php on line 76
     
    Prénom *
     
    Notice: Undefined index: prenom in c:\program files\easyphp1-8\www\zone_de_test_form\formulaire_test2.php on line 82

    donc le problème reste entier .

  9. #9
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    ah oui pardon, petit détail : le script est lancé quand tu affiches le formulaire, mais aussi quand tu le traites. Donc la première fois que tu le lances, les variables ne sont pas encore positionnées (forcément, le formulaire n'a pas été soumis).
    Donc avant chaque utilisation d'une variable du formulaire, il faut vérifier son existence avec isset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ((isset($_POST["machin"]) && ($_POST["machin"] == "truc")) {
      ...
    }
    Enfin, tu vois le principe.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    OUi effectivment je vois à peu près.
    J'ai donc mis en place la nouvelle syntaxe mais j'obtiens une erreur a nouveau

    voila la nouvelle ligne de code pour le champ "nom":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     
    <? if (((isset($_POST['Espion']) && ($_POST['Espion'] == "retour")) && ((isset($_POST['nom']) && (strlen($_POST['nom']) == 0)))echo "Vous devez renseigner le nom";?>
    je ne vois pas d'ou ca vien car j'ai bien vérifié les parenthèses ...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    ah oui l'erreur est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     
    Parse error: parse error in c:\program files\easyphp1-8\www\zone_de_test_form\formulaire_test2.php on line 77

  12. #12
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Il ne te reste plus qu'à nous donner la ligne 77.
    (PS les balises php sont <?php et ?>)

  13. #13
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    quel est le message d'erreur ?
    -edit- dsl, j'ai posté avec un peu de retard

    (PS les balises php sont <?php et ?>)
    +1
    mais <? ... ?> fonctionne aussi. cependant, cette syntaxe n'est pas reconnue partout.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
     
    ligne 76 <? if (((isset($_POST['Espion']) && ($_POST['Espion'] == "retour")) && ((isset($_POST['nom']) && (strlen($_POST['nom']) == 0)))echo "Vous devez renseigner le nom";?>
    ligne 77 <td><p class="libelle">Nom *</p></td>

  15. #15
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    c'est peut etre dû au fait qu'il manque un espace entre la derniere parenthese fermante du if() et le echo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(...)echo"...";
    -> if() echo"...";

  16. #16
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Tu as oublié de fermer une parenthèse

  17. #17
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    Citation Envoyé par Eusebius
    Tu as oublié de fermer une parenthèse
    lecail65> alors comme ça tu as vérifié les parenthèses ?

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    OUi je ne suis pas bien réveillé ce matin lol !

    effectivment il s'agissait de l'espace entre le "if" et mon "echo" mais aussi de deux parenthèses oubliées ( la honte !!! )

    bon la syntaxe est un peu lourde mais ya plus d'erreur ! héhé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <? if (((isset($_POST['Espion'])) && ($_POST['Espion'] == "retour")) && ((isset($_POST['nom'])) && (strlen($_POST['nom']) == 0))) echo "Vous devez renseigner le nom";?>
    Merci bien pour votre aide !

    je ne met pas résolu car il me reste a faire la partie de redirection meme si je pense le faire correctment : On ne sais jamé !!!

  19. #19
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par lecail65
    je ne met pas résolu car il me reste a faire la partie de redirection meme si je pense le faire correctment : On ne sais jamé !!!
    Essaie de poster des problèmes différents dans des topics différents, c'est beaucoup plus efficace.

  20. #20
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    donc mets le Résolu quand même et ouvre un autre fil si nécessaire

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Redirection vers la même page
    Par Konami15 dans le forum ASP
    Réponses: 6
    Dernier message: 27/09/2008, 12h33
  2. Redirection vers la même page jsp
    Par patrios dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 19/04/2008, 19h08
  3. Redirection vers la même page après submit de formulaire
    Par noOneIsInnocent dans le forum Struts 1
    Réponses: 5
    Dernier message: 27/10/2006, 15h36
  4. Réponses: 4
    Dernier message: 26/07/2006, 13h37
  5. Réponses: 1
    Dernier message: 20/07/2006, 17h46

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