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

jQuery Discussion :

jquery et classe PHP


Sujet :

jQuery

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Points : 92
    Points
    92
    Par défaut jquery et classe PHP
    Bonjour/ bonsoir,

    Je viens de réécrire une petite application en POO PHP. Dans une version précédente (donc en procédurale), je n'avais pas de soucis existentiels quant à faire dialoguer les fonction ajax de jquery avec le PHP. Mais maintenant, je dois avouer que je me retrouve tout bête, car je ne peux pas accéder directement à l'objet et à ses méthodes. Et je n'ai aucune idée de comment procéder sur ce coup là...
    Merci à celui/ celle qui voudrait bien m'orienter...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Points : 92
    Points
    92
    Par défaut
    Je vais tâcher d'apporter quelques précisions supplémentaires avec du code:
    Côté java-script, j'ai le script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $('#newCompte').submit(function(){
            $.post('newCompte.php', $('#newCompte').serialize(), function(data){
                if(data != ''){
                    $('#message').append('Le compte a bien été créé');
                } else{
                    $('#message').append('Le compte n\'a pas été créé');
                }
            });
            return false;
        });
    Et dans 'newCompte.php', j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    if (!empty($_POST)) {
        $editComptes->newCompte($_POST);
    }
    //------------------------------------------------------------------------
    ?>
    <h2>Création d'un compte</h2>
    ...
    <form name="newCompte" id="newCompte" method="post" action="">
    <!-- formulaire en question qui envoie les données-->
    Mais je butte bien sur l'objet:
    Undefined variable: editComptes in C:\wamp\www\...
    Comment pour faire communiquer ces deux parties ?
    merci,

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    La page "newCompte.php" qu'appel Ajax est une tout autre page, donc totalement indépendant de celle où se trouve le code Ajax.

    Il faut donc inclure tout ce que celle ci à besoin, comme inclure la classe où $editComptes serait à l'origine.
    Après vient d'autres problèmes que sont la persistance des données.
    Là, faut voir.

    En tout cas, il faut bien visualiser que ce que fait l'Ajax c'est de lancer une requête HTTP à ton serveur, et en attendre une réponse (soit du HTML, Json, etc ...) au même titre que tout autre page.


    Aussi, de mon coté j'appel jamais $.post directement, même si c'est plus directe, j'exploite plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $.ajax({
    type: "POST",
    url: "/unePage/index/",
    data: "...les paramètres...",
    ... etc ...
    });
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    coté php dans ta page tu fais des include des classes ? je ne les vois pas
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Points : 92
    Points
    92
    Par défaut
    Oté ! comment y lé ? Eh oui, je viens aussi de la Réunion !
    Pour en revenir à mes affaires, newCompte.php est inclu dans un fichier (parent) dans lequel je fais appel à toutes les classes, y compris celle pour le fonctionnement de newCompte.php... Ce qui donne brièvement:
    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
    // Tous les fichiers nécessaires au fonctionnement de l'application
    include_once '../system/connect.php';
    include_once '../system/checkSession.php';
    ...
    include_once '../classes/classEditComptes.php'; //classe contenant la méthode newCompte 
    ?>
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
    <head>
    ...
    <div id="mainContent">
          <?php
          switch ($content) {
          	case "search" : include 'searching/searching2.php';
            break;
            case "new" : include 'newCompte.php';
            break;
            default : include 'searching/searching2.php';
          } ?>
        </div>
    ...
    La partie PHP est bien opérationnelle... Et le java-script est intégré dans ce même fichier.

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Oté ! comment y lé ?
    Et ben lé là marmaille

    Undefined variable: editComptes in C:\wamp\www\...
    Si la classe est bien incluse, alors c'est au niveau de son instanciation que ça poserait problème.
    $editComptes ne serait pas instancié, donc n'existerait pas.



    ... newCompte.php est inclu dans un fichier (parent) dans lequel je fais appel à toutes les classes, y compris celle pour le fonctionnement de newCompte.php...
    Oui, que le fichier newCompte.php soit inclus dans un fichier parent, surement, mais l'Ajax lui fait appel à newCompte.php, et uniquement, pas au fichier parent (conteneur on va dire).

    Le problème maintenant c'est que si tu appel le fichier parent, c'est tout le code qui sera exécuté, et du coup tout le contenu HTML y compris le doctype, etc ... qui sera retourné.
    Ce n'est pas le but recherche je suppose.

    Comme ça au feeling, et pour résoudre ce problème rapidement, il faudrait créer un autre fichier qui lui intègrera le stricte minimum obligatoire, comme inclure les classes nécessaires, et cette fois sans tout ce HTML qui théoriquement ne serait pas correcte.
    L'Ajax ferait appel à ce nouveau fichier.
    Au bout, suffit de renvoyer ce qui est attendu.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Points : 92
    Points
    92
    Par défaut
    Salut,

    J'ai fini par isoler les fichiers incriminés. C'était effectivement je pense un problème d'appel de classe... mais il faut également que je revoie légèrement mon organisation de fichiers...
    Merci,
    Nou la trouvé alors!
    Ps : tu es de quel côté de l’île ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    plus simplement il me semble que jquery permet de ne prendre qu'une partie d'une page chargée par ajax

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#destination").load('source.php #elementunique')
    ainsi tu ne récupères que la partie souhaitée de la page source.

    C'est pas optimum dans le sens ou ça fait bosser le serveur pour une page complète alors que tu n'en utilises qu'une partie.
    Mais ça t'évites d'avoir a recoder
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Points : 92
    Points
    92
    Par défaut
    Merci!

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 08/04/2006, 10h39
  2. [POO] Classe PHP super simple Mais j'y arrive pas
    Par mulbek dans le forum Langage
    Réponses: 10
    Dernier message: 17/03/2006, 15h33
  3. utilisation de classes php
    Par lipao17 dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2006, 12h02
  4. [POO] Question class php=>javascript
    Par jeff_! dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2006, 15h10
  5. [Class/PHP/Postgres] Problème de modélisation...
    Par k-reen dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 27/02/2003, 08h49

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