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 :

Affichage avant fin de traitement d'une fonction


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de pierrot2908
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mars 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Mars 2007
    Messages : 131
    Points : 70
    Points
    70
    Par défaut Affichage avant fin de traitement d'une fonction
    Salut,
    Est il possible de demander a PHP de faire un affichage avant qu'il est terminé d'exécuter une fonction longue?

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function test(){
    echo 'Veuillez patientez...";
    // affichage
    reste de la fonction
    }
    possible ou l'utilisation de AJAX est indispensable?
    merci pour vos réponse

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    oui c'est tout à fait possible mais en général ça sera du debugage car il vaut mieux éviter de faire des echo dans une fonction

    Evidemment, certaines fonction servent justement à écrire du texte... par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function print_debug($array, $name = "") {
         echo "<pre>---".$name."---\n\l";
         print_r($array);
         echo "</pre>";
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 107
    Points : 55
    Points
    55
    Par défaut
    Peso je fais souvent des echo dans mes fonction. Quand on affiche des formulaire, des résultat de traitement d'opération, ou des choses comme ca.

    J.

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Citation Envoyé par Jinx_ Voir le message
    Peso je fais souvent des echo dans mes fonction. Quand on affiche des formulaire, des résultat de traitement d'opération, ou des choses comme ca.

    J.
    On essaye d'éviter pour n'avoir qu'un seul retour...

    exemple avec une petite fonction vite faite pour un formulaire (c'est pas hyper utile mais bon j'ai rien d'autre en tête là)

    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
     
    function validField($field, $cond = "") {
        $ret = true;
        if(isset($_POST[$field]) && !empty($_POST[$field])) {
            $ret = "Veuillez remplir le champ";
        } else {
            if(!empty($cond)) {
                if(!preg_match($cond, $field)) {
                    $ret = "Veuillez matcher l'expression régulière";
                }
            }
        }
        return $ret;
    }
    if(isset($_POST) && !empty($_POST)) { // façon grossière de savoir si le form est soumis
        echo validField('name');
        echo validfield('password', '/([a-z0-9-_!)/i');
    }

  5. #5
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour,

    moi aussi, j'ai des fonctions qui affichent des trucs...
    (mais là n'est pas la question me semble-t-il)

    Si je comprends bien ta question, tu voudrais afficher un message d'attente, c'est à dire forcer l'affichage de ta page dans le navigateur avant que ta page ne soit construite entierement.

    alors oui, AJAX est le mieux
    => une page qui affiche 'chargement en cours' et AJAX qui va lancer la page PHP pendant ce temps

    mais sinon, tu peux 'bidouiller' avec PHP
    permet de vider les tampons de sortie, c'est à dire d'envoyer la page en cours avant la fin
    => la fonction flush

    en fait, je crois meme qu'il faut mieux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ob_start();
    ob_flush();
    mais là, je suis pas tres calé...

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    ob_start(); // à partir d'ici, rien ne sera affiché SAUF si le code s'arrête avant le end_flush !
    // le code et l'affichage
    // blablabal
    $out = ob_get_clean();
     
    // Pour afficher ce qui a été echo entre le start et le end :
    echo $out;
    ?>

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/05/2008, 11h34
  2. Réponses: 4
    Dernier message: 11/06/2007, 16h28
  3. Réponses: 2
    Dernier message: 27/05/2007, 02h38
  4. "const" en fin de ligne pour une fonction
    Par 30barrett40 dans le forum C++
    Réponses: 5
    Dernier message: 07/03/2007, 07h46
  5. [Système] Attendre la fin d'éxécution d'une fonction
    Par Marrevel dans le forum Langage
    Réponses: 3
    Dernier message: 24/02/2006, 15h42

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