Visualizzazione risultati 1 fino 5 di 5

Discussione: Funzione lettura in folder e subfolder

  1. #1
    Guest

    Predefinito Funzione lettura in folder e subfolder

    Buonasera a tutti!
    ho creato questa funzione che però mi dà un mare di errori... essendo una neofita sto cercando di capire esattamente qual'è il problema ma non riesco a venirne a capo...qualcuno di voi mi potrebbe aiutare facendomi capire dove sbaglio...sto imparando il php da sola e ogni tanto mi perdo in un bicchier d'acqua!
    Grazie a tutti sin da ora!
    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>Documento senza titolo</title>
    <?php
    function dir_reader($dir, &$images, &$subdirs)
    {
    global
    $defdir;
    if(
    $dir != $defdir)
    {
    $dir = $defdir."/".$dir;
    }
    if (
    $handle = opendir($dir))
    var_dump($handle);
    var_dump($dir);
    {
    while (
    false !== ($file = readdir($handle)))
    {
    if (
    $file != "." && $file != "..")
    var_dump($file);
    {
    list(
    $fileName, $ext) = explode(".", $file);
    if(!
    is_dir($dir.'/'.$file))
    {
    if(
    $ext == "jpg" || $ext == "jpeg")
    {
    $images[] = $file;
    }
    }
    else
    {
    $subdirs[] = "<a href='?My_Gallery=".$file."'>".$file."</a>";
    }
    }
    }
    closedir($handle);
    }
    }
    //Nome della cartella madre
    $defdir = './My_Gallery';
    if(!isset(
    $_GET['My_Gallery']))
    {
    $dir = $defdir;
    }
    else
    {
    $dir = $_GET['My_Gallery'];
    }
    $images = array();
    $subdirs = array();
    dir_reader($dir, $images, $subdirs);
    ?>
    <table border="2">
    <tr>
    <td>
    <?php
    // Da rivedere ciclo sull'array $subdirs per creazione automatica di button con funzione random
    $base_dir = 'My_Gallery/';
    $files = array();
    foreach (
    glob($base_dir . '/*', GLOB_ONLYDIR) as $item) {
    $dh = opendir($item);
    while (
    $image = readdir($dh)) {
    if (!
    preg_match("#\.jpe?g$#i", $image)) {
    continue;
    }
    $files[] = $image;
    }
    $random = rand(0, count($files) - 1);
    $image= count($files);
    echo
    "$item: <a href='".$_SERVER['PHP_SELF']."'>indietro</a>";
    "<br/>";
    echo
    "<img src=\"$item/{$files[$random]}\" /><a href=\"$item/{$subdirs[$file]}\" /><br />";
    }
    if(isset(
    $_GET['My_Gallery']))
    {
    print(
    "<a href='".$_SERVER['PHP_SELF']."'>indietro</a>");
    "<br/>";
    }
    ?>
    </td>
    <td>
    <?php
    // Da rivedere ciclo sull'array $images per ottenere la gallery di immagini
    print"<prev>";
    while (list(
    $chiave,$valore)=each($images))
    {
    echo
    "$valore </br>";
    echo
    "<img src=$images>";
    $numero_elementi=count($images);
    echo
    "&numero_elementi=".$numero_elementi;
    for (
    $i=0;$i<$numero_elementi;$i++)
    echo
    '&images_" .$i ."=" .$images[$i]';
    }
    print
    "</prev>";
    ?>
    </td>
    </tr>
    </table>
    </head>
    </html>

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Un buon punto di partenza - soprattutto quando si chiede aiuto - sarebbe indicare l'errore che viene riportato, o il comportamento anomalo ottenuto confrontato a quello che ti aspetteresti. Altrimenti anche postando tutto il codice non si capisce quale sia il problema...

    Nel frattempo, ti segnalo un errore di sintassi sulla quarta riga: hai dimenticato un double quote (") prima di chiudere il tag...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Ti dovrebbe dare la linea di errore! Vedi qual'è e aprilo con Notepad++ e cerca l'errore! ^^"

  4. #4
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Prima di tutto fai un'pò di pulizia, la leggibilità di quel listato fa paura , io ho capito ben poco.
    Rivedi il codice e aggiustalo in modo quanto migliore possibile, magari comincia indentandolo.
    Ci sono parecchie righe risparmiabili: in dir_reader() sfrutti opendir(), readdir() e funzioni annesse, effettuando controlli vari; sotto mostri invece di saper usare glob().
    Non comprendo questa scelta delle due diverse metodologie, hai forse preso parti di altri script?
    Ciao!
    P.S:
    Codice PHP:
    foreach (glob($base_dir . '/*', GLOB_ONLYDIR) as $item) {
    Ti sconsiglio questa pratica: ogni iterazione produce una nuova invocazione della procedura glob(), il chè non è il massimo a livello prestazionale, soprattutto se gli elementi di $item sono in numero consistente; meglio dichiarare una nuova variabile che contenga il valore restituito da glob() e usare quella.
    Ultima modifica di programmazioned : 16-06-2009 alle ore 20.45.06

  5. #5
    Guest

    Predefinito

    Grazie mille per i vostri consigli...sto rivedendo tutto il codice e sto cercando di renderlo più leggibile....gli errori che mi dà sono comunque tantissimi!
    Notice: Undefined offset: 1 in C:\www\Prova per galleria\Funzione directory.php on line 23
    string(18) "..."
    Notice: Undefined offset: 1 in C:\.... on line 23
    string(18) "...."
    Notice: Undefined offset: 1 in C:\...on line 23
    Notice: Undefined variable: file in C:\....on line 73
    Notice: Undefined index: in C:\..... on line 73
    e nei link di collegamento mi scala di uno...mi spiego meglio: ho 3 cartelle a,b e c...ora la a non ha collegamento, la b apre la cartella a e la c la b.
    Rispondo anche all'ultima domanda, sì per il random mi sono appoggiata ad un altro script che ora rivedrò seguendo i tuoi consigli... solo una cosa, dato che uso dreamweaver... come vedo gli errori con il notepad++?

    EDIT: Ah! il comportamento che vorrei creare è questo:
    alla creazione di una nuova cartella vorrei che in automatico si creassero un button di collegamento ad una galleria anch'essa creata in automatico...il tutto con linguaggio php ma portando poi i dati in filmati flash sia per il menù che per la galleria... probabilmente è da pazzi non so...il fatto è che sono alle primissime armi con il php e quindi ancora mi sembrano montagne quelle che probabilmente sono solo briciole
    Ultima modifica di debug : 17-06-2009 alle ore 10.26.14

Regole di scrittura

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