Visualizzazione risultati 1 fino 6 di 6

Discussione: Problema PHP e sottocartelle

  1. #1
    Guest

    Predefinito Problema PHP e sottocartelle

    Salve a tutti,

    premetto che la mia conoscenza in PHP è pari a zero e non ho trovato nulla di esaustivo e chiaro sul quesito che ho da porvi.

    Il problema è questo: devo includere alcune pagine php che definiscono il template del sito (header, barra dei menù...) le quali si trovano nella cartella principale e includerle appunto in delle pagina che si trovano in sottocartelle.

    Esempio:

    /header.php

    /cartella1/cartella2/pagina.php (dove devo includere header.php)

    Ho provato mettendo include '../../header.php'; ma non funziona.


    Posto un pò di codice fare chairezza.



    Questa è l'header.php
    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <link href="reset css.css" rel="stylesheet" type="text/css" />
    <link href="header.css" rel="stylesheet" type="text/css" />
    
    </head>
    
    <body>
    
    
    <!--header-->
    <div id="header"></div>
    <!--.header-->
    
    
    </body>
    </html>
    Il reset e l'header.css sono esterni mentre le immagini le prende da una cartella che si trova nella directory principale.



    Questa è la pagina che include l'header.php

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>

    <link href="../../reset css.css" rel="stylesheet" type="text/css" />

    <link href="../style_elenco_piloti.css" rel="stylesheet" type="text/css" /> (Questa si trova una cartella sopra)

    </head>

    <body>

    <!--header-->

    <?php


    include '../../header.php';



    ?>

    <!--.header-->
    Ultima modifica di alemoppo : 06-09-2012 alle ore 18.21.20 Motivo: +tag [php] e [html]

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    Citazione Originalmente inviato da provasssito Visualizza messaggio
    /header.php

    /cartella1/cartella2/pagina.php (dove devo includere header.php)

    Ho provato mettendo include '../../header.php'; ma non funziona.
    Se header.php si trova dentro cartella1 dovrebbe funzionare.
    Prova a controllare se il file è effettivamente raggiungibile con quel percorso con la is_file()

    Quindi una cosa del tipo:
    Codice PHP:
    if(is_file('../../header.php'))
    include(
    '../../header.php');
    else
    {
    echo
    'Il file non è raggiungibile. Contenuto della cartella:';
    foreach (
    glob('../../') as $filename)
    echo
    "$filename <br> ";
    }
    Ciao!
    Ultima modifica di alemoppo : 06-09-2012 alle ore 18.35.49

  3. #3
    Guest

    Predefinito

    Grazie per avermi risposto.

    Il problema è che non funziona ancora...


    La cosa strana è che nel codice sorgente si vede !!!

    Codice HTML:
    <!--header-->
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <link href="reset css.css" rel="stylesheet" type="text/css" />
    <link href="header.css" rel="stylesheet" type="text/css" />
    
    </head>
    
    <body>
    
    ....
    ...
    ....
    <!--header-->
    <div id="header"></div>
    <!--.header-->
    
    
    </body>
    </html><!--.header-->
    
    <!--Inizio barra menù-->
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    
    
    
    <link href="barramenu.css" rel="stylesheet" type="text/css" />
    
    <link href="reset css.css" rel="stylesheet" type="text/css" />
    
    
    
    </head>
    ...
    ...
    ...
    ...
    

    A questo punto o sbaglio qualcosa io... Tipo nel PHP ci va il DOCTYPE? l'head? il body con relative chiusure? Oppure visto che nel codice sorgente mi vede la div e non mi da errori non vorrei che fosse un problema di caricamento di immagini visto che anche questa cartella si trova nella directory principale (nelle pagine in cui sia l'include che la pagina php stanno insieme senza sottocartelle funziona tutto a meraviglia).
    Ultima modifica di dreadnaut : 06-09-2012 alle ore 20.04.13 Motivo: + tag [html], per favore, mettili tu ;-)

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    Se la pagina viene inclusa, allora la include() funziona e non è un problema delle sottocartelle.

    La pagina html deve avere un solo doctype un solo body, un solo head etc etc.
    Il PHP serve per generare l'html; non per forza deve avere una determinata struttura: l'importante è che il codice generato sia corretto.

    Guardando il sorgente sopra, non capisco l'utilità della pagina header.php: immette soltanto un <div id="header"> ?

    Inoltre, i vari file css in che cartelle sono? Sono raggiungibili da quei percorsi? Hai tenuto conto che caricando su altervista, i caratteri "bianchi" (o spazi) vengono sostituiti con un underscore?

    Ciao!
    Ultima modifica di alemoppo : 06-09-2012 alle ore 20.28.34

  5. #5
    Guest

    Predefinito

    C'è solo la div "header" perché se in futuro vorrò modificarla ne ho solo una da modificare. Così come c'è una sola pagina php anche per la barra dei menù. Sto sbagliando?

    Comunque ho risolto. Semplicemente il codice css dell'header.php non può essere esterno alla pagina come si farebbe con l'HTML. Non lo sapevo. L'ho messo inline. Va bene lo stesso o può creare problemi?

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    L'approccio corretto (secondo me) sarebbe quello di tenere una pagina di "base", quindi "header" e "footer", e includere dentro i contenuti più vari. Prova a leggere qui.

    Comunque ho risolto. Semplicemente il codice css dell'header.php non può essere esterno alla pagina come si farebbe con l'HTML. Non lo sapevo. L'ho messo inline. Va bene lo stesso o può creare problemi?
    Allora non hai capito il discorso nel precedente post. Non c'é alcuna differenza tra html "HTML" e html del "PHP". Le due cose coincidono! Al browser che deve interpretare il codice non gli interessa se è stato generato da PHP, se è stato preso da un'altro sito, o se è html "statico".

    Detto questo, molto probabilmente header.css non funziona perché devi includerlo con il giusto path, che presumo sia:

    Codice HTML:
    <link href="../../header.css" rel="stylesheet" type="text/css" />
    (stò un po' andando con la sfera di cristallo, perché non ho nulla sotto su cui basarmi: non conosco come hai posizionato i vari file).

    Ciao!
    Ultima modifica di alemoppo : 06-09-2012 alle ore 21.58.49

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •