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 :

[AJAX] Appeller une page php en Ajax pour action sur Mysql


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 240
    Par défaut [AJAX] Appeller une page php en Ajax pour action sur Mysql
    Bonjour,

    J'aimerais pouvoir gérer mon admin en AJAX, j'ai réussi à créer l'interface en php, principalement de la gestion de base de donnée (supprimer,déplacer ...)

    mais le rechargement systématique de la page aprés chaque action prend trop de temps pour ce que je veus faire.

    J'aimerais donc simplement pouvoir appeller une page php en AJAX sans avoir à recharger ma page.

    Voici mon code actuel :
    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
    <?php
    if ($_GET['date'] != NULL)
    {  
    // envoi vers demande
    $date = $_GET['date'];
    mysql_connect("localhost", "root", "");
    mysql_select_db("mabase");
    mysql_query("INSERT INTO corbeille SELECT * FROM demande WHERE date='$date'"); 
    // suppresion
    mysql_query("DELETE FROM demande WHERE date='$date'");   
    mysql_close();   
    Header('Location: affiches.php');
    } 
    else 
    {   
    Header('Location: affiches.php'); 
    } 
    ?>
    Pour faire l'action j'ai simplement créé un lien :
    <a href="supprimer.php?date=<?php echo $donnees['date']; ?>" title="">Supprimer</a>

    Est-il donc possible de faire la même chose en AJAX, j'ai beau chercher de partout, je ne trouve pas comment faire simple ...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut
    En fait ton lien ne doit plus appeller une page php mais ta fonction ajax.

    Fais le ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="#" onclick="supprimer('<?php echo $donnees['date']; ?>')">Supprimer</a>
    Après, tu créer une fonction javascript supprimer() auquel tu passe la date en paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function supprimer(date)
    {
          /*ici tu créer ton objet XmlHttpRequest et tu fait appel à ta page php grâce à la méthode open (tu passe ta date en mode GET (1er paramètre), avec une url du style "supprimer.php?date="+date (2eme paramètre), en asynchrone (le 3eme paramètre à "true"), tu envoie ta requete (send) et tu traite la réponse*/
    }
    Pour la création de l'objet XmlHttpRequest et son traitement, tu applique ce que tu verras dans n'importe quel tutorial ajax. fais des essais, ca devrait marcher !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 240
    Par défaut
    Salut,

    J'ai suivi tes explications mais au lieu de faire l'action dérisé j'ai un message d'erreur

    voici se que j'ai mijoté ^^

    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
    // Code JavaScript
    function supprimer()
    {
        xmlHttp = GetXmlHttpObject();
        if (xmlHttp == null)
        {
            alert("Votre navigateur ne supporte pas les requêtes HTTP.");
            return false;
        }
        var url="supprimerajax.php"; // le script à appeller
        // fonction à exécuter dès réception de la réponse
        xmlHttp.onreadystatechange = function(){
            if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
                alert(xmlHttp.responseText); //on affiche ce que le serveur renvoie
        }
        xmlHttp.open("GET", url, true);//envoi en GET asynchrone
        xmlHttp.send(null);
        return true;
    }
    </script>
    et dans ma page effacer.php

    <?php
    if ($_GET['date'] != NULL)
    {
    // envoi vers demande
    $date = $_GET['date'];
    mysql_connect("localhost", "root", "");
    mysql_select_db("eckopland2");
    mysql_query("INSERT INTO corbeille SELECT * FROM demande WHERE date='$date'");
    // suppresion
    mysql_query("DELETE FROM demande WHERE date='$date'");
    mysql_close();


    J'ai du faire une erreur mais où ????

    ps: J'ai peu tout de même profiter d'ajax pour le message d'erreur lol

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Par défaut
    Salut,

    Quel est le message d'erreur ?

    Premièrement, je remarque tu envoie "null" à ta page php
    donc ton code ne s'exécutera pas.

    Deuxièment, dans ta page php, tu ne renvoie rien.
    Pour renvoyer quelque chose, il faut faire un "print ...".

    Peut être que ton erreur vient de là que dans lorsque tu ne renvoie rien responseText renvoie null.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 36
    Par défaut
    Alors plusieurs remarques sur ton code :

    déjà, pourquoi tu met une url "supprimerajax.php" si ton fichier s'appelle "effacer.php"?

    De plus n'oublies pas de faire passer la variable date en paramètre dans ton url : genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var url="supprimerajax.php?date"+date;
    de même n'oublie pas de faire passer en date dans ta fonction supprimer() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function supprimer(date)
    ensuite dans l'ordre tu dois faire appel à xmlHttp.open (pour appeller la page php), puis à xmlHttp.onreadystatechange (la tu fais la fonction traitant la réponse), et enfin à xmlHttp.send(null) (laisse le null, c'est bien).

    dans ta fonction correspondant à ton onreadystatechange, fais plutot ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            if (xmlHttp.readyState == 4)
    	{
    		if (xmlHttp.status == 200)
    		{	
    			alert(xmlHttp.responseText);
    		}
    	}
    Cela dit, effectivement ça n'affichera rien car ton fichier php ne fait aucun affichage. Mais tes opérations sql devraient être réalisées.

    Si t'as toujours une erreur, tiens moi au courant.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 240
    Par défaut
    Salut,

    Merci de votre aide, j'ai suivi vos indications, j'ai donc codé sa :

    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
     
    <script type="text/javascript">
    // Code JavaScript
    function supprimer(date)
    {
        xmlHttp = GetXmlHttpObject();
        if (xmlHttp == null)
        {
            alert("Votre navigateur ne supporte pas les requêtes HTTP.");
            return false;
        }
        var url="supprimer.php?date"+date; // le script à appeller
        // fonction à exécuter dès réception de la réponse
        xmlHttp.onreadystatechange = function (){
            if (xmlHttp.readyState == 4)
    	{
    		if (xmlHttp.status == 200)
    		{	
    			alert(xmlHttp.responseText);
    		}
    	}
        xmlHttp.open("GET", url, true);//envoi en GET asynchrone
        xmlHttp.send(null);
        return true;
    }
    }
    </script>
     
    <a href="#" onclick="supprimer('<?php echo $donnees['date']; ?>')">Supprimer</a>
    Mais mon lien ne répond plus
    Je ne comprend vraiment pas, ma base de donnée ne bouge pas, c'est si dur que sa !!!

    Si vous avez la moindre idée ???

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/03/2017, 18h50
  2. Réponses: 0
    Dernier message: 06/12/2013, 14h59
  3. Réponses: 7
    Dernier message: 14/03/2010, 10h19
  4. [AJAX] Réafficher d'une page php avec ajax
    Par red_nour dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/06/2007, 08h21
  5. [SQL] appel une page php
    Par sandytarit dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/05/2006, 15h44

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