• User

    path applicazione

    Ciao a tutti

    ho questo problemino.

    Sto scrivendo una piccola applicazione che è composta da programmi per categoria , quindi ho creato una cartella dopo deposito i php per quella categoria.
    Quindi avrò diverse cartelle per categoria.

    Voglio definire una variabile globale dove inserire la path di tutte queste cartelle, in modo che dal menu, qualsiasi cosa cosa scelgo la ritrovo.

    come posso fare , mi aiutate.
    grazie

    Paolo :sbav:


  • User

    define('path1', './cartella1');
    define('path2', './cartella2');
    ...
    define('pathN', './cartellaN');

    oppure usi le sessioni:

    session_start();
    $_SESSION['paths'] = array(
    'path1'=>'./cartella1/',
    'path2'=>'./cartella2/',
    ...
    'pathN'=>'./cartellaN/',
    );

    Spero di aver capito cosa ti serviva, sennò spiega meglio il problema, magari postando anche qualche parte del codice.


  • User

    Grazie

    in pratica definisco nel programma principale la define path e questa la vedranno tutti programmi che aprirò ?

    mi fai sapere

    Grazie


  • User

    Ciao e grazie per avermi risposto.
    quidni se ho ben capito basterà scrivere nel programma iniziale questo :
    define('path1', './cartella1');

    e quindi il programma cercherà l'oggetto nella cartella1 ?

    In pratica se una cartella radice e tante sotto cartelle,

    cartella1
    --------- cartella2
    cartella3------------cartella4

    e richiamo ad esempio da un html pippo.php deve cercare pippo.php fino a trovarlo.

    Grazie in anticipo


  • User

    Forse non ho capito bene il tuo problema. Prova a spiegarmi con un esempio o copiando/incollando il codice da correggere/modificare. Se il tuo obiettivo è fare una ricerca di un file non sapendo dove si trova, puoi crearti una funzione ricorsiva che entra nelle varie sottocartelle fino a trovare il file. Se è questo il tuo problema, confermamelo e ti scrivo io la funzione...


  • User

    Ciao si confermo, quando viene richiamato un pippo.php deve percorrere tutte le cartelle fino a trovarlo.

    In pratica ho creato una cartella radice del progetto chiamata cartella_1

    cartella_1

    poi ho creato una cartella di nome tabelle , dove ho messo tutti i .php dei programmi che riguardano le tabelle.

    poi ho creato una cartella di nome applicazione1 dove ho messo tutti i .php dell'applicazione 1

    Ora dal menu richiamo i diversi php quindi deve cercarli fino a trovarli.

    Grazie


  • User

    Uhm, bruttina come cosa. Lenta soprattutto. Io provo a buttarti giù la funzione, magari controllala tu e vedi s'è corretta:

    [php] function find_file_in_dir($dirname, $file_name){
    if (!file_exists('./'.$dir_name.'/'.$file_name)) {
    $internal_dirs = scandir($dir_name);
    foreach ($internal_dirs AS $key => $internal_name) {
    if (is_dir('./'.$dir_name.'/'.$internal_name) && '.' != $internal_name && '..' != $internal_name) {
    if (file_exists('./'.$dir_name.'/'.$internal_name.'/'.$file_name)) {
    // IL FILE E' IN QUESTA DIR. VEDI TU SE TI BASTA TORNARE TRUE O SE VUOI TORNARE IL PERCORSO AL FILE CON return './'.$dir_name.'/'.$internal_name.'/'.$file_name;
    }
    }
    }
    return false;
    }
    } else {
    //IL FILE E' NELLA CARTELLA "RADICE" (return './'$dir_name.'/'.$file_name;)
    }
    }[/php]Per usarla basta che la chiami così:
    [php]
    if ($percorso_completo_al_file = find_file_in_dir('cartellaradice', 'nome_del_file.php')) {
    echo("File trovato in:".$percorso_completo_al_file);
    } else {
    echo("File non trovato.");
    }
    [/php]Ci potrebbero essere errori perchè l'ho scritta al volo adesso. Controllala bene tu, comunque il principio è quello.


  • User

    Ciao Matteo , grazie della tua buona volontà, proverò la funzione.
    ma scusa , una domanda, ma nativamente in php non si può definire una path, con il percorso delle cartelle ?


  • User

    Ciao Matteo questo è il codice che sto provando.

    <?php
    define('path1', './init');
    include "path1/testa.php";
    include "c1_anazi_pag_1.php";
    //include "piede.php";

    ?>

    sto provando "define" da te inizialmente suggerito.

    in pratica devo richiamare testa.php che si trova nella cartella init iniziale.


  • User

    @pdecaro said:

    Ciao Matteo questo è il codice che sto provando.

    <?php
    define('path1', './init');
    include "path1/testa.php";
    include "c1_anazi_pag_1.php";
    //include "piede.php";

    ?>

    sto provando "define" da te inizialmente suggerito.

    in pratica devo richiamare testa.php che si trova nella cartella init iniziale.
    Se vuoi fare cosi devi scrivere:
    include path1.'/testa.php';

    Mi raccomando, path1 senza dollari o virgolette. Scrivilo così com'è. I define funzionano così.

    Ciao!


  • User

    scusa Matteo sono entrato nuovamente nel problema in oggetto.

    dopo avere definito la path, ho provato cosi , ma non funziona ?

    programma ?

    <?php
    define('path1', './init');
    include "path1/testa.php";

    ?>

    In alternativa sto provando la tua function, ma non funziona lo stesso ?

    Mi potresti aiutare.

    Grazie


  • User

    Ciao Matteo sto usando la tua funzione ma mi genera questo errore .
    Puoi darci un'occhiata . Grazie
    Warning: scandir() [function.scandir]: (errno 2): No such file or directory in C:\Programmi\xampp\htdocs\cercatrova\trova.php on line 9

    Warning: Invalid argument supplied for foreach() in C:\Programmi\xampp\htdocs\cercatrova\trova.php on line 10
    File non trovato.

    Ti allego il sorgente

    <?

    function find_file_in_dir($dirname, $file_name){

    if (!file_exists('./'.$dir_name.'/'.$file_name)) {

    $internal_dirs = scandir($dir_name);
    foreach ($internal_dirs AS $key => $internal_name) {
    if (is_dir('./'.$dir_name.'/'.$internal_name) && '.' != $internal_name && '..' != $internal_name) {

               if (file_exists('./'.$dir_name.'/'.$internal_name.'/'.$file_name)) {
    

    // IL FILE E' IN QUESTA DIR. VEDI TU SE TI BASTA TORNARE TRUE O SE VUOI TORNARE IL PERCORSO AL FILE CON return './'.$dir_name.'/'.$internal_name.'/'.$file_name;
    }

           }
           
           
    
       return false;
    

    }

    } else {

    echo "IL FILE E NELLA CARTELLA RADICE (return './'$dir_name.'/'.$file_name;) ";
    }
    }

    ?>

    questo invece è il programma chiamante.

    <?
    include "trova.php";

    if ($percorso_completo_al_file = find_file_in_dir('cedolino', 'azcon_add_0.php')) {
    echo("File trovato in:".$percorso_completo_al_file);
    } else {
    echo("File non trovato.");
    }
    ?>