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

    Gallery fotografica da cartella

    Salve a tutti ho realizzato una bella gallery fotografica in html con jquery.
    Ora il cliente vuole uplodare lui le foto e vorrei capire come trasformare questa parte di codice, grazie al php in un codice che legge il contenuto di una cartella che gli dico io dove mettere e lo rende dinamico, l'esempio che vedete lo fa su 5 jpg.

    Grazie a tutti!


    codice:
    <div class="container">
    						<div class="content">
    							<div>[img]images/thumbs/1.jpg[/img]</div>
    						</div>
    						<div class="content">
    							<div>[img]images/thumbs/2.jpg[/img]</div>
    						</div>
    						<div class="content">
    							<div>[img]images/thumbs/3.jpg[/img]</div>
    						</div>
    						<div class="content">
    							<div>[img]images/thumbs/4.jpg[/img]</div>
    						</div>
    						<div class="content">
    							<div>[img]images/thumbs/5.jpg[/img]</div>
    						</div>
    						
    					</div>

  2. #2
    Leggi il contenuto della directory con scandir() o glob() e per ogni immagine trovata generi il corretto markup.

  3. #3
    Grazie del consiglio, ma sono abbastanza scarso in php (a mala pena so come riconoscerne il codice)

    Sapresti aiutarmi?

    Immagino abbia bisogno di un array con un ciclo per creare le thumb? O si può fare in altro modo?

  4. #4
    "Aiutare" prevede che tu faccia qualcosa e noi ti aiutiamo a migliorare/correggere il codice, altrimenti si chiama "lavorare gratis"

  5. #5
    recepito, meno male che sono uno che impara in fretta.

    codice:
    <?php          
    $dir = "images/";
    $listaFile = array();
    
    // Apro la directory
    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {  
    			if (!is_dir($file)) {
                   $listaFile[] = $file;
              }}
            closedir($dh);
        }
    }   
    rsort($listaFile); //popolo l'array almeno credo
    return $listaFile;    
    
    for ($i=0; $i<=$listaFile.lenght; $i++){ //qui devo inserire la parte di html con $listaFile[i] ma non ho assolutamente idea di come fare e non credo che il php abbia il .lenght come proprietà visto che DW nn me se fila
    
    echo "parte HTML immagino";
    }
    } 
    ?>
    Ripeto non conosco la sintassi di PHP quindi un pò di java qua e un pò di action script de la e mi sono arrangiato così, ovviamente non funziona nulla.

    Consigli

  6. #6
    Ottimo, gia' molto meglio del 90% del codice che si vede da queste parti

    Prova con questo:
    Codice PHP:
    <?php
    // Prima generi l'array che contiene i nomi dei file
    $dir    'images';
    $images = array();

    foreach ( 
    scandir($dir) as $entry ) {
        if ( 
    is_dir($entry) ) {
            continue;
        }

        
    $images[] = $entry;
    }
    ?>


    ... markup della pagina ...
    <?php foreach ( $images as $image ): ?>
    <div class="content">
        [url="#"][img]<?php echo $dir?>/<?php echo $image?>[/img]" class="thumb" />[/url]
    </div>
    <?php endforeach; ?>
    ... resto del markup ...

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Codice PHP:
    $dir "images";

    echo 
    "<div class=\"content\">\n";
    foreach (
    glob($dir."/*") as $file) {
        echo 
    "\t<div><a href=\"#\"><img src=\"$file\" alt=\"$file\" class=\"thumb\" /></a></div>\n";
        }
    echo 
    "</div>"
    arrivato tardi, ma lo lascio comunque...

  8. #8
    Siete dei santi. Il codice va che è una bomba vera, funziona una meraviglia grazie di cuore.

    A questo punto visto che l'appetito vien mangiando volevo aggiungere questa cosina.

    Facciamo conto che volessi far in modo che esistano più gallery, quindi senza impazzire in mille funzioni pensavo di fare così:

    Il file index.php con questo codice resta lo stesso, ma come faccio a passare alla variabile

    $dir = 'images';

    un valore che voglio io? mettiamo che ci siano due gallery, e volessi che una volta valga images1 e una volta images2? magari passando la variabile da un link di collegamento? Esagero? vi sembra possibile?


    Grazie davvero!

  9. #9
    E' senz'altro possibile, ci sono diversi modi per farlo.

    Il piu' immediato e' passare il valore tramite query string nella URL, tipo
    codice:
    index.php?gallery=images1
    in questo caso dentro index.php potrai accedere al valore tramite l'array superglobale $_GET in questo modo:
    codice:
    $gallery = $_GET['gallery'];
    Naturalmente visto che nell'URL un utente puo' scrivere quello che vuole, e' buona norma (dove per buona norma intendo obbligatorio) controllare cosa viene passato e non usarlo direttamente per evitare che si possa accedere a risorse riservate. Il sistema migliore in questo caso e' definire una white list di directory accettate come valide e procedere all'inclusione delle immagini solo se il controllo e' veriicato. Esempio:
    Codice PHP:
    <?php
    $allowed 
    = array(
        
    'images',
        
    'images1',
        
    'images2',
        
    // ....
    );

    $gallery $_GET['gallery'];
    if ( !
    in_array($gallery$allowed) ) {
        
    // la richiesta non appartiene alle directory autorizzate
        // mostra una pagina di default, un messaggio di errore
        // o quello che vuoi
    } else {
        
    // esegui il codice riportato sopra usando la variabile
        // $gallery al posto di $dir
    }
    Ovviamente il tutto si puo' raffinare in mille modi, a seconda delle esigenze.

    Riguardo il codice postato da clasku, chiaramente funziona, ma io sconsiglio di mischiare codice PHP e markup se non per lo stretto indispensabile (strutture condizionali e cicli per gestire l'output, cioe' quello che fa un qualsiasi sistema di templating). Separare il calcolo/preparazione dei dati dalla loro visualizzazione rende molto piu' chiaro sia il codice che il markup, e rende MOLTO piu' semplici eventuali future modifiche, che potranno andare a toccare una sola delle due parti. Anche se il caso in questione e' molto semplice meglio abituarsi da subito, e' davvero una cosa che fa TANTA differenza.

  10. #10
    Mio eroe.

    Grazie

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.