• User Attivo

    impaginare le immagini

    Ciao a tutti e buona domenica,
    mi hanno chiesto di fare una cosa per me nuova,
    faccio inserire in una cartella 'Gallery' le immagini
    per poi farle visualizzare 10 ogni pagina in ordine decrescente
    il tutto senza il db.
    Come posso fare?
    E' possibile una cosa del genere senza il database?

    Ciao a tutti da danny.


  • ModSenior

    Ciao danny1975,
    fai attenzione alla punteggiatura e alle maiuscole...
    Cicli normalmente tutte le immagini, e fai l'echo solo per $i che ha valori da 0 a 10 nella prima pgina, da 10 a 20 nella seconda pagina e cosi via.


  • User Attivo

    Ciao,
    mo ci provo, ma la vedo dura, perchè non lo mai fatta una cosa del genere,
    poi ti faccio sapere,
    ciao e grazie


  • User Attivo

    Ciao, lo sapevo che non riuscivo a farlo da solo, sono arrivato ad un punto e mi sono fermeto. Allora ho fatto 2 cicli for, uno per le righe ed uno per le colonne, all'interno della cartella gallery ho 13 foto,voglio far apparire 12 foto nella pagina 1, mentre la 13esima nella pagina 2
    [PHP]
    print"
    <table border='1' cellpadding='0' cellspacing='0'>";
    print"
    <tr>";
    print"
    <td colspan='7'> </td>";
    print"
    </tr>";
    $righe=ceil(9/4);
    for($a = 0; $a < $righe; $a++)
    {
    print"
    <tr>";
    for($b = 1; $b <= 4; $b++)
    {
    if(file_exists("public/gallery/" . "$b" . ".jpg"))
    {
    print"
    <td valign='bottom'>
    <a href='public/gallery/$b.jpg' rel='lightbox'>
    <img src='public/gallery/$b.jpg' width='136 height='102' border='0'>
    </a>
    </td>";
    }
    else
    {

           }
            print"
             <td width='5'></td>";
         }
      print"
       </tr>";
      print"
       <tr>";
        print"
         <td colspan='7' height='8'></td>";
      print"
       </tr>";
     }
    

    print"
    </tr>";
    print"
    </table>";
    [/PHP]
    Il primo ciclo mi dice di fare 3 tr
    il secondo ciclo mi fa 4 td
    il conto fa 12, ma l'intoppo è
    1-le immagini che inserisce sono 1-2-3-4 nella prima td, nella seconda td non continua 5-6-7-8, ma ripete 1-2-3-4 e così pure nella terza td
    2-come faccio a creare le pagine
    3-ma è possibile fare ciò che mi hanno chiesto, cioè mettere le immagini in ordine decrescente
    ciao e grazie spero in un vostro aiuto
    da danny


  • User Attivo

    Ciao a tutti, rieccomi qua
    allora...ho aperto qualche libro ed ho visto che prima di iniziare devo
    -creare un percorso
    -aprire la cartella
    -leggere dentro
    -stampare i risultati
    -chiudere la cartella
    vi posto cosa ho combinato ma vi dico subito che succede un macello, immagini che si aprono, altre no, Uninitialized string offset... di tutto e di più
    [PHP]
    <?php
    //creare il percorso
    $percorso='gallery';
    //aprire la cartella interessata
    $cartella=opendir($percorso);
    //leggere il contenuto della cartella
    while($contenuto=readdir($cartella))
    {
    for($i=1; $i<=$contenuto; $i++)
    {
    if($contenuto != '.' && $contenuto != '..')
    {
    //stampa il contenuto
    print"<img src='$percorso/$contenuto*.jpg'><br>";
    }
    }
    }
    //chiudiamo la cartella
    closedir($cartella);
    ?>
    [/PHP]
    La cartella gallery contiene 13 immagini nominate così 1,2,3...13
    cominciamo a risolvere questo
    poi non vi dico, devo inserirle in ila per 4 per un max di 12 immagini per pagina, quindi devo creare anche le pagine
    fosse finita qua, devo anche metterle in ordine decrescente
    sto impazzendo, mi aiutato per favore
    ciao da danny


  • ModSenior

    Prova cosi:
    [php]
    <?php
    $partenza = 0;
    $fine = 10;
    //creare il percorso
    $percorso='gallery';
    //aprire la cartella interessata
    $cartella=opendir($percorso);
    $i = 0;
    //leggere il contenuto della cartella
    while($contenuto=readdir($cartella))
    {
    if($contenuto != '.' && $contenuto != '..')
    {
    if($partenza >= $i && $i<$fine)
    //stampa il contenuto
    echo "<img src='$percorso/$contenuto'><br>";
    $i++;
    }
    }
    //chiudiamo la cartella
    closedir($cartella);
    ?>
    [/php]


  • User Attivo

    :ciauz:Ciao Thedarkita, ho dovuto studiare un poco
    altrimenti non ne uscivo più
    ricapitolando, con questo script, spero utile per gli utenti futuri, riesco a visualizzare le immagini, ma tutte in modo orizzontale.
    I problemi sono 2
    il primo è che devo avere 4 immagini per riga e poi andare a capo
    il secondo è quello di creare delle pagine ogni 20 immagini
    Penso di non riuscirci da solo è la prima volta che mi trovo in questa situazione, o meglio se dovessi riuscirci ci vorrebbe molto tempo.
    Potremmo continuare questo progetto insieme.
    Invito anche gli altri utenti del forum a collaborare
    Un saluto da danny975:bigsmile:

    [PHP]
    <?php
    //Nome della cartella
    $car = 'public/gallery';
    // Opendir è la funzione per aprire la cartella
    $handle = opendir($car);
    //array
    $a_img=array();
    // Ciclo la cartella
    while (false !== ($files = readdir($handle)))
    {
    if ($files != '.' && $files != '..' && $files != 'Thumbs.db')
    {
    $a_img[]=$files;
    }
    }
    print"
    <table border='1' cellspacin='0' cellpadding='0'>";
    print"
    <tr>";
    for($i=count($a_img)-1; $i>=0; $i--)
    {
    print"
    <td>";
    echo"<img src='public/gallery/$a_img*'><br/>";
    print"
    </td>";
    }
    print"
    </tr>";
    print"
    </table>";
    ?>
    [/PHP]


  • ModSenior

    Ciao,

    prova cosi:
    [php]
    <?php
    $numero = 4;

    // Nome della cartella
    $car = 'public/gallery/';

    // Opendir è la funzione per aprire la cartella
    $handle = opendir($car);

    // Ciclo la cartella
    $i = 0;
    echo '<table>';
    while (false !== ($files = readdir($handle)))
    {
    // Stampo i file
    if ($files != '.' && $files != '..')
    {
    if($i==0)
    echo'<tr>';
    echo '<td><img src="'.$car.$files.'"></td>';

        if($i==($numero-1))
    echo'</tr>';
    $i = $i==($numero-1) ? 0 : $i+1;
    }
    

    }
    while($i<=($numero-1))
    {
    echo '<td> </td>';
    $i++;
    }
    echo '</tr></table>';
    ?>
    [/php]


  • User Attivo

    Ciao Thedarkita
    va tutto bene, però mi sono perso in questa parte
    mi daresti una spiegazione?

    [php]
    if($i==($numero-1))
    echo'</tr>';
    $i = $i==($numero-1) ? 0 : $i+1;
    }
    }
    while($i<=($numero-1))
    {
    echo '<td> </td>';
    $i++;
    }
    echo '</tr></table>';//questa tr perchè la chiudi, sopra già l'hai chiusa
    [/php]

    Ah! per le pagine cosa prendo come riferimento
    devo usare la funzione ceil come si fa di solito
    ciao da danny
    e grazie ancora:tongueout:


  • ModSenior

    Poichè può accadere di avere ad esempio 15 immagini, volendo avere 10 immagini per colonna, l'ultima riga avrebbe solo 5 colonne e le altre 5 risulterebbero mancanti pertanto inserisce le colonna vuote.
    Il tr effettivamente può esserci il caso in cui sia ripetuta, sarebbe da fare cosi:
    [php]
    <?php
    $numero = 4;

    // Nome della cartella
    $car = 'public/gallery/';

    // Opendir è la funzione per aprire la cartella
    $handle = opendir($car);

    // Ciclo la cartella
    $i = 0;
    echo '<table>';
    while (false !== ($files = readdir($handle)))
    {
    // Stampo i file
    if ($files != '.' && $files != '..')
    {
    if($i==0)
    echo'<tr>';
    echo '<td><img src="'.$car.$files.'"></td>';

        if($i==($numero-1))
    echo'</tr>';
    $i = $i==($numero-1) ? 0 : $i+1;
    }
    

    }
    if($i<($numero-1))
    {
    while($i<=($numero-1))
    {
    echo '<td> </td>';
    $i++;
    }
    echo '</tr>';
    }
    echo '</table>';
    ?> [/php]

    Per le pagine si devi fare come al solito.