Page 1 sur 1

[PHP] problème de séquence de traitement

Posté : 29 août 2006, 15:35
par jdavid
dans la suite de mon post concernant les variables.

j'ai une page fct.php avec des functions
- declaration de variables de session
- connection B.D.
- requete SQL qui remplissent les var de sess
- ...

j'ai une page Graphe.php qui appelle les fonctions et génère un graph (avec les php Artichow)

J'ai une page main.php qui doit afficher le graph et des var de sessions renseignés par les requetes SQL du graph.

/* main.php */

DCL_VarSession()         // Fonction de déclaration des var de session

echo "<img src=\"Graphe.php\"/> ";    

echo "Total: ".$_SESSION["total"];     
        // le remplissage se fait via la 'function charge()'  
        //  appelé par Graphe.php




/* charge() */
function charge()
{
    //ensemble de requete SQL  LONGUES en temps
    $_SESSION["total"] = resu requete;
}



/* Graphe.php */

charge();
$graph.draw

PROBLEME :
il m'affiche $_SESSION["total"] avant d'avoir terminé d'executé la function charge().

Comment faire pour éviter ce phénomène ?

Merci

Posté : 29 août 2006, 15:38
par Cyrano
Le code est lu par l'interpréteur comme on lit un livre : du haut à gauche jusqu'en bas à droite et le code est exécuté au fur et à mesure. Mets ta fonction charge() en début de code et refais l'essai.

Posté : 29 août 2006, 15:41
par Ryle
Mets ta fonction charge() en début de code et refais l'essai.
Juste une petite précision (ben ouais, je me suis fait grillé de quelques secondes sur la réponse, alors histoire de dire quelque chose quand même ;)) C'est surtout l'appel à la fonction, et donc l'alimentation de ta variable de session qui doit être réalisé avant que tu ne demandes son affichage.. :)

Posté : 29 août 2006, 16:16
par jdavid
dans la chronologie elle est déjà devant, charge() est appelée par Graphe.php qui est avant l'affichage de la variable.

Par contre ce code est intégré dans du HTML :
/* main.php */ 

   <?php  DCL_VarSession()     ?>
 
   .......

   <div id="contenu_graph">
      <?php       echo "<img src=\"Graphe.php\"/> <br>";  ?>              
   </div>

   <div id="contenu_chiffre">
         <table>        
              <tr>                                  
                   <td>
                      <?php echo "Total: ".$_SESSION["total"];     ?>
                   </td>
    ..........              

Posté : 29 août 2006, 16:24
par Ryle
(ah ben j'avais pas compris ca comme ça.. je croyais que c'était un seul fichier.. comme quoi des fois c'est bien de lire les commentaires ;))

Ton problème vient du fait que ton appel a graph.php se fait via l'affichage d'une image et non pas depuis ton code php. Le navigateur fait cet appel après que la page html ait été générée et envoyée à l'utilisateur, d'où le fait que la valeur que tu affiches ne soit pas a jour puisqu'elle n'est modifiée qu'ensuite :)