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

Langage PHP Discussion :

variable globale et ajax


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut variable globale et ajax
    Bonjour

    Je continue mes (mes)aventures en php
    Je vais simplifier pour que ce soit clair.

    J'ai une classe A qui me permet de communiquer via une socket et faire des accès à un serveur de fichier.
    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
      class A {
     
     
      function connexion ($serveur,$port){}
      function ouvre ($fichier) {}
      function suivant ($identifiant_fichier) {}
      function precedent ($identifiant_fichier) {}
     {
    ?>
    ensuite j'ai une page test qui affiche dans un tableau les 20 premiers enregistrements du fichier
    genre test.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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      </head>
      <body>
      <?php include("classA.php" ); 
          $m=new A();
          $m->connexion();
          $m->ouvre($monfichier);
      ?>
        <table>
        <?php
          for($i=0;$i<20;$i++) {
              m->suivant();
              echo "<tr> 
                      <td>".m->variable['a']."</td>
                      <td>".m->variable['b']."</td>
                      <td>".m->variable['c']."</td></tr>";
         ?>
         </table>
      </body>
    </html>
    Ca roule jusque là
    phase 2 : Mettre un bouton suivant qui affiche les 20 suivants sans rafraichir toute la page d'où l'appel à ajax d'après mon collegue..

    J'ai modifié mon test.php en ceci:
    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <script src="testjs.js" type="text/javascript"></script>
      </head>
      <body>
      <?php include("classA.php" ); 
          $m=new A();
          $m->connexion();
          $m->ouvre($monfichier);
          session_start();
          $_SESSION['monObjet']=$m;
      ?>
      <form name="form1" method="post" action="javascript:ModifZone()" >
        <input name="bouton1" type="submit" value="Suivant">
      </form>
      <table>
      <div id="lignes">
      </div>
      </table>
      </body>
    </html>

    Mon collegue m' a pondu un ajax où je ne maitrise pas tout encore
    testjs.js :
    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
     
    function ModifZone(conn)
    {
     xmlhttp=GetXmlHttpObject();
     if (xmlhttp==null)
      {
      alert ("Your browser does not support AJAX!");
      return;
      }
     var url="ajax_test.php";
     xmlhttp.onreadystatechange=function ()
    {
     if (xmlhttp.readyState==4)
     {
      eval("document.getElementById('lignes').innerHTML = xmlhttp.responseText;");
     }
    }
     xmlhttp.open("GET",url,true);
     xmlhttp.send(null);
    }
     
    function GetXmlHttpObject()
    {
    if (window.XMLHttpRequest)
      {
      // code for IE7+, Firefox, Chrome, Opera, Safari
      return new XMLHttpRequest();
      }
    if (window.ActiveXObject)
      {
      // code for IE6, IE5
      return new ActiveXObject("Microsoft.XMLHTTP");
      }
    return null;
    }
    et le fichier ajax_test.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
     
    <?php
      session_start ();  
      header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
      header("Cache-Control: no-cache");
      //session_start();
      $m=$_SESSION['monObjet'];   
      $retour="";
          for($i=0;$i<50;$i++) {
            $m->suivant();
            $retour.= "<tr>
              <td>".$m->variable['a']."</td>
              <td>".$m->variable['b']."</td>
              <td>".$m->variable['c']."</td>
            </tr>";          
          }
     
    echo $retour;
     
    ?>
    Et bien ca ne marche pas

    J'ai ceci qui s'affiche :
    The script tried to execute a method or access a property of an incomplete object

    Je comprends que l'objet monObjet n'est pas défini.. En cherchant sur les forums, certains ont ajouté un include avant l'appel à $m=$_SESSION['monObjet'] mais je me retrouve avec la page rechargée dans la table..

    Allo maman bobo
    Pouvez vous m'aider Please????

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 16
    Points
    16
    Par défaut
    Il faut que le fichier qui correspond à la classe de ton objet soit inclus sinon php ne connait pas ton objet.

    dans ton fichier ajax_test.php il faut ajouter include("classA.php" );

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    bien vu docteur!

    Merci

    j'avais un autre soucis aprés :
    Warning: fwrite() expects parameter 1 to be resource, integer given in C:\wamp\www\classA.php on line 137
    mon 1er parametre dans la fonction write est une socket initialisée dans la classe même
    On dirait qu'il "perd" la socket (elle reste ouverte sur le serveur de fichier)
    En attendant dans la classe ajax_test.php, après la récuperation de mon objet par $m=$_SESSION['conn'], j'ai ajouté $m->conn = pfsockopen($m->adress, $m->port); et ca fonctionne
    C'est peut être pas l'idéal

Discussions similaires

  1. [AJAX] Variable globale avec Ajax
    Par devocx dans le forum AJAX
    Réponses: 4
    Dernier message: 18/07/2011, 11h44
  2. [AJAX] Variable Globale & AJAX
    Par Freygolow dans le forum AJAX
    Réponses: 2
    Dernier message: 16/04/2010, 21h59
  3. [AJAX - PHP] Variable globales
    Par yopopipo dans le forum AJAX
    Réponses: 2
    Dernier message: 16/02/2010, 07h19
  4. Réponses: 7
    Dernier message: 14/05/2009, 16h22
  5. [AJAX] Ajax.Request Vs variable globale
    Par fadex dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/01/2008, 22h51

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