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

AJAX Discussion :

[AJAX] Récupération de variable avec Ajax


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut [AJAX] Récupération de variable avec Ajax
    Salut à tous et à toutes,

    Voilà mon problème, j'ai mis en place une newsletter sur un de mes sites et je n'arrive pas la récupération du champ email.

    Voici donc mon architecture :

    1) Ma form :
    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
     
    <form method="GET">
    <div id="newsletter_output">
    <div id="newsletter_content"></div>
    <div class="newsletter_close" onclick="newsletter_hide()">X</div>
    </div>
     
    <label for="saisissez_email"><span>Newsletter</span> Abonnez-vous à notre lettre d'info :</label>
    <div class="row"><label for="saisissez_email">Saisissez votre e-mail</label>
     
    <input name="email" type="text" id="saisissez_email"
     onclick="this.select();" class="text" value="">&nbsp;
    <div id="newsletter_buttons">
    <div  style="cursor:pointor;"
     onclick="TINY.ajax.call('a_ajax_subscribe_newsletter.php', 'newsletter_content', 'newsletter_display(\'newsletter_red\')')">
    <img src="images/btn_ok_violet.png" alt="ok"></div>
    </div>
     
     </div>
    </form>

    2) Le script, celui de tiny ajax en fait :
    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
     
    TINY={};
     
    function T$(id){return document.getElementById(id)}
     
     
     
    TINY.ajax=function(){
        return{
            call:function(u,d,f,p){
     
     
     
    		var x=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
     
    	var useremail = document.getElementById('saisissez_email').value;		
     
    		x.onreadystatechange=function(){
                    if(x.readyState==4&&x.status==200){
                        if(d){
                            var t=T$(d);
                            t.innerHTML=x.responseText
                        }
                        if(f){
                            var c=new Function(f); c()
                        }
                    }
                };
     
     
     
     
                if(p){
                    x.open('POST',u,true);
                    x.setRequestHeader('Content-type','application/x-www-form-urlencoded');
                    x.send(p)
                }else{
     
     
     
     
                    x.open('GET',u + '?email="+useremail"',true);
     
     
     
                    x.send(null)
                }
            }
        };
    }();
     
    function newsletter_display(name){
    	var newsletter_output=T$('newsletter_output');
    	newsletter_output.style.display='block';
    	newsletter_output.className=name;
    }
     
    function newsletter_hide(){
    	var newsletter_output=T$('newsletter_output');
    	newsletter_output.style.display='none';
    }

    3) Mon fichier de tratement ajax : a_ajax_subscribe_newsletter.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
    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
     
    <?php
    header("Content-Type: text/html; charset=UTF-8");
     
    //define('ATSPHP', 1);//REMOVE ONCE ALL PLUGINS ARE UPDATED
    define('SAFRANA', 1);
    $CONF = array();
    $FORM = array();
    $TMPL = array();
    // Change the path to your full path if necessary
    $CONF['path'] = '.';
    // Connect to the database
    // Set the last argument of $DB->connect to 1 to enable debug mode
    require_once("{$CONF['path']}/settings_sql.php");
    require_once("{$CONF['path']}/sources/sql/{$CONF['sql']}.php");
     
    //$email = $_GET['email'];
    //$email=htmlspecialchars($_GET['email']);
    $email = mysql_real_escape_string($_GET["email"]);
     
    //echo "verif01 = ok ... following ...";
     
    //if($_GET['subscribe'] = "true") {
     
    //$email = "{$email}";
     
    if($email != "") {
    //$email = mysql_real_escape_string($_GET['email']);
    $newsletter_msg = "ok, we got your email, database check ...";
    }
    else {
    $newsletter_msg = "at least, enter an email adress,<br /> tsss tsss lol, :)";
    //$TMPL['newsletter_msg'] = "at least, enter an email adress, tsss tsss lol, :)";
    }
    echo $email;
     
    $sqlCheckAgainst = "SELECT * FROM newsletterdb WHERE email='$email'";
     
    $result = mysql_query($sqlCheckAgainst);
     
    if ($result) {
    $newsletter_msg .= "<br />Error : email already in database";
    }
    else {
    //echo 'failure: ' . mysql_error();
    $newsletter_msg .= "<br />OK, email not found, <br />following on step 2 ...";
    }
     
    $notfound = true;
     
    while($row = mysql_fetch_array($result)) {
     
    	if($row['email'] == $email) {
    		$notfound = false;
    		$newsletter_msg .= "<br />you've already subscribe to our newsletter !";
    	}
    }
     
    if($notfound == "true") {
     
    	$setupdate = "INSERT INTO newsletterdb SET email='$email'";
     
    	if (mysql_query($setupdate)) {
    		$newsletter_msg .= "ok, yes email added !";
    	}
     
    	else {
     
    	$newsletter_msg .= "nope, we had a trouble<br /> updating the db,<br />plz come back later ... !";
    		//echo 'failure: ' . mysql_error();
    	}
     
     
    }
     
    echo $newsletter_msg;
     
     
    //}//subscribe = true
    ?>
    Comment récupérer ma variable "email" pour la traiter dans mon fichier de traitement ajax ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 136
    Points : 44 930
    Points
    44 930
    Par défaut
    Bonjour,
    pas tout compris sauf que tu n'envoies pas la valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TINY.ajax.call('a_ajax_subscribe_newsletter.php', 'newsletter_content', 'newsletter_display(\'newsletter_red\')')">
    3 paramètres passés est la donnée et le 4éme, dixit call:function(u,d,f,p){.

    De plus dans la fonction tu récupères var useremail = document.getElementById('saisissez_email').value;, mais tu ne l'utilises pas.

    Dernière chose autant écrire var useremail = T$('saisissez_email').value;.

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    arrfff ben je pensais l'avoir placé directement dans le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    x.open('GET',u + '?email="+useremail"',true);
    u n'est il pas le nom du fichier ? aaaa ouuurrfff suis trop nulll, désolé,
    bon je capte que là on va récupérer la valeur par le biais de la function,
    oui hihiiii judicieux, lol

    décidemment, suis faché avec java, arrgghhhh
    bon j'etai dans une method GET, d'apres la doc de tiny ajax, j'ai fait comme ceci donc, dans le cas du GET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TINY.ajax.call('a_ajax_subscribe_newsletter.php?email=useremail', 'newsletter_content', 'newsletter_display(\'newsletter_red\')')">
    'email=$T[email)'
    evidemment ça ne marche pas ma connaissance de java est en dessous de zero,
    ou j'en ai trop fait ces derniers jours, c bizarre que je bug à ce point sur un truc si simple,
    j'ai pourtant reussi des script java de dinguo par le passé, ou je dois viellir trop vite ....


    j'ai meme essayé avec la method POST, je n'y arrive pas quand meme.

    j'ai remplacé ma ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var useremail = document.getElementById('saisissez_email').value;
    par ta version tellement plus logique, lol )))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var useremail = T$('saisissez_email').value;
    j'ai fait un truc de fou, du grand n'importe quoi, lol, ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'a_ajax_subscribe_newsletter.php?email=<script type='text/javascript'>document.write(useremail)</script>'
    je susi dans une form en html, impossible d'utiliser un
    suis pommé quoi .... mais merci pour ton aide , c'est tres appreciable !!!!

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    bon j'ai encore essayé autrement :

    j'ai une structure de fichiers qui fait appell à des fichiers php qui eux meme vont etre executés par un skin.php qui affiche les resultats dans des .html, oufff oufffff
    c pour ça ma structure est du genre index.php?a=pagececioucela

    toutes les variables sur mon site, sont gérées par le bias de class php,
    et remplissent des $TMPL['var1']; ou $TMPL['var2']; ou $TMPL['userid'];

    etcetera ......


    bon, ceci etant précisé :

    comme mon formulaire d'abonnement à ma newsletter est dans mon footer,
    po de soucis, je gere direct avec mon index.

    j'ai donc déclaré une variable dans mon index :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $TMPL['email'] = "<script type='text/javascript'>document.write( '<?php echo ''.$useremail.''; ?>' );</script>";


    et dans mon wrapper.html, mon fichier principal ou est mon footer )))


    j'ai mis :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TINY.ajax.call('a_ajax_subscribe_newsletter.php?email={$useremail}', .......
    si je me fais bien comprendre, SI tu as deja rencontré ce genre de structure,
    ya une chance que tu comprennes comment fonctionne mon site, oufff oufffff


    enfin, bref, resultat, j'arrive toujours pas a passer cette fichue variables ....


    bien sur j'ai un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $email = $_GET['email'];

    dans mon fichier de traitement ajax, le : a_ajax_subscribe_newsletter.php
    j'ai viré le mysql_real_escape_string .... encore une erreur debile, faut vraiment que je dorme un peu de temps en temps, hihihiiiiiii

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    hey ça marche, ça marche, enfin presque !!!!


    SI je tape sur la touche entrée après avoir ecrit mon email, ben la page se rafraichit avec comme adresse par exemple : index.php?email=monemailquejaientre

    heheeeee

    par contre, si je click sur mon ti div onclick .... mon gros bouton,
    ben mon fichier de traitement ajax, ne reçoit kedalle

    grrrrrrr grrrrrrrrrr pourtant j'ai bien fait un $email = $_GET['email'];

    boooooooooo suis degout-é là .........

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    voilà mon site au fait : )))))))))

    http://safran-du-petit-louvre.net

    amuses toi a rentrer n'importe quoi comme email, tu verras la variable est bien passée dans l'url, mais mon fichier sencé la recevoir, reçoit rien !!!!

    si tu appuie sur la touche entrée, au lieu de clicker sur mon gros bouton,
    ben tu verras la page se rafraichir et la variable est bien placée dans l'url,
    genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://safran-du-petit-louvre.net/index.php?email=titi@toto.fr

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 136
    Points : 44 930
    Points
    44 930
    Par défaut
    pour commencer java != javascript.

    quand je dis que tu n'utilises pas la variable var useremail, car la fonction ne recevant de paramètre p elle effectue une requête POST et non GET
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     if(p){
        x.open('POST',u,true);
        x.setRequestHeader('Content-type','application/x-www-form-urlencoded');
        x.send(p)
    }else{
        x.open('GET',u,true);
        x.send(null)
    }
    donc ton x.open('GET',u + '?email="+useremail"',true); ne sert à rien, à ce sujet lorsque l'on utilise une fonction d'une bibliothèque autant ne pas la modifier et passer par une fonction tampon, pour y voir plus clair par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function envoiPOST(){
      var url  = 'a_ajax_subscribe_newsletter.php';
      var dest = 'newsletter_content';
      var func = 'newsletter_display(\'newsletter_red\')';
      var para = 'email=' +T$('saisissez_email').value;
      TINY.ajax.call( url, dest, func, para);
    }
    function envoiGET(){
      var url  = 'a_ajax_subscribe_newsletter.php?email=' +T$('saisissez_email').value;
      var dest = 'newsletter_content';
      var func = 'newsletter_display(\'newsletter_red\')';
      TINY.ajax.call( url, dest, func);
    }
    avec un appel onclick="envoiPOST();" ou onclick="envoiGET();".

    Il y aurait beaucoup à dire entre autre pourquoi utiliser une méthode TINY.ajax alors que utilisant jQuery par ailleurs tu pourrais utiliser la sienne.

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    ouuuuuuulaaaaaaaaaa c'est ce qui s'appelle avoir de graves lacunes,
    je suis vraiment désolé pour mes problèmes de compréhension,
    il faut vraiment que je me décide à approfondir très sérieusement le sujet :
    java et javascript, ouuuchhh

    TU ES GENIAL NoSmoking !!!!!!!

    iiiiiiaaaaaaaaaa ça marche du tonnerre !!!

    Pour ceux et/ou celles qui aborderai le meme sujet que moi,

    je partage mon fichier de traitement php, ça peut servir à quelqu'un peut etre

    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
     
    <?php
    header("Content-Type: text/html; charset=UTF-8");
     
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////#############  ATTENTION PARTIE PERSO propre a ma structure de fichier !!!!
    ////#############  Remplacer toutes ces lignes par votre propre procédure de conexion à votre base de données !!!
    //define('ATSPHP', 1);//REMOVE ONCE ALL PLUGINS ARE UPDATED
    define('SAFRANA', 1);
    $CONF = array();
    $FORM = array();
    $TMPL = array();
    // Change the path to your full path if necessary
    $CONF['path'] = '.';
    $TMPL['version'] = '0.6';
    // Set to 1 to display SQL queries and GET/POST/COOKIE data
    $CONF['debug'] = 0;
     
     
    // Require some classes and start the timer
    require_once("{$CONF['path']}/sources/misc/classes.php");
    $TIMER = new timer;
     
    // Connect to the database
    // Set the last argument of $DB->connect to 1 to enable debug mode
    require_once("{$CONF['path']}/settings_sql.php");
    require_once("{$CONF['path']}/sources/sql/{$CONF['sql']}.php");
    //require_once("{$CONF['path']}/button_config.php");
     
    $DB = "sql_{$CONF['sql']}";
    $DB = new $DB;
    $DB->connect($CONF['sql_host'], $CONF['sql_username'], $CONF['sql_password'], $CONF['sql_database'], $CONF['debug']);
    mysql_query("SET NAMES 'utf8'");
     
    ////#############  FIN DE MA PARTIE PERSO propre a ma structure de fichier !!!!
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
     
     
    //  ICI commence le code commun à tout le monde :))))))))))
     
     
    unset($found);
     
    // function de controle du format de l'adresse email envoyée
    function VMail($email)
    {
       $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
       if(preg_match($Syntaxe,$email)) 
          return true; 
       else 
         return false; 
    }
     
    $email=htmlentities($_GET["email"]);
     
    if($email == "") // le champ est vide, tsss tsss quelle bande de marioles !!!
    $newsletter_msg = "at least, enter something !<br />";
    else { // ok il y a une valeur, on la teste ...
    $newsletter_msg = "We check your email ...<br />";
     
    if(!VMail($email))  // si le format est invalide, encore des comiques de passage ....
    $newsletter_msg .= "sorry, but email is on a bad format !<br />... Check it and retry ...<br />";
    else { // le format est bon, on poursuit le script
    $newsletter_msg .= "ok, email validated ...<br />";
     
     
    $sqlCheckAgainst = "SELECT * FROM newsletter_emails WHERE email='$email'";
    $result = mysql_query($sqlCheckAgainst);
     
    if ($result) { // ok on a pu accéder à la base de données, on continue ...
     
     
    while($row = mysql_fetch_array($result)) {
    if($row['email'] == $email) { // l'adresse email existe déjà, soit le user est dinguo, soit il a oublié qu'il a déjà souscrit ...
    $newsletter_msg .= "Sorry, but you've already subscribe<br />To our newsletter !<br />";
    $found = 1;
    }
     
    }
     
     
    if($found != "1") { // l'adresse email n'existe pas dans la table, c bon on met à jour ...
    $setupdate = "INSERT INTO newsletter_emails (email, category) VALUES ('".$email."', '0')";
    mysql_query($setupdate);
    $id = mysql_insert_id();
     
     
    if($id == 0)  // arrgghhh on n'a pas pu ecrire dans la table, encore une connerie du serveur .... :)
    $newsletter_msg .= "Sorry, but we had a trouble,<br />Updating the database,<br />Please come back later ... !<br />";
    else // ben c ben correct tabarnak !!! un nouvel inscrit à la newsletter, yepaaaaaaa !!!!!!!
    $newsletter_msg .= "ok, yes email added !<br />We thank you for your interrest !<br />";
    }
     
    }// fin du test $result
     
    else { // on a pas pu accéder à la base de donnée, mdrrr !!!!!!!! 
    echo 'failure : no way, we didnt succeed to connect to DB, plz send us a contact msg, 
    to infor us about this erorr. an admin or the fucking conceptor will soon check the script ...' . mysql_error();
    }
     
    }
     
    }
     
     
     
    echo $newsletter_msg;
     
     
    ?>

    j'ai inclus quelques commentaires pour les grosses taches comme moi ! ))
    bon en général pour le php c tout bon, je touche ma bille,
    mais trop souvent je fais trop compliqué,
    meme si ça fonctionne, ben c souvent trop compliqué, enfin ... ça fonctionne quoi ))))


    MERCI , merci et RE RE RE MERCI encore NoSmoking !!!!!!!!!!

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    d'ici quelques jours, je vais me refrapper ce systeme en utilisant jquery,
    puisque en effet je l'utilise un peu de partout sur tous mes sites, déjà,
    hhihiiiii je viens de dégoter un exemple simple et clair utilisant jquery form

    haaaaaa et je vais scrupuleusement et attentivement parcourir les forums ICI,
    ouuu ouuuuuuuuuuuuu ya une tonne de super bonnes choses à apprendre,
    sur vos forums, c mega top,

    comme on dit : CONGRATS, BA RA VO, FELICITATIONS pour vos forums !!!

    c'est une mine de connaissance, que java ... parcourir ... et plus tard ... javascript er quelquechose de bien codé !!!

    ))))))))))))

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

Discussions similaires

  1. [AJAX] Récupération de variable avec Ajax dans Wordpress
    Par kaelig dans le forum jQuery
    Réponses: 14
    Dernier message: 03/11/2014, 12h05
  2. Réponses: 1
    Dernier message: 04/03/2009, 15h41
  3. [AJAX] Récupération de variable php
    Par akara dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/07/2007, 16h52
  4. [AJAX] Passage de variable avec espace blanc et insecam
    Par ascito dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/07/2007, 12h51
  5. [AJAX] récupération de formulaire avec AJAX
    Par abda1000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/03/2007, 10h59

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