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] Méthode $_POST qui ne fonctionne pas


Sujet :

AJAX

  1. #1
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut [AJAX] Méthode $_POST qui ne fonctionne pas
    Salut,

    La méthode $_POST ne fonctionne pas dans une fonction JavaScript

    Voici un extrait du code de ma page principale :
    Code php : 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
    ...
    <script language="javascript">
    function AjoutRelation()
    {
      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("POST","relation.php", true);
    xmlhttp.send();
    }
    </script> 
    ...
    <?php
    $sql = "SELECT * FROM T_TABLE";
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    echo "<select name='parent' size='10' onchange='AjoutRelation()'>";
    while($data = mysql_fetch_assoc($req))
    {
    echo "<option value=\"".$data['ID']."\">".htmlentities($data['LIB'])."</option>";
    }?>
    </select>
    <input type='button' value='Executer' />
    ...
    Et mon fichier relation.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php 
    include "includes/config.php"; 
    $id1 = $_POST['mot'];
    $id2 = $_POST['parent'];
    $niv = 1;
    $tp = "Null";
    $sql = "INSERT INTO T_TABLE (ID1, ID2, NIV, TYPE) VALUES ('".$id1."', '".$id2."', '".$niv."', '".$tp."')";
    echo $sql;
    $req = mysql_query($sql);
    ?>
    Cela ne récupère pas les données issues des $_POST
    Une ligne est bien rajoutée mais avec la valeur 0 pour id1 et id2.

    Avez-vous une idée ou se trouve mon erreur ?

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Tu n'envoies aucune valeur, donc effectivement, tu ne peux pas les récupérer en PHP !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Mais avec un POST, il ne doit pas y avoir de valeur, vu qu'il doit récupérer les valeurs de la page en cours

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut


    Envoyer une requête AJAX n'est pas la même chose que soumettre un formulaire.
    Lorsque tu soumets un formulaire, le navigateur sait qu'il faut associer à la requête les valeurs associées au formulaire que tu soumets, mais pour une requête AJAX, c'est à toi de dire quelles valeur est envoyée. Aucun formulaire n'est associé à une requête AJAX.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Alors comment récupérer les deux valeurs qui sont dans la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $id1 = $_POST['mot']; 
    $id2 = $_POST['parent'];
    Comme ceci : onchange='AjoutRelation(mot.value, this.value)'.

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Ben... en les envoyant !

    Pour parent, le plus simple est de lui donner un id (par exemple parent) et de récupérer sa valeur. Pour mot, il n'apparait pas dans ton code, donc je suppose qu'il s'agit aussi d'un input auquel on associe l'id idoine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlhttp.send('parent='+document.getElementById('parent').value+'&mot='+document.getElementById('mot').value);
    En fait, un peu comme indiqué dans n'importe quel tuto quoi...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    J'ai modifié le code comme dit :
    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
    <script language="javascript">
    function AjoutRelation()
    {
      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("POST","relation.php", true);
    xmlhttp.send('parent='+document.getElementById('parent').value+'&mot='+document.getElementById('mot').value);
    }
    </script>
    Mais plus rien ne s'ajoute dans ma table
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php 
    include "includes/config.php"; 
    $id1 = $_POST['mot'];
    $id2 = $_POST['parent'];
    $niv = 1;
    $tp = "Null";sql = "INSERT INTO T_TABLE (ID1, ID2, NIV, TYPE) VALUES ('".$id1."', '".$id2."', '".$niv."', '".$tp."')";$req = mysql_query($sql);
    ?>

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Pour la méthode POST, tu dois ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    Intercepte aussi le retour du serveur dans xmlhttp.onreadystatechange si le traitement a été bien effectué ou il y avait d'erreur.

    A+.

  9. #9
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Cela ne fonctionne toujours pas, voici mon code entier :
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" type="text/css" href="styles.css" />
    <meta name="description" content="" />
    <title>Titre</title>
    <script language="javascript">
    function AjoutRelation()
    {
      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("POST","relation.php", true);
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    xmlhttp.send("parent="+document.getElementById('parent').value+"&mot="+document.getElementById('mot').value);
    }
    </script>    
    </head>
    <body>
        <?php include "includes/config.php"; ?>
        <div id="contenu">
            <table border="0" width="100%" height="100%">
                <tr>
                    <td width="5%">&nbsp;</td>
                    <td width="45%">
                        <b>Termes parents :</b><br/>
                        <input size="30" type="hidden" value="<?php echo "15"; ?>" name="mot" />
                        <?php
                        $sql = "SELECT ID, LIB FROM T_TABLE ORDER BY LIB";
                        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
                        echo "<select name='parent' size='10' onchange='AjoutRelation()'>";
                        while($data = mysql_fetch_assoc($req))
                            {
                            echo "<option value=\"".$data['ID']."\">".htmlentities($data['LIB'])."</option>";
                            }?>
                        </select>
                        <input type='button' value='Executer' />
                    </td>
                    <td width="5%">&nbsp;</td>
                </tr>
            </table>
        </div>
     
    </body>
    </html>
    Où ai-je une erreur ?

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re,

    Tes éléments de formulaires n'ont pas d'id or que tu tentes d'y accéder avec getElementById().

    A+.

  11. #11
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Oups, je savais bien que c'était simple

    Merci.

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/04/2011, 17h13
  2. [paramiko] méthode close qui ne fonctionne pas
    Par Balbuzard dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 13/03/2011, 19h59
  3. [AJAX] xmlhttprequest.send qui ne fonctionne pas avec une variable !
    Par hoaxpunk dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/03/2009, 18h17
  4. Jquery/AJAX function click qui ne fonctionne pas.
    Par prome dans le forum jQuery
    Réponses: 2
    Dernier message: 12/03/2009, 12h57
  5. _POST qui ne fonctionne pas tout le temps
    Par johnson95 dans le forum Langage
    Réponses: 8
    Dernier message: 24/04/2008, 09h45

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