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 :

[PHP-JS] Barre de chargement pendant traitement PHP


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 30
    Par défaut [PHP-JS] Barre de chargement pendant traitement PHP
    Bonjour à tous !!!

    J'aimerais faire une barre de chargement pour faire patienter les utilisateurs. J'ai bien trouvé un code Javascript permettant de faire cela pour le chargement de la page, mais le problème est le suivant : le script n'execute qu'une fois l traitement PHP réalisé (le serveur traite la page, puis l'envoie au navigateur...Ce n'est donc qu'à partir de ce moment que le navigateur commence le traitement Javascript d'afficharge de la barre). Hors, c'est PENDANT ce traitement que j'aimerais mettre ma barre ! Il s'agit d'un test de connection sur un annuaire LDAP, ce qui peut prendre plusieurs secondes (verifier si les params rentrés a l'aide d'un formulaire sont correctes ou pas.).

    Je ne peux pour l'instant pas utiliser AJAX qui permettrait de faire ce genre de choses, ni ouvrir un popu, donc je cherche une autre solution...Si quelqu'un a déjà réalisé cela ou à une idée, je suis preneur !

    Merci d'avance à tous !

  2. #2
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Par défaut
    Salut Floweract,

    je n'ai jamais fais ce genre de chose, meme si j'ai deja pensé a en faire (:

    moi je partirai sur une boucle infini, et tu sortirais de cette boucle au moment ou tu recevrais un message de sorti

    lol ... un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for (;;) {
        if ( $this->sort() )     // On sort
            break;
     
        usleep(50000);          // Calme de 50ms
        /* affichage d'un truc qui s'incremente lol */
        flush();			// vide les tampons de sorti du nav
        ob_flush();
        $this->checkMsg();    // Une methode qui intercepterais les messages	
    }
    enfin, je vois un truc du style

    tu en penses quoi ?

    sahid

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 30
    Par défaut
    Oh, je découvre la fonction flush() grace a toi...

    Si je fais ça :

    -J'appelle ma fonction d'affichage de mon formulaire (fonction qui réaffiche les éléments passés en POST dans mon formulaire).
    -Dans l'en tete de ma page HTML affichée, il y a une DIV "Veuillez patienter", que j'affiche d'entrée.
    -Je flush() --> le contenu part, ma fenetre s'affiche avec cette div "Veuillez patienter".
    -Mon script de connection se lance.
    -Lorsqu'il est finit, je fais disparaitre ma DIV.

    Je pense que ca peut marcher....Je ne vois pas trop en quoi consiste la methode que tu m'as décrite :"$this->checkMsg(); // Une methode qui intercepterais les messages"....(A propos, je suis en PHP4, et pas d'objet )

    Je précise aussi que j'ai juste besoin d'un message inanimé, pas une barre de progression réelle...
    Merci énormément déjà Sahid pour ta réponse !

    EDIT : bon, je viens de tester, ca semble marcher...Pour tester la fonction flush(), je met un usleep() de plusieurs secondes au début de mon script, juste apres un echo "blablabla"...Ca donne le résultat attendu : "blablabla" s'affiche, puis le navigateur travaille pendant le temps du sleep, et enfin l'affichage se fait. Ca devrait donc fonctionner en mettant en flushant juste avant le test de connection qui prend du temps !

    Merci 1000 fois Sahid !!!

  4. #4
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Par défaut
    hum...

    j'etais parti un peu dans le compliqué.
    la methode checkMsg(), etait déstiné a intercepter les messages recu pour savoir où le programme en est dans le chargement, et elle aurais commandé la methode sort(), quand l'appli aurait fini son boulot...

    bref

    hum ... sinon tu peux essayer ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // pages chargement.php
    <div id="load">chargement...</div>
    <?php
    /* script de conexion */
     
    usleep(300000) //calme 3seconde
    header("Location: autrePage.php");
    ?>
    bon c un peu bidouille quand meme lol

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 30
    Par défaut
    Bon de toute manière c'est bon la...C'est tout con, ce que j'ai fait, je te décris dans l'ordre :

    -Appel de la fonction affichage qui bufferise mon formulaire re-rempli.
    -flush(), qui débufferise, donc le formulaire s'affiche, avec la div chargelment.
    -Appel de la fonction de connection.

    Et voila !!! J'ai plus qu'a faire disparaitre la div une fois la connection finie.

    Merci !!!

    EDIT : en fait, le problème venait d'ailleurs...Mon serveur n'est pas configuré pour bufferiser toute la page, mais il y avait un </body> quelquepart dans l'en ete de la page qui empechait le script de s'effectuer correctement, ce qui m'a amené a penser que le serveur bufferisait toute la page...En gros, une grosse couillonade comme on dit chez moi !

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

Discussions similaires

  1. script barre de chargement pendant copie base de donnee
    Par lnikolanta dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2009, 02h56
  2. [AJAX] Barre de chargement pendant une requête mysql
    Par Gabzor dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/02/2009, 11h25
  3. Page de chargement pendant traitement de données
    Par Flackou dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 10/12/2008, 23h47
  4. Réponses: 3
    Dernier message: 27/09/2006, 11h41
  5. [JProgressBar] Afficher barre d'attente pendant traitement
    Par Regis.C dans le forum Composants
    Réponses: 10
    Dernier message: 02/09/2005, 16h43

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