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 :

Envoie de formulaire via script ajax


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut Envoie de formulaire via script ajax
    Bonjour à tous,
    Depuis un moment je travail sous formulaire ajax pour éviter le changement de page etc ...

    Jusqu'à présent tout marché bien, mais là je suis en train de faire un nouveau site web et sur celui ci je rencontre des problèmes

    Je vais vous montrez :

    Script Ajax :

    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
    <script type="text/javascript">
    function reg(login, password, password_repeat, email, nom_famille, prenom, jj, mm, aa, sexe, adresse, ville, codepos, phone, secret_question, secret_reply)
    		{
    		  var OAjax;
    		  if (window.XMLHttpRequest) OAjax = new XMLHttpRequest();
    		  else if (window.ActiveXObject) OAjax = new ActiveXObject('Microsoft.XMLHTTP');
    		  OAjax.open('POST',"reg_send.php",true);
    		  OAjax.onreadystatechange = function()
    		  {
    			  if (OAjax.readyState == 4 && OAjax.status==200)
    			  {
    				  if (document.getElementById)
    				  {   
    					  if (OAjax.responseText =='Merci, votre compte : '+login+' est créé avec succès vous pouvez vous connecter dès maintenant') { 
    							document.getElementById('msg6').innerHTML='<font color=GREEN><p>'+OAjax.responseText+'</p></font>';
     
    					  }else{                             
    							document.getElementById('msg6').innerHTML='<font color=RED>'+OAjax.responseText+'</font>';
    							}
    				  }     
    			  }
    		  }
    		  OAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    		  OAjax.send('login='+login+'&password='+password+'&password_repeat='+password_repeat+'&email='+email+'&nom_famille='+nom_famille+'&prenom='+prenom+'&jj='+jj+'&mm='+mm+'&aa='+aa+'&sexe='+sexe+'&adresse='+adresse+'&ville='+ville+'&codepos='+codepos+'&phone='+phone+'&secret_question='+secret_question+'&secret_reply='+secret_reply);    
     
    		} 
    </script>
    Formulaire :

    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
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
     <form method="post" id="login" onsubmit="reg(this.login.value,this.password.value,this.password_repeat.value,this.email.value,this.nom_famille.value,this.prenom.value,this.jj.value,this.mm.value,this.aa.value,this.jj.value,this.sexe.value,this.adresse.value,this.ville.value,this.codepos.value,this.phone.value,this.secret_question.value,this.secret_reply.value);return false" action="">
              Login:
              <input type="text" class="bar curved" name="login" />
              <br />
              <br />
              Mot de passe :
              <input type="password" class="bar curved" name="password" />
              <br />
              <br />
              Mot de passe (comfirmation) :
              <input type="password" class="bar curved" name="password_repeat" />
              <br />
              <br />
              Votre email :
              <input type="text" class="bar curved" name="email" />
              <br />
              <br />
              Nom de famille :
              <input type="text" class="bar curved" name="nom_famille" onfocus="if(this.value=='Nom de famille') this.value='';" value="Nom de famille" />
              <br />
              <br />
              Prénom :
              <input type="text" class="bar curved" name="prenom" onfocus="if(this.value=='Prénom') this.value='';" value="Prénom" />
              <br />
              <br />
              Date de naissance:
              <SELECT name='jj' id='jj'>
                <option value='01'>01
                <option value='02'>02
                <option value='03'>03
                <option value='04'>04
                <option value='05'>05
                <option value='06'>06
                <option value='07'>07
                <option value='08'>08
                <option value='09'>09
                <option value='10'>10
                <option value='11'>11
                <option value='12'>12
                <option value='13'>13
                <option value='14'>14
                <option value='15'>15
                <option value='16'>16
                <option value='17'>17
                <option value='18'>18
                <option value='19'>19
                <option value='20'>20
                <option value='21'>21
                <option value='22'>22
                <option value='23'>23
                <option value='24'>24
                <option value='25'>25
                <option value='26'>26
                <option value='27'>27
                <option value='28'>28
                <option value='29'>29
                <option value='30'>30
                <option value='31'>31
              </SELECT>
              &nbsp;/&nbsp;
              <SELECT name='mm' id='mm'>
                <option value='01'>01
                <option value='02'>02
                <option value='03'>03
                <option value='04'>04
                <option value='05'>05
                <option value='06'>06
                <option value='07'>07
                <option value='08'>08
                <option value='09'>09
                <option value='10'>10
                <option value='11'>11
                <option value='12'>12
              </SELECT>
              &nbsp;/&nbsp;
              <SELECT name='aa' id='aa'>
                <option value='1950'>1950
                <option value='1951'>1951
                <option value='1952'>1952
                <option value='1953'>1953
                <option value='1954'>1954
                <option value='1955'>1955
                <option value='1956'>1956
                <option value='1957'>1957
                <option value='1958'>1958
                <option value='1959'>1959
                <option value='1960'>1960
                <option value='1961'>1961
                <option value='1962'>1962
                <option value='1963'>1963
                <option value='1964'>1964
                <option value='1965'>1965
                <option value='1966'>1966
                <option value='1967'>1967
                <option value='1968'>1968
                <option value='1969'>1969
                <option value='1970'>1970
                <option value='1971'>1971
                <option value='1972'>1972
                <option value='1973'>1973
                <option value='1974'>1974
                <option value='1975'>1975
                <option value='1976'>1976
                <option value='1977'>1977
                <option value='1978'>1978
                <option value='1979'>1979
                <option value='1980'>1980
                <option value='1981'>1981
                <option value='1982'>1982
                <option value='1983'>1983
                <option value='1984'>1984
                <option value='1985'>1985
                <option value='1986'>1986
                <option value='1987'>1987
                <option value='1988'>1988
                <option value='1989'>1989
                <option value='1990'>1990
                <option value='1991'>1991
                <option value='1992'>1992
                <option value='1993'>1993
                <option value='1994'>1994
                <option value='1995'>1995
                <option value='1996'>1996
                <option value='1997'>1997
                <option value='1998'>1998
                <option value='1999'>1999
                <option value='2000'>2000
                <option value='2001'>2001
              </SELECT>
              <br />
              <br />
              Sexe:
              <select name='sexe'>
                <option value='male' selected>Homme</option>
                <option value='female'>Femme</option>
              </select>
              <br />
              <br />
              <label for="depts">Adresse : </label>
              &nbsp;
              <input type="text" class="bar curved" name="adresse" />
              <br/>
              <br/>
              <label for="ville">Ville : </label>
              &nbsp;
              <input type="text" class="bar curved" name="ville"  />
              <br/>
              <br/>
              <label for="codepos">Code Postal : </label>
              &nbsp;
              <input type="text" class="bar curved" name="codepos" />
              <br/>
              <br/>
              <label for="codepos">Numéro de téléphone valide : </label>
              &nbsp;
              <input type="text" class="bar curved" name="phone" />
              <br/>
              <br/>
              <label for="codepos">Choisissez une question secrete : </label>
              &nbsp;
              <input type="text" class="bar curved" name="secret_question" />
              <br/>
              <br/>
              <label for="codepos">Réponse à la question : </label>
              &nbsp;
              <input type="text" class="bar curved" name="secret_reply" />
              <br />
              <br />
              <input type="submit" class="btn-yel" value="Envoie" />
            </form>
    En php j'insère dans la base de donnée via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "INSERT INTO site.account (id,login,password,email,name,family_name,sexe,phone,birthday,adress,ville,postal_code,create_date,cash,last_connect,secret_question,secret_reply,ip) VALUES ('','".mysql_real_escape_string($_POST['login'])."','password('".mysql_real_escape_string($_POST['password'])."')','".mysql_real_escape_string($_POST['email'])."','".mysql_real_escape_string($_POST['prenom'])."','".mysql_real_escape_string($_POST['nom_famille'])."','".mysql_real_escape_string($_POST['sexe'])."','".mysql_real_escape_string($_POST['phone'])."','".mysql_real_escape_string($_POST['jj'])."-".mysql_real_escape_string($_POST['mm'])."-".mysql_real_escape_string($_POST['aa'])."','".mysql_real_escape_string($_POST['adresse'])."','".mysql_real_escape_string($_POST['ville'])."','".mysql_real_escape_string($_POST['codepos'])."','".date('Y-m-d H:i:s')."','0','','".mysql_real_escape_string($_POST['secret_question'])."','".mysql_real_escape_string($_POST['secret_reply'])."','".$_SERVER["REMOTE_ADDR"]."')";
    Mais rien à faire rien ne s'enregistre, alors j'ai mis en écho la query pour voir, et ça me donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO site.account (id,login,password,email,name,family_name,sexe,phone,birthday,adress,ville,postal_code,create_date,cash,last_connect,secret_question,secret_reply,ip) VALUES ('','Clad38500','password('111111')','email@hotmail.fr','Jonathan','Verron','01','11000','01-01-1950','male','7 bis, rue pierre de coubertin','Carcassonne','2011-03-31 00:12:25','0','','0682115549','Lol ?','78.248.84.157')
    Comme vous pouvez le voir des infos sont mélangé :-/

    Auriez-vous une idée ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Citation Envoyé par Clad3815 Voir le message
    Bonjour à tous,
    Depuis un moment je travail sous formulaire ajax pour éviter le changement de page etc ...

    Comme vous pouvez le voir des infos sont mélangé :-/

    Auriez-vous une idée ?
    Tu pourrais nous dire lesquelles !

    ...sinon au passage plutôt que de faire 36000 mysql_real_escape_string dans ta requête tu pourrais peut-être appliquer cette fonction sur le tableau $_POST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $post = array_map('mysql_real_escape_string',$_POST);
    //ensuite te reste plus qu'à utiliser $post['login'], $post['password'] etc. ça te fera une requête plus agréable à écrire et à lire.
    et plutôt que d'utiliser une fonction php : date('Y-m-d H:i:s') pour rentrer la date et l'heure actuelle dans ta requête, il y a une fonction mysql dédiée pour ça : NOW()

    Pour le reste j'attends tes précisions

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    En ajax avec le système que je disais plus haut, je fais un print_r($_POST); et ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [login] => TestTest1 [password] => 111111 [password_repeat] => 111111 [email] => jojo38500@hotmail.fr [nom_famille] => Verron [prenom] => Jonathan [jj] => 06 [mm] => 12 [aa] => 1991 [sexe] => 06 [adresse] => male [ville] => 7 bis, rue pierre de coubertin [codepos] => Carcassonne [phone] => 11000 [secret_question] => 0682115549 [secret_reply] => Lol ? ) 1
    Sans l'ajax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [login] => TestTest1 [password] => 111111 [password_repeat] => 111111 [email] => jojo38500@hotmail.fr [nom_famille] => Verron [prenom] => Jonathan [jj] => 06 [mm] => 12 [aa] => 1991 [sexe] => male [adresse] => 7 bis, rue pierre de coubertin [ville] => Carcassonne [codepos] => 11000 [phone] => 0682115549 [secret_question] => Lol ? [secret_reply] => Moi [submit] => Envoie ) 1
    Je comprend pas trop, j'ai pourtant pas fait d'erreur dans l'ordre

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 43
    Par défaut
    Bon et ben j'ai résolu tout seul ^^

    Merci d'avoir essayé de m'aider, c'était juste dans le onsubmit j'avais mis deux fois this.jj.value

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi formulaire via AJAX
    Par chris52 dans le forum jQuery
    Réponses: 1
    Dernier message: 10/11/2014, 14h48
  2. [Débutant] Envoi d'un fichier en ajax via formulaire bindé
    Par thor76160 dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 11/12/2013, 14h24
  3. [AJAX] Traitement d'un envoie de formulaire via Ajax ?
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/02/2009, 19h19
  4. [SQL] Pb Sql lors de l envoie des données via un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h18
  5. envoie de fichiers via les formulaires
    Par fabogranqi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 10/10/2004, 21h34

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