Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59

    fare l'echo di una variabile che viene dichiarata dopo

    Ciao a tutti, come prima cosa mi scuso per il titolo ma non so come descrivere il problema con 4 parole! :-P

    Ho un index in cui includo di volta in volta la pagina che richiamo tramite get.

    Nell'index in corrispondenza del meta tag title ho messo una funzione php che fa semplicemente l'echo di una variabile $titolo.
    Questa variabile fino ad adesso è memorizzata in un file php che non fa altro che controllare la pagina presa tramite get e associare di volta in volta il titolo della pagina.
    Fin qui nessun problema perchè faccio tutti i controlli prima che venga generato l'html.

    Il problema arriva adesso che le pagine cominciano a diventare un po tante e viene scomodo aggiornare di volta in volta quel file.

    Vorrei poter dichiarare la variabile $titolo direttamente nella pagina php che includo, ma essa viene inclusa nel body, ovvero dopo l'echo della variabile titolo, con il risultato che non viene stampato nulla (ovviamente...)!!!

    Ho provato a memorizzare la variabile titolo dentro una variabile di sessione (dichiarata nella pagina da includere) e facendo un refresh dela pagina effettivamente il titolo viene fuori perchè la variabile di sessione è li bella pronta...

    ma a parte sto metodo "stupido", non esiste un metodo più "pulito"?

    Grazie

  2. #2
    Perchè non utilizzi un sistema di template?

    Se devi proprio rimanere legato al metodo che stai utilizzando:

    // file body.php
    Codice PHP:
    <?php 
    $title 
    'Hello World!';
    ?>


    Body</p>
    // file page.php
    Codice PHP:
    <?php 
    ob_start
    ();
    include(
    dirname(__FILE__) . '/body.php');
    $body ob_get_clean();
    ?>
    <html>
    <head>
      <title><?php echo $title?></title>
    </head>
    <body>
    <?php echo $body?>
    </body>
    </html>

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59
    ciao, pima di tutto grazie per la risposta.

    Il metodo che mi hai indicato non lo conoscevo affatto, comunque ho provato a vedere se ci riesco ma firefox mi da questo errore:

    Codice PHP:
    Questa pagina non redireziona in modo corretto

    Firefox ha rilevato che il server sta redirezionando la richiesta per questo indirizzo in modo che non possa mai essere completata
    .

        *   
    Questo problema spesso è causato dal blocco o dal rifiuto dei cookie
    ho fatto cosi:

    nel file index.php, prima della generazione del codice html, ho messo:

    Codice PHP:
    ob_start(); 
    include(
    "photogallery.php"); 
    $pagina ob_get_clean(); 
    (per adesso sto facendo la prova usando solo quel file)

    facendo poi i vari echo al momento opportuno.

    e nel file photogallery.php ho dichiarato il titolo della pagina.
    Codice PHP:
    $titolo 'Hello World!'
    almeno ho interpretato cosi il tutto ma a quanto pare mi sono sbagliato...ma dove?

    sarà ob_get_clean() perchè commentandolo la pagina viene caricata, anche se male, ma il titolo comunque nn viene fuori?

  4. #4
    Utente di HTML.it L'avatar di zeroh
    Registrato dal
    Feb 2002
    Messaggi
    138
    Da quanto leggo, desumo tu non abbia un db di fondo nel quale immagazzinare le informazioni da richiamare di volta in volta.
    Quindi butto giù rapidamente una soluzione che dovrebbe funzionare.

    es. index.php
    Codice PHP:
    <?php
    include("corpo.php");
    ?>
    <html>
    <head>
      <title><?php echo $titolo?></title>
    </head>
    <body>
    <?php echo $body?>
    </body>
    </html>
    es file incluso corpo.php
    Codice PHP:
    <?php
    $titolo 
    "Hello Word";
    $body "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
    $body .="<tr>";
    $body .="<td bgcolor='#FF0000'></td>";
    $body .="<td bgcolor='#FFFFFF'></td>";
    $body .="<td bgcolor='#336600'></td>";
    $body .="</tr>";
    $body .="</table>";
    ?>
    Spero sia più o meno quello che cerchi.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59
    Originariamente inviato da zeroh
    Da quanto leggo, desumo tu non abbia un db di fondo nel quale immagazzinare le informazioni da richiamare di volta in volta.
    Quindi butto giù rapidamente una soluzione che dovrebbe funzionare.

    es. index.php
    Codice PHP:
    <?php
    include("corpo.php");
    ?>
    <html>
    <head>
      <title><?php echo $titolo?></title>
    </head>
    <body>
    <?php echo $body?>
    </body>
    </html>
    es file incluso corpo.php
    Codice PHP:
    <?php
    $titolo 
    "Hello Word";
    $body "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
    $body .="<tr>";
    $body .="<td bgcolor='#FF0000'></td>";
    $body .="<td bgcolor='#FFFFFF'></td>";
    $body .="<td bgcolor='#336600'></td>";
    $body .="</tr>";
    $body .="</table>";
    ?>
    Spero sia più o meno quello che cerchi.
    infatti il problema di fondo è che non c'è disponibile il database altrimenti sarebbe presto fatto!!!!

    in pratica l'index.php contiene tutta la struttura della pagina, i menu e tutto il resto, e un div in cui includo poi le varie pagine "contenuto", quindi che contengono al suo interno codice misto html - php.
    quindi se la includo prima dell' head automaticamente salta fuori l'output che dovrebbe venire invece all'interno del div in cui lo richiamo.

    ma non esiste un metodo che "includa" la pagina memorizzando solo le variabili in essa contenuta ma SENZA creare nessun output al momento della chiamata (ovvero prima dell'head)?

  6. #6
    Originariamente inviato da MaPPaZZo
    ma non esiste un metodo che "includa" la pagina memorizzando solo le variabili in essa contenuta ma SENZA creare nessun output al momento della chiamata (ovvero prima dell'head)?
    E dire che mi sembrava di aver postato un codice che faceva esattamente questo ...

    Codice PHP:
    <?php
    ob_start
    ();
    include(
    dirname(__FILE__) . '/body.php');
    $body ob_get_clean();
    ?>

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59
    Originariamente inviato da filippo.toso
    E dire che mi sembrava di aver postato un codice che faceva esattamente questo ...

    Codice PHP:
    <?php
    ob_start
    ();
    include(
    dirname(__FILE__) . '/body.php');
    $body ob_get_clean();
    ?>
    STRANISSIMOOOO!!!!

    ci avevo provato 20 volte prima e nada...

    adesso ci ho riprovato cosi:

    Codice PHP:
    ob_start(); 
    include(
    "$pagina"); 
    $body ob_get_clean(); 
    FUNZIA ALLA GRANDISSIMAAAAAA!!!!!!

    ti dispiacerebbe spiegarmi cosa fa però?

    prima mi sa che prima non andava perchè facevo
    Codice PHP:
    $pagina ob_get_clean(); 
    e si impallava tutto!
    ma perchè "cancellavo" il contenuto della pagina da caricare forse?!?!?

    grazie mi hai liberato da quel file chilometrico!!! aahahhaa ;-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.