Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Ho un problema con un include

    probabilmente sarà una cosa stupidissima ma io non capisco proprio dove sbaglio...

    praticamente uso la funzione include per inserire il menù di navigazione all'interno delle varie pagine... fin qui tutto bene

    ora io sono combinato così, ho questi file

    cartella principale
    -menu.php
    -index.php
    -cartella
    |-sottocartella
    |-pagina.php

    nella pagina index ho messo questo codice per richiamare il menù:
    Codice PHP:
    <? include("menu.php");?>
    fin qui tutto va bene, nella pagina index compare il menù di navigazione e tutto funziona

    nella pagina.php però nascono i problemi... il menù lo inserisco così:
    codice:
    <? include("../../menu.php");?>
    il problema è che quando clicco il link nel menù nella pagina.php la pagina che cerco me la cerca nella sottocartella...

    cioè il menù in pagina.php dovrebbe richiamare la pagina index.php nella cartella principale, ma invece cerca la pagina in /cartella/sottocartella/index.php

  2. #2
    nel file menu.php devi utilizzare i percorsi assoluti... questi sono definibili come i percorsi a partire dalla root (cartella di partenza) del sito

    ad esempio il link alla pagina index.php che si trova nella root sarà

    Home page

  3. #3
    Grazie mille.... lo dicevo che era una cretinata

  4. #4
    Io ho un problema simile, sto utilizzando PHP per effettuare l'accesso ad una Base di Dati mediante classi DAO e DCS, ho creato quindi nella cartella "home" il file include.php, che contiene tutti gli include che sono necessari alle classi DAO e DCS per "ciamarsi" a vicenda.

    ecco come sono distribuite le classi:

    codice:
    home\DAO\classiDao
    home\DCS\classiDcs
    il file include.php si trova in :
    codice:
    home\include.php
    questo file contiene tutti gli include che utilizzano le classi DAO e DCS a partire dalla directory di root :
    Codice PHP:
    include_once($root.'DCS/GestionsDCS.php');
    include_once(
    $root.'DAO/GestionsDAO.php'); ...ETC 
    le classi
    codice:
    GestionsDCS.php
    GestionsDAO.php
    eseguono il seguente include:

    Codice PHP:
    include_once '../include.php'
    che gli permette di utilizzare una delle classi presenti nel file include.php



    ora il problema che mi si presenta è che le classi DAO e DCS devono essere utilizzate da altre classi, finché queste altre classi si trovano in una directory che si trova allo stesso livello rispetto alle directory DAO e DCS es :

    codice:
    home\DAO\classiDao
    home\DCS\classiDcs
    home\DCS\classiCheUtilizzanoDAOeDCS
    tutto funziona perfettamente facendo un semplice :
    Codice PHP:
    include_once '../include.php'
    nelle classi che devono utilizzare le classi DAO e DCS.

    I problemi arrivano nel momento in cui devo richiamare le class DAO e DCS da classi che si trovano per esempio in una directory :
    codice:
    home\DAO\classiDao
    home\DCS\classiDcs
    home\Directory1\Directory2\ClasseUtilizzaDAOeDCS.php
    in questo caso faccio l'include è il seguente:
    Codice PHP:
    include_once '../../include.php'
    ma questa volta quando carico la pagina
    codice:
    home\DCS\ClassiChiamanti\ClasseUtilizzaDAOeDCS.php
    ottengo i seguenti messaggi di errore :
    codice:
    Warning: include_once(../include.php) [function.include-once]: failed to open stream: No such file or directory in home\GestionsDAO.php on line 3
    .

    Mi sembra come se una volta che faccio l'include da una classe che si trova nella directory:
    codice:
    home\Directory1\Directory2\
    quando da questa directory faccio l'include:
    Codice PHP:
    include_once '../../include.php'
    dato che verranno chiamate delle classi che si trovano ad un "livello gerarchico di directory" inferiore rispetto alla classe chiamante, quando queste chiamano un :
    Codice PHP:
    include_once '../include.php'
    questo viene eseguito come se ci si trovasse nella cartella del primo file chiamante, che si trova ad un livello gerarchico superiore e per questo il server mi restituisce l'errore.Qualcuno sa dirmi come risolvere il problema?Grazie!

  5. #5
    azz... ma con i percorsi assoluti nn ci vai proprio d'accordo??!

    Generalmente è sempre un problemaccio quello degli include "dinamici".
    Nella sezione pillole c'è una guida scritta da daniele_dll (un moderatore di questo forum nonchè un mostro del php... che haimè interviene raramente).

    in ogni modo lì si dice che occorre sfruttare la constante __FILE__ etc etc (grrrrr la devo ancora studiare bene!!)

    Il tuo caso sembra tuttavia più semplice...

    nel file include.php devi scrivere così:

    include_once('/home/DCS/GestionsDCS.php');
    include_once('/home/DAO/GestionsDAO.php');

    Oppure se hai un server apache:

    include_once($_SERVER['DOCUMENT_ROOT'].'/home/DCS/GestionsDCS.php');
    include_once($_SERVER['DOCUMENT_ROOT'].'/home/DAO/GestionsDAO.php');

    provali un pò...

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.