Visualizzazione risultati 1 fino 22 di 22

Discussione: Script php elenco file

  1. #1
    Guest

    Predefinito Script php elenco file

    salve sto cercando uno script che mi elenchi i file presenti in una cartella (./uploads/) magari organizzati in tabella con il rispettivo link di download da mettere in una textarea durante la compilazione di un form.
    quindi il link non dovrà essere cliccabile ma deve somigliare a questo:
    <a href="./uploads/file.pdf">Download</a>

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

    Predefinito

    glob() restituisce un array con i vari file dentro una cartella...

    [pappapronta]
    Codice PHP:
    foreach(glob('directory/*') as $file)
    echo
    '<a href="directory/'.$file.'">Download</a>';
    dove directory è il percorso relativo alla posizione dello script in cui lo esegui.
    [/pappapronta]

    Ciao!
    Ultima modifica di alemoppo : 06-12-2010 alle ore 15.10.39

  3. #3
    Guest

    Predefinito

    il link che genera funziona ma io vorrei che la pagina mostrasse il nome del file e di fianco il link da copiare ed incollare non un link cliccabile...
    Ultima modifica di madrum : 06-12-2010 alle ore 16.27.56

  4. #4
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Codice PHP:
    <?php
    foreach (glob("*.*") as $filename) {
    $link = '<a href="'.$filename.'">Download</a>';
    echo
    "" . $filename . " - " . htmlentities($link) . "<br />\n";
    }
    ?>
    Ultima modifica di darkwolf : 06-12-2010 alle ore 17.12.33

  5. #5
    Guest

    Predefinito

    perfetto!!!
    grazie mille!!!!

    vorrei strutturarlo in tabella con tre colonne

    | nome file | data caricamento | codice da copiare |

  6. #6
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Se riesci a fare un disegnino (immagine o codice racchiuso nel bbc "code") vedrò di sistemartelo al meglio.
    Ci vuoi anche la dimensione del file?

  7. #7
    Guest

    Predefinito

    una semplice tabella a tre colonne senza dimensione solo nome, data caricamento e codice da copiare

  8. #8
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Codice PHP:
    <?php
    foreach (glob("*.*") as $filename) {
    $link = '<a href="'.$filename.'">Download</a>';
    $link = htmlspecialchars($link);
    $link = str_replace(' ', '&nbsp;', $link);
    echo
    "
    <table style=\"width: 100%; text-align: center;\">
    <tr>
    <td style=\"width: 30%\">"
    . $filename ."</td>
    <td style=\"width: 30%\">"
    . date("d/m/Y - H:i:s", filemtime($filename)) . "</td>
    <td style=\"width: 40%\"><textarea style=\"text-align: center; width: 100%; border: 1px dotted red; padding: 3px;\">"
    . $link . "</textarea></td>
    </tr>
    </table>"
    ;
    }
    ?>
    Vedi se ti va bene

  9. #9
    Guest

    Predefinito

    va benissimo solo altre due cose
    escludere i file .php e se possibile ordinarli per data caricamento

  10. #10
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Citazione Originalmente inviato da madrum Visualizza messaggio
    va benissimo solo altre due cose
    escludere i file .php e se possibile ordinarli per data caricamento
    Codice PHP:
    <?php

    $list
    = glob('*.*');
    usort($list, create_function('$b,$a', 'return filemtime($a) - filemtime($b);'));

    foreach (
    $list as $filename)
    {
    if (!
    preg_match("#((.php))#", $filename))
    {
    $link = '<a href="'.$filename.'">Download</a>';
    $link = htmlspecialchars($link);
    $link = str_replace(' ', '&nbsp;', $link);

    echo
    "
    <table style=\"width: 100%; text-align: center;\">
    <tr>
    <td style=\"border: 1px solid; width: 100%; vertical-align: middle;\">
    <span style=\"float: left; width: 30%\">"
    . $filename ."</span>
    <span style=\"text-align: center; width: 30%\">"
    . date("d/m/Y - H:i:s", filemtime($filename)) . "</span>
    <span style=\"float: right; width: 40%\"><textarea style=\"text-align: center; width: 100%; height: 2em; border: 1px dotted red; padding: 3px;\">"
    . $link . "</textarea></span>
    </td>
    </tr>
    </table>"
    ;

    }
    }

    ?>
    Ho modificato anche la struttura della tabella.
    I nuovi verranno messi in cime mentre i vecchi in fondo.
    Modifica '$b,$a', in '$a,$b', se desideri invertire l'ordine.
    Ultima modifica di darkwolf : 06-12-2010 alle ore 18.41.25

  11. #11
    Guest

    Predefinito

    grazie ancora!!!
    vorrei i bordi della tabella
    ho messo border: 1 in table style ma non compaiono perchè ?

    anche le scritte NOME FILE ; DATA CARICAMENTO ; CODICE DA COPIARE
    messe come prima riga magari con sfondo cella nero e testo bianco
    Ultima modifica di madrum : 06-12-2010 alle ore 19.00.19

  12. #12
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Spiacente, mai usato le tabelle e non saprei dove mettere mani
    Io avrei fatto il tutto a suon di div.

    Eg:
    Codice PHP:
    <?php

    $list
    = glob('*.*');
    usort($list, create_function('$a,$b', 'return filemtime($b) - filemtime($a);'));

    foreach (
    $list as $filename)
    {
    if (!
    preg_match("#((.php))#", $filename))
    {
    $link = '<a href="'.$filename.'">Download</a>';
    $link = htmlspecialchars($link);
    $link = str_replace(' ', '&nbsp;', $link);

    echo
    "
    <div style=\"text-align: center; padding: 10px\">
    <div style=\"padding: 5px\">Nome del file: <strong>"
    . $filename . "</strong></div>
    <div style=\"padding: 0 5px\">Data di caricamento: <strong>"
    . date("d/m/Y - H:i:s", filemtime($filename)) . "</strong></div>
    <div style=\"padding: 5px; display: inline\">Codice HTML: <textarea style=\"text-align: center; border: 1px dotted gray; width: 500px; height: 20px; padding: 1px 3px;\">"
    . $link . "</textarea></div>
    </div>
    <hr />"
    ;

    }
    }

    ?>
    Ultima modifica di darkwolf : 06-12-2010 alle ore 19.11.57

  13. #13
    Guest

    Predefinito

    ok grazie lo stesso

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

    Predefinito

    border: 1 non significa niente, in CSS: devi mettere l'unità di misura! Ad esempio 1px!

    Ciao!

  15. #15
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Ho editato il codice sopra passando da tabelle a div (che preferisco).
    Vedi se ti piace il risultato

  16. #16
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    In questi casi l'uso della tabella è d'obbligo:
    Codice PHP:
    <table class="dirtree">
    <tr>
    <th>Nome file</th>
    <th>Data caricamento</th>
    <th>Codice</th>
    </tr>
    <?php
    $list
    = glob('*.*');
    usort($list, create_function('$a,$b', 'return filemtime($b) - filemtime($a);'));
    foreach(
    $list as $filename){
    if(!
    preg_match("#((.php))#", $filename)){
    $link = '<a href="'.$filename.'">Download</a>';
    $link = htmlspecialchars($link);
    $link = str_replace(' ', '&nbsp;', $link);
    echo
    "
    <tr>
    <td>
    $filename</td>
    <td>"
    .date("d/m/Y - H:i:s", filemtime($filename))."</td>
    <td><textarea>
    $link</textarea></td>
    </tr>"
    ;
    }
    }
    ?>
    </table>
    Nell'head metterai il foglio di stile:
    Codice HTML:
    <style type="text/css">
    	.dirtree{
    		border-collapse: collapse;
    	}
    	
    	.dirtree th{
    		background: #000;
    		color: #FFF;
    	}
    	
    	.dirtree th, .dirtree td{
    		border: 1px solid #000;
    	}
    </style>
    Ultima modifica di karl94 : 06-12-2010 alle ore 19.42.34

  17. #17
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    @Karl94: in effetti viene niente male :)

    Mi sono permesso di ritoccarlo ulteriormente inserendo il bbcode ed ottimizzando l'indentazione:
    Codice HTML:
    <style type="text/css">
    	.dirtree {
    		width: 90%;
    		margin: 0 auto;
    		text-align: center;
    		border-collapse: collapse;
    	}
    	.dirtree th	{
    		background: #000;
    		color: #FFF;
    		width: 15%;
    	}
    	.dirtree th, .dirtree td {
    		border: 1px solid #000;
    	}
    	.dirtree td.code {
    		padding: 20px 10px;
    		font-family: monospace;
    	}
    </style>
    Il forum mi sostituisce i caratteri nella sostituzione delle parentesi quadre, ho inserito nei commenti il codice relativo (che comunque non è affatto necessario):
    Codice PHP:
    <?php
    echo '
    <table class="dirtree">
    <tr>
    <th>Nome file</th>
    <th>Data caricamento</th>
    <th>Codice BBC</th>
    <th>Codice Html</th>
    </tr>'
    ;

    $list = glob('*.*');
    usort($list, create_function('$a,$b', 'return filemtime($b) - filemtime($a);'));

    foreach(
    $list as $filename)
    {
    if(!
    preg_match("/\.php$/i", $filename))
    {
    $bbclink = '[url="'.$filename.'"]Download_'.$filename.'[/url]';
    $bbclink = htmlentities($bbclink, ENT_QUOTES);
    $bbclink = str_replace(' ', '&nbsp;', $bbclink);
    $bbclink = str_replace('[', '[', $bbclink); // & # 91;
    $bbclink = str_replace(']', ']', $bbclink); // & # 93;

    $htmllink = '<a href="'.$filename.'">Download_'.$filename.'</a>';
    $htmllink = htmlentities($htmllink, ENT_QUOTES);
    $htmllink = str_replace(' ', '&nbsp;', $htmllink);

    echo
    '
    <tr>
    <td>'
    .$filename.'</td>
    <td>'
    .date("d/m/Y - H:i:s", filemtime($filename)).'</td>
    <td class="code">'
    .$bbclink.'</td>
    <td class="code">'
    .$htmllink.'</td>
    </tr>'
    ;
    }
    }

    echo
    '
    </table>'
    ;

    ?>
    Demo: http://www.darkwolf.it/_script/filelist/
    Ultima modifica di darkwolf : 05-02-2017 alle ore 16.41.39 Motivo: Cambiata la regexp ;)

  18. #18
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Hai dimenticato il border-collapse o l'hai deliberatamente omesso?

  19. #19
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Hai dimenticato il border-collapse o l'hai deliberatamente omesso?
    Mi sarà sfuggito, reinserito nel post precedente

  20. #20
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Css e html a parte, io consiglio questa regexp per controllare l'estensione:
    Codice:
    /\.php$/i
    al posto di questa:
    Codice:
    #((.php))#
    che controlla che nella stringa ci sia un qualsiasi carattere ( . = qualsiasi carattere ) seguito da php in una posizione non definita, le parentesi sono a dir poco inutili dato che non si deve catturare niente dalla stringa.

    La regexp farà escludere i file con nomi del tipo: file.php.html, altrofile:php.html, aphp.xml, blablaphp.html, aphp etc.. ( che non hanno estensione php )
    Ultima modifica di javascripter : 06-12-2010 alle ore 20.50.26

  21. #21
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Ottimo, cambiata e verificata

  22. #22
    Guest

    Predefinito

    Grazie ancora!
    Vi spiego a cosa mi serve così magari mi consigliate, praticamente sto usando un cms (flatnuke) che permette agli utenti di inserire notizie tramite un form. Ho già modificato questo inserendo un upload di file perché di base non c'è, ed ora grazie al vostro aiuto si può inserire il codice del download nella textarea della compilazione del form. Mi chiedevo se fosse possibile rendere automatica questa cosa evitando il copia-incolla.

Regole di scrittura

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