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 :

Faire un include sans avoir les affichages


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut Faire un include sans avoir les affichages
    Bonjour

    Pour une procédure de test, j'ai le code suivant, qui me permet de simuler le chargement de toutes mes pages sans les afficher.
    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
     
    <?php	
    	set_time_limit(500);
    	$sql = "SELECT page from __pages";
    	$query = mysql_query($sql);
    	$i = 0;
    	$nbpages = mysql_num_rows($query);
    	while($data = mysql_fetch_array($query)) {
    		$i++;
    		echo "Page $i sur $nbpages : $data[0]";
    		ob_start();
    		include $data[0];
    		ob_end_clean();
    		echo '<br>';
    	}
    ?>
    Problème, mes pages inclues comportent parfois la commande ob_flush(). Donc, elles s'affichent, alors que j'aimerais bien qu'elles ne s'affichent pas.
    Quelqu'un a-t-il une solution pour éviter que mes pages ne s'affichent ?

    Merci d'avance
    Y a-t-il

  2. #2
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    Je doute qu'une telle solution existe. Les commandes ob_xxx servent déjà a modifier le comportement de l'affichage.

    Si l'affichage est forcé dans tes includes, c'est sans doute que tu as un problème de concetption a la base.

    A la rigueur, tu peux te définir une variable "$is_flush_blocked = 1" avant de faire ta série d'include.
    Et dans le code de tes includes, tu fait un tests genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!isset($is_flush_blocked))
      ob_flush();

  3. #3
    Membre expérimenté Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    function ta_fonction($texte) {
      return '';
    }
     
    ob_start('ta_fonction');
    echo 'INVISIBLE';
    ob_flush();
    echo 'INVISIBLE';
    ob_end_clean();
    echo 'VISIBLE';
     
    ?>

  4. #4
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut
    OK, donc il faut que je remplace mes ob_end_flush par des ob_flush. Merci.

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

Discussions similaires

  1. Faire un \include sans nouvelle page
    Par Gwindor dans le forum Mise en forme
    Réponses: 2
    Dernier message: 14/05/2008, 15h32
  2. Réponses: 3
    Dernier message: 06/04/2007, 15h34
  3. [Système] INCLUDE sans passer les variables dans l'URL
    Par bonjour69 dans le forum Langage
    Réponses: 9
    Dernier message: 07/10/2006, 01h20
  4. Faire un CV sans avoir obtenu le BTS
    Par t_om84 dans le forum Etudes
    Réponses: 33
    Dernier message: 18/08/2006, 11h33

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