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

JavaScript Discussion :

Auto submit + variable js vers php via formulaire


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 7
    Par d�faut Auto submit + variable js vers php via formulaire
    Salut,

    Je r�alise un site commercial pour un projet d'�tudes, tout fonctionne, ou presque (panier, panneau d'admin, bdd, gestion compte du client, regex, etc).

    Mais je voulais rajouter une petite astuce/gadget, la v�rification de la validit� (en plus du bon format gr�ce au regex) r�elle (j'insiste, hein ?) d'un code postal Canadien/Qu�bcois, lors de l'inscription, gr�ce � l'API de googlemaps.

    Voici donc une page de traitement (blanche, no design, etc) de mon formulaire d'inscription (donc ce dernier fait + de 500 lignes, vive la gestion de tous les nombreux champs et messages correspondants, j'imagine qu'il y a surement plus propre et plus court, mais tout est fait maison, comme 90% du reste :p...) qui ne fait que recopier ces derniers pour les lui renvoyer.

    Pourquoi un truc aussi inutile ? juste pour un champs en particulier, le code postal. En effet, je tente de confirmer la validit� du code postal avec l'api de googlemaps (je me r�p�te), jusqu'� la tout va bien, �a marche, le seul hic c'est que le formulaire de cette page ne renvoi pas ma variable vers mon formulaire d'inscription lorsque j'utilise un auto submit (je pense pas avoir besoin de montrer la grosse page car tout marche avec un submit manuel, mais c'est pas le top, hein).

    Voici donc les deux morceaux de code :

    version submit manuel : qui me renvoi tous les champs, y compris:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    echo '<input type="hidden" name="code_postal_inexistant" id="code_postal_inexistant" value="" />';
    :
    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
    <?php
            session_start();
            include('fonctions.php');
            
            if (isset($_POST['bouton_inscription']))
            {
                    $code_postal = 'G6V'.strtoupper($_POST['code_postal']);
                    echo '<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAL6RK3B_OBIwvFTNg-n7VfRSjzOa9rGrxC0ak5IT6S_F6-jqUyBTx4_FvpnMCQzzqPLX_hIaTcH9OqQ" type="text/javascript"></script>';
                    echo '<script type="text/javascript">';
                    echo 'function load()';
                    echo '{';
                    echo 'geocoder = new GClientGeocoder();';
                    echo 'geocoder.getLatLng(';
                    echo '"'.$code_postal.'",';
                    echo 'function(position)';
                    echo '{';
                    echo 'if (!position)';
                    echo '{';
                    echo 'var code_postal_inexistant = "true";';
                    //echo 'document.getElementById("code_postal_inexistant").value=code_postal_inexistant;';
                    echo 'document.form.code_postal_inexistant.value=code_postal_inexistant;';
                    echo '}';
                    echo '}';
                    echo ');';
                    echo '}';
                    
                    echo '</script>';                       
                    echo '</head>';
                    echo '<body onload="load()" onunload="GUnload()">';
                    //;document.form.submit()
                    echo '<form action="inscription.php" name="form" id="form" method="post">';
                    echo '<input type="hidden" name="username" value="'.$_POST['username'].'" />';
                    echo '<input type="hidden" name="password1" value="'.$_POST['password1'].'" />';
                    echo '<input type="hidden" name="password2" value="'.$_POST['password2'].'" />';
                    echo '<input type="hidden" name="prenom" value="'.$_POST['prenom'].'" />';
                    echo '<input type="hidden" name="nom" value="'.$_POST['nom'].'" />';
                    echo '<input type="hidden" name="adresse" value="'.$_POST['adresse'].'" />';
                    echo '<input type="hidden" name="appartement" value="'.$_POST['appartement'].'" />';
                    echo '<input type="hidden" name="ville" value="'.$_POST['ville'].'" />';
                    echo '<input type="hidden" name="code_postal" value="'.$_POST['code_postal'].'" />';
                    echo '<input type="hidden" name="telephone1" value="'.$_POST['telephone1'].'" />';
                    echo '<input type="hidden" name="telephone2" value="'.$_POST['telephone2'].'" />';
                    echo '<input type="hidden" name="email1" value="'.$_POST['email1'].'" />';
                    echo '<input type="hidden" name="email2" value="'.$_POST['email2'].'" />';
                    echo '<input type="hidden" name="code_postal_inexistant" id="code_postal_inexistant" value="" />';
                    echo '<input type="submit" name="bouton_inscription" value="S\'inscrire" />';
                    echo '</form>';
            }
            else
            {
                    $_SESSION['erreur'] = true;
                    $_SESSION['page'] = $_SERVER['PHP_SELF'];
                    rediriger_vers('erreur.php');
            }
            echo '</body>';
            echo '</html>';
    ?>

    version auto submit qui me renvoi tous les champs, sauf :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    echo '<input type="hidden" name="code_postal_inexistant" id="code_postal_inexistant" value="" />';
    :
    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
    <?php
            session_start();
            include('fonctions.php');
            
            if (isset($_POST['bouton_inscription']))
            {
                    $code_postal = 'G6V'.strtoupper($_POST['code_postal']);
                    echo '<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAL6RK3B_OBIwvFTNg-n7VfRSjzOa9rGrxC0ak5IT6S_F6-jqUyBTx4_FvpnMCQzzqPLX_hIaTcH9OqQ" type="text/javascript"></script>';
                    echo '<script type="text/javascript">';
                    echo 'function load()';
                    echo '{';
                    echo 'geocoder = new GClientGeocoder();';
                    echo 'geocoder.getLatLng(';
                    echo '"'.$code_postal.'",';
                    echo 'function(position)';
                    echo '{';
                    echo 'if (!position)';
                    echo '{';
                    echo 'var code_postal_inexistant = "true";';
                    //echo 'document.getElementById("code_postal_inexistant").value=code_postal_inexistant;';
                    echo 'document.form.code_postal_inexistant.value=code_postal_inexistant;';
                    echo '}';
                    echo '}';
                    echo ');';
                    echo '}';
                    
                    echo '</script>';                       
                    echo '</head>';
                    echo '<body onload="load();document.form.submit()" onunload="GUnload()">';
                    //;document.form.submit()
                    echo '<form action="inscription.php" name="form" id="form" method="post">';
                    echo '<input type="hidden" name="username" value="'.$_POST['username'].'" />';
                    echo '<input type="hidden" name="password1" value="'.$_POST['password1'].'" />';
                    echo '<input type="hidden" name="password2" value="'.$_POST['password2'].'" />';
                    echo '<input type="hidden" name="prenom" value="'.$_POST['prenom'].'" />';
                    echo '<input type="hidden" name="nom" value="'.$_POST['nom'].'" />';
                    echo '<input type="hidden" name="adresse" value="'.$_POST['adresse'].'" />';
                    echo '<input type="hidden" name="appartement" value="'.$_POST['appartement'].'" />';
                    echo '<input type="hidden" name="ville" value="'.$_POST['ville'].'" />';
                    echo '<input type="hidden" name="code_postal" value="'.$_POST['code_postal'].'" />';
                    echo '<input type="hidden" name="telephone1" value="'.$_POST['telephone1'].'" />';
                    echo '<input type="hidden" name="telephone2" value="'.$_POST['telephone2'].'" />';
                    echo '<input type="hidden" name="email1" value="'.$_POST['email1'].'" />';
                    echo '<input type="hidden" name="email2" value="'.$_POST['email2'].'" />';
                    echo '<input type="hidden" name="code_postal_inexistant" id="code_postal_inexistant" value="" />';
                    echo '<input type="hidden" name="bouton_inscription" value="S\'inscrire" />';
                    echo '</form>';
            }
            else
            {
                    $_SESSION['erreur'] = true;
                    $_SESSION['page'] = $_SERVER['PHP_SELF'];
                    rediriger_vers('erreur.php');
            }
            echo '</body>';
            echo '</html>';
    ?>
    Les seules diff�rences entre les deux codes, c'est que je met submit ou hidden dans le dernier champs du form et je met document.form.submit(), ou pas.

    Donc, en manuel, dans la page de retour, je v�rifie si le $_POST['code_postal_inexistant'] est � true, et si oui, j'affiche un message d'erreur du type : "Le code postal est au bon format (de la forme : "G6V 0A0") mais n'existe pas."

    Donc, un mauvais CP et j'obtiens ce message, un bon et j'obtiens rien, sauf que pour un m�me code postal, en auto submit, le $_POST['code_postal_inexistant'] passe � la trappe.

    Quelqu'un aurait une solution ? je pense pas que �a plaira au gens de cliquer sur un submit page blanche, sauf si je magouille et que je remet le design autour mine de rien, moyen quoi, �a ne justifie pas une validation.

    (Je pr�cise aussi que �a marchait sans passer par cette page de traitement externe, sauf que la premi�re fois que l'on valide le formulaire, la variable passe aussi � la trappe, ce n'est que la seconde fois qu'on le valide qu'elle est � true, si elle le m�rite .

    J'esp�re m'�tre fait comprendre, il est bient�t 2h du mat ici (�tudiant de Corse, au Canada/QC ), � demain j'esp�re !

    Merci d'avance !

  2. #2
    Expert confirm�
    Avatar de le_chomeur
    Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2006
    Messages
    3 653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 3 653
    Par d�faut
    Bonjour , merci de bien vouloir mettre le code g�n�r� et non le PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 7
    Par d�faut
    On est d'accord que dans mon cas, c'est pas cens� changer grand chose vu la gueule du code est implicite (j'aurai aussi du mal � montrer la partie g�n�r� de la page de traitement avec l'auto submit).

    Ce qui change c'est vraiment le retour dans l'autre page (j'avais tout mis en GET au lieu de POST et, oui, la variable js > php passe � la trappe en auto submit), un true, ou rien.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAL6RK3B_OBIwvFTNg-n7VfRSjzOa9rGrxC0ak5IT6S_F6-jqUyBTx4_FvpnMCQzzqPLX_hIaTcH9OqQ" type="text/javascript"></script><script type="text/javascript">function load(){geocoder = new GClientGeocoder();geocoder.getLatLng("G6V",function(position){if (!position){var code_postal_inexistant = "true";document.form.code_postal_inexistant.value=code_postal_inexistant;}});}</script></head><body onload="load()" onunload="GUnload()"><form action="inscription.php" name="form" id="form" method="post"><input type="hidden" name="username" value="" /><input type="hidden" name="password1" value="" /><input type="hidden" name="password2" value="" /><input type="hidden" name="prenom" value="" /><input type="hidden" name="nom" value="" /><input type="hidden" name="adresse" value="" /><input type="hidden" name="appartement" value="" /><input type="hidden" name="ville" value="" /><input type="hidden" name="code_postal" value="" /><input type="hidden" name="telephone1" value="" /><input type="hidden" name="telephone2" value="" /><input type="hidden" name="email1" value="" /><input type="hidden" name="email2" value="" /><input type="hidden" name="code_postal_inexistant" id="code_postal_inexistant" value="" /><input type="submit" name="bouton_inscription" value="S'inscrire" /></form></body></html>
    J'ai pr�cis� qu'en submit manuel tout fonctionne, mais c'est pas le but, �a devrais le faire aussi en auso submit.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 7
    Par d�faut
    Quelqu'un ? :/

  5. #5
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par d�faut
    GClientGeocoder
    est elle synchrone ou asynchrone?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 7
    Par d�faut
    En fait c'est pas �a qui marche pas, si je voudrais r�cup�rer "toto" plut�t que "true" �a serait le m�me probl�me.

    Le code pour googlemaps fonctionne, c'est la r�cup�ration de la variable en JS qui ne marche qu'avec un bouton submit alors qu'elle est ignor�e (mais pas les autres) quand le formulaire est envoy� automatiquement.

  7. #7
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Bonjour,
    tu testes sous IE ?
    Si oui, modifie le nom de ta variable "code_postal_inexistant".

    Parce qu'en l'�tat, la ligne
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    document.form.code_postal_inexistant.value=code_postal_inexistant;
    doit lui donner des boutons

    ... et il serait pr�f�rable :

    A+

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 7
    Par d�faut
    Merci de m'aider !

    Firefox (j'ai �galement test� sur IE)

    �a � l'air plus propre comme �a en effet, mais �a ne fonctionne pas.

    Je comprend pas la diff�rence entre recevoir la variable en manuel avec bouton et en automatique, les autres sont r�cup�r�es, sauf celle l�, mais c'est un cas particulier, vu que c'est une variable JS � la base (mais le probl�me reste le m�me, si je la r�cup�re avec un bouton visible, pourquoi un auto submit ne la prends pas, sachant que ma syntaxe para�t correcte, jusqu'� preuve du contraire).

    Si quelqu'un voudrait bien tester le code pour visualiser l'absurdit� en live :p

    Ciao.

  9. #9
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par ketsueki Voir le message
    Si quelqu'un voudrait bien tester le code pour visualiser l'absurdit� en live
    D'o� l'int�r�t de la demande initiale :
    Citation Envoy� par le_chomeur Voir le message
    Bonjour , merci de bien vouloir mettre le code g�n�r� et non le PHP
    Sinon, on peut pas

    A+

  10. #10
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    if (isset($_POST['bouton_inscription']))

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 7
    Par d�faut
    Matthieu2000, dis ce qui va pas plut�t que de te foutre de moi (c'est la mode des gens plus exp�riment�s ?) :p

    Je sais pas comment v�rifier � part avec ce moyen, que j'ai bien cliqu� sur un bouton en particulier sur la page pr�c�dente, o� est donc le mal ?

    J'ai fais tout le site (gestion panier compris) sans presque regarder comment on faisait ailleurs, il est donc fort possible que certaines choses ne soient pas propres.

    Faut dire aussi qu'on nous a pas donn� beaucoup de temps et d'explications pour le r�aliser, donc j'ai pas trop eu le temps de me pencher sur ce genre de choses.

    E.Bzz, je l'ai fait. Aussi, en m�thode get, on peut tr�s bien voir que le retour de la variable est vide.

Discussions similaires

  1. [PHP-JS] Variable javascript vers php
    Par guigui31 dans le forum G�n�ral JavaScript
    R�ponses: 13
    Dernier message: 13/06/2007, 15h39
  2. [PHP-JS] r�cup�rer variable javascript vers php
    Par felix14 dans le forum Langage
    R�ponses: 5
    Dernier message: 14/02/2007, 15h39
  3. [PHP-JS] Transmettre une variable javascript vers php
    Par phpaide dans le forum G�n�ral JavaScript
    R�ponses: 11
    Dernier message: 20/05/2006, 08h30
  4. [PHP-JS] variable javascript vers PHP
    Par nicoaix dans le forum Langage
    R�ponses: 3
    Dernier message: 17/03/2006, 21h28

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