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 :

Garder ces informations après envoi du formulaire


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut Garder ces informations après envoi du formulaire
    Hi all,

    Alors j'ai petit souci, qui est sûrement l'un des plus simples dans les formulaires, mais je bloque et après plusieurs tests, je deviens fou

    Je vous explique, j'ai un formulaire de contact dans lequel on rentre son nom, prénom, mail, tel, pays, etc. Ce formulaire envoi ensuite un mail.

    Au départ j'avais fais ce formulaire en 2 fichiers (+ facile) mais lorsqu'il y a une informations qui n'avait pas été spécifiée, j'envoyais une alert javascript et redirigeais vers le formulaire, et là toutes les données étaient remises à zéro, CE QUE JE NE VEUX PAS !!

    Donc je l'ai mis en 1 fichier avec un test au début qui soit affiche le formulaire soit fait les test pour vérifier les champs pour ensuite envoyer le mail.

    voici en gros 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
    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
     
     
    <?
    if(isset($_POST['valid'])){
     
    // Récupération des entrées.
     
    $Prenom=$_POST['firstname'];
    $Nom = $_POST['name'];
    $email = $_POST['email'];
    $idPays = $_POST['f_Pays'];
    $Tel = $_POST['tel'];
     
    if((empty($Nom))||(empty($email))||(empty($Tel))||(empty($Country)))
    	{
    		print("<SCRIPT language=\"Javascript\">
    			<!--
    			alert(\"L\une des informations obligatoires n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
    			// -->
    		</SCRIPT>");
    	}
    	else{
    		if(!valid_tel($Tel))
    		{
    			print("<SCRIPT language=\"Javascript\">
    			<!--
    			alert(\"Le num&eacute;ro de t&eacute;l&eacute;phone n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
    			// -->
    			</SCRIPT>");
    		}elseif(!is_email($email)){
    			print("<SCRIPT language=\"Javascript\">
    			<!--
    			alert(\"L\adresse mail n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
    			// -->
    			</SCRIPT>");
    		}
    		else{
    			//Envoi du mail
    		}
    	}
    }
    else{
     
    ?>
    <form action="contactfr.php" method="post">
    	<p>
    		<label for="name" class="FormInputTitle"><span>Nom<span class="RequiredField">*</span></span></label>
    		<span class="FormInputField"><input type="text" name="name" size="25" border="0" id="name"></span>
    	</p>
    	<br/>
    	<p>
    		<label for="firstname" class="FormInputTitle"><span>Pr&eacute;nom</span></label>
    		<span class="FormInputField"><input type="text" name="firstname" size="25" border="0" id="firstname"></span>
    	</p>
    	<p>
    		<span class="FormInputField"><input type="submit" name="valid" value="Submit" border="0"></span>
    	</p>
    </form>
    <?
    }
    ?>
    Et donc le problème est que je n'ai pas le code html lors d'une alerte javascript, je voudrais savoir comment faire mes test et envoi de mail, en ayant le message d'alert direct sur la page du formulaire ?

    j'avais pensé à des évènement du style " onSubmit" ou des trucs du genre, auriez vous des idées ?

    Merci pour vos réponses !!

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Lorsqu'une alerte est déclenchée est-ce que tu la vois à l'écran ?
    Parce qu'en fait on dirait que tu la "commentes" en html donc je me demande si ton erreur ne vient pas de la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    print("<SCRIPT language=\"Javascript\">
    <!--
    alert(\"L\adresse mail n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
    // -->
    </SCRIPT>");
    La deuxieme ligne ouvre un commentaire html/xml et la 4e ligne (censée fermer ce commentaire) est commentée en javascript, du coup je pense que tout le reste de ton document est marqué en commentaire et n'apparait pas.

    En faisant ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print("<SCRIPT language=\"Javascript\">
    alert(\"L\adresse mail n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
    </SCRIPT>");
    est ce que ca marche mieux?

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372

  4. #4
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    l'alerte s'affiche bien

    Justement Celira, l'exemple que tu m'a gentillement passer, repasse le formulaire sur les test, j'ai près de 6 test, je ne me vois pas remettre 6 fois 400 lignes

    Ce que j'aimerai c'est afficher une alerte (tjr après clik sur le bouton submit) sans avoir quitté la page du formulaire, ainsi en cliquant sur le bouton "Ok" de l'alerte, il n'y a pas de redirection ou besoin de cliquer sur "précédent".

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    As-tu essayé de retirer les lignes qui "commentent" le html ?

  6. #6
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    Citation Envoyé par koopajah
    As-tu essayé de retirer les lignes qui "commentent" le html ?
    Oui j'ai essayé et c'est pareil

  7. #7
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    et quand tu fais clic-droit afficher la source tu n'as rien a part le javascript ?
    Se pourrait-il que ca vienne de l'absence des <html><head>.....</html> qui font que lorsque tu as des balises <script> tu dois avoir les autres balises?
    Je propose des idées mais je ne sais pas du tout si c'est lié.

    EDIT : autre piste essaies en remplacant tes messages d'erreur par un simple aaa (ou autre texte mais sans caractères spéciaux du style ' ou ", parce que les échappements sont fait au niveau du php puis du javascript et par le passé ca m'a causé des erreurs. Donc autant éliminer cette possibilité avant d'aller plus loin

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par mLk92
    Justement Celira, l'exemple que tu m'a gentillement passer, repasse le formulaire sur les test, j'ai près de 6 test, je ne me vois pas remettre 6 fois 400 lignes
    Oui, évidemment vu comme ça...
    Citation Envoyé par mLk92
    Ce que j'aimerai c'est afficher une alerte (tjr après clik sur le bouton submit) sans avoir quitté la page du formulaire, ainsi en cliquant sur le bouton "Ok" de l'alerte, il n'y a pas de redirection ou besoin de cliquer sur "précédent".
    Tu peux sans doute faire quelque chose avec une fonction javascript que tu placerais dans ton bouton et qui ferais la soumission du formulaire uniquement si il n'y a pas de problèmes...
    Faq jascript : Comment vérifier que l'utilisateur a renseigné un champ d'un formulaire ?
    Mais là on sort de mon domaine
    Bon courage !

  9. #9
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    Celira, merci , ce que tu m'a filé fonctionne parfaitement

    Mais .. parce qu'il y a toujours un "Mais", comment je fais par rapport à mes test par rapport au "$_POST", plus besoin d'en faire ?

    D'autre part, je faisais un test sur l'adresse mail après avoir posté , et s'il y a une erreur --> Alert(); et donc perte des données inscrite en cliquand "Ok", comment faire pour que le test de mails soit fait lui aussi ?

    Sinon est-ce que vous pensez que je peux mettre un renvoi vers la page précédente (avec une balise meta ou autre) et ainsi ne pas perdre les données ?

  10. #10
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Essaye la methode cookie, mais attention c'est du brute force,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type=text class="memorize" size=7 name="toto" value=""   style="border-color:rgb(255,102,255); border-style:dotted;">
    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
     
    <script>
    var memoryduration="100 days"
    function setformobjects(){
    var theforms=document.forms
    memorizearray=new Array()
    for (i=0; i< theforms.length; i++){
    for (j=0; j< theforms[i].elements.length; j++){
    if (theforms[i].elements[j].className.indexOf("memorize")!=-1 && theforms[i].elements[j].type=="text")
    memorizearray[memorizearray.length]=theforms[i].elements[j]
    }
    }
    var retrievedvalues=get_cookie("mvalue"+window.location.pathname)
    if (retrievedvalues!=""){
    retrievedvalues=retrievedvalues.split("|")
    if (retrievedvalues[retrievedvalues.length-1]!=parseInt(memoryduration)) //reset cookie if var memoryduration has changed
    resetcookie("mvalue"+window.location.pathname)
    else{
    for (i=0; i<memorizearray.length; i++){
    if (retrievedvalues[i]!="empty_value")
    memorizearray[i].value=retrievedvalues[i]
    }
    }
    }
    }
    function get_cookie(Name) {
      var search = Name + "="
      var returnvalue = "";
      if (document.cookie.length > 0) {
        offset = document.cookie.indexOf(search)
        if (offset != -1) { // if cookie exists
          offset += search.length
          end = document.cookie.indexOf(";", offset);
          if (end == -1)
             end = document.cookie.length;
          returnvalue=unescape(document.cookie.substring(offset, end))
          }
       }
      return returnvalue;
    }
    function resetcookie(id){
    var expireDate = new Date()
    expireDate.setDate(expireDate.getDate()-10)
    document.cookie = id+"=;path=/;expires=" + expireDate.toGMTString()
    }
    function saveformvalues(){
    var formvalues=new Array(), temp
    for (i=0; i<memorizearray.length; i++){
    temp=memorizearray[i].value!=""? memorizearray[i].value : "empty_value"
    formvalues[formvalues.length]=escape(temp)
    }
    formvalues[formvalues.length]=parseInt(memoryduration)
    formvalues=formvalues.join("|")
    var expireDate = new Date()
    expireDate.setDate(expireDate.getDate()+parseInt(memoryduration))
    document.cookie = "mvalue"+window.location.pathname+"="+formvalues+"; path=/;expires=" + expireDate.toGMTString()
    }
    if (window.addEventListener)
    window.addEventListener("load", setformobjects, false)
    else if (window.attachEvent)
    window.attachEvent("onload", setformobjects)
    else if (document.getElementById)
    window.onload=setformobjects
    if (document.getElementById)
    window.onunload=saveformvalues
    </script>

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/04/2014, 11h52
  2. Lancer fonction javascript après envoi de formulaire
    Par Sharcoux dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/08/2011, 11h18
  3. Réponses: 13
    Dernier message: 19/06/2007, 16h11
  4. pb de redirection de page après envoi de formulaire
    Par mariah201083 dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2007, 17h44
  5. Réponses: 1
    Dernier message: 10/04/2006, 21h22

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