Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 58
  1. #1
    Utente di HTML.it L'avatar di beat111
    Registrato dal
    Oct 2001
    Messaggi
    160

    id che si incrementa in base al numero di file in una cartella

    Solita premessa... Non mastico il php, ma da un po' di giorni ho questa "fregola" di creare una galleria di immagini tutta automatica. Quello che vorrei fare è questo:
    Caricando un'immagine in una cartella sul server, vorrei che uno script - leggendo quante altre immagini sono presenti all'interno di quella cartella, mi crei un valore (un ID) incrementale e lo vada a "stampare" popolando così un lista html ([*]).
    Praticamente se inserisco 3 immagini nella cartella questo script dovrebbe creare un ID univoco per ogni file (quindi 1, 2 e 3) e inserirlo come stringa (non so se è il termine giusto) nel[*].
    Per farmi capire meglio:
    3 foto = 3 ID = 1 2 3, e mi crea dinamicamente quindi questo codice html:
    <li data-id="id-1">
    <li data-id="id-2">
    <li data-id="id-3">
    cioè si incrementa automaticamente l'ID in base al numero delle foto presenti e ogni volta che ne aggiungo una questo ID si incrementa di una unità: 4a foto = id 4, 5a foto = id 5 e così via.

    Il codice è già tutto pronto e funzionante, mi manca solo questo aspetto che, spero, di aver spiegato.
    Codice PHP:
    <?php
            $featured_dir 
    'images/portfolio/';
            
    $scan scandir($featured_dir);
            echo 
    '[img]' $featured_dir $scan[2] . '[/img]';
            if (
    glob("$featured_dir*.jpg") != false)
            {
            
    $filecount count(glob("$featured_dir*.jpg"));
            echo 
    $filecount;
            }
            else
            {
            echo 
    0;
            }
        
    ?>
        
        <ul id="options">
        
        <?php
        
        $dir 
    'images/tn/';
        
    $scan scandir($dir);    
        
        for (
    $i 0$i<count($scan); $i++) {
            
        if (
    $scan[$i] != '.' && $scan[$i] != '..') {
            if (
    strpos($scan[$i], '.jpg') !== false) {
                echo 
    '
                    <li data-id="id-' 
    $filecount .'>
                    <a rel="lightbox" href="' 
    $featured_dir $scan[$i] . '">
                    <span class="rollover" ></span>
                    [img]' 
    $dir $scan[$i] . '[/img]
                    </a>
                    '
    ;
            }
        }
        }; 
        
    ?>
        [/list]
    Tutto funziona ma, logicamente, per dove sono arrivato adesso, l'ID che creo con lo script è sempre lo stesso (se ci sono 8 foto l'ID è sempre 8 per tutti i punti della lista).
    QUI vedete una demo (non vi preoccupate se lightbox non funziona è colpa degli ID sbagliati), nella quale l'ID è logicamente sempre 13 per tutte le miniature in quanto ci sono 13 foto nella cartella "portfolio").
    Vorrei che l'D partisse da 1 e aumentasse di uno alla volta inbase alle foto che aggiungo nella cartella (perdonate se ripeto le cose ma almeno così spero di farmmi capire)
    Thanks in advance...
    Giò

  2. #2
    Codice PHP:
    ...
        
    $dir 'images/tn/';
        
    $scan scandir($dir);    
        
        
    $count 0;
        for (
    $i 0$i<count($scan); $i++) {
            
        if (
    $scan[$i] != '.' && $scan[$i] != '..') {
            if (
    strpos($scan[$i], '.jpg') !== false) {
                
    $count++;
                echo 
    '
                    <li data-id="id-' 
    $count .'> 
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di beat111
    Registrato dal
    Oct 2001
    Messaggi
    160
    BENISSIMO!
    Funziona alla grande.
    Ma perché fermarsi qui? Complichiamo le cose... Se riesco giuro che condivido lo script con tutti!
    Il portfolio che ho in mente ha anche un filtro che, in base alla categoria delle foto, mi visualizza solo le immagini di quella categoria. Queste categorie sono gestite da una classe (le 3 categorie sono LOGHI, PRINT e WEB). Le immagini di ogni categoria risiedono in 3 cartelle diverse (guardacaso "loghi", "print" e "web")
    Al punto in cui mi trovo adesso con lo script leggo solo la cartella loghi.
    La demo è QUI e il codice è questo:
    Codice PHP:
    <div class="section" id="portfolio">
    <div id="galleria">
         <ul class="filtro">
             [*]
                <ul>
                    <li class="segment-1 selected-1">[url=""]Tutto[/url]
                    <li class="segment-1">[url=""]Loghi[/url]
                    <li class="segment-1">[url=""]Print[/url]
                    <li class="segment-1">[url=""]Web[/url]
                 [/list]
            
        [/list]
        <ul style="height: 500px;" id="list" class="image-grid">
        <?php
        
        $dirlog 
    'images/portfolio/loghi/';
        
    $scanlog scandir($dirlog);
        
    $loghi 'class="loghi"';
        
    $count 0;
        for (
    $i 0$i<count($scanlog); $i++) {
            
        if (
    $scanlog[$i] != '.' && $scanlog[$i] != '..') {
            if (
    strpos($scanlog[$i], '.png') !== false) {
            
    $count++;
                echo 
    '
                    <li data-id="id-' 
    $count .'" ' $loghi .'>
                    <a rel="lightbox" href="' 
    $dirlog $scanlog[$i] . '" title="' $scanlog[$i] . '">
                    <span class="rollover" ></span>
                    [img]' 
    $dirlog $scanlog[$i] . '[/img]
                    </a>
                    '
    ;
            }
        }
        }; 
        
    ?>
        [/list]
    </div>
    </div>
    Quindi ora vorrei che lo script leggesse in tutte e tre le cartelle (non mi interessa l'ordine, basta che mi dica il totale delle foto nelle cartelle... oddio sarebbe figo se l'ID si incrementasse in base alla data di caricamento dell'immagine, ma va bene anche che sia random) e facesse incrementare l'ID in base al totale delle foto delle 3 cartelle e che in base alla posizione della foto mi restituisse la "class" di appartenenza (cioè: per le foto presenti nella cartella "loghi" mi stampa class="loghi", per le foto della cartella "print" mi stampa class="print" e così via...
    In questo modo automatizzerei i filtri...
    Per il momento mi fermo...

  4. #4
    Utente di HTML.it L'avatar di beat111
    Registrato dal
    Oct 2001
    Messaggi
    160
    Per quanto riguarda la lettura nelle altre cartelle ho risolto nel più banale" dei modi: ho copia/incollato il codice altre due volte cambiando nomi alle variabili e ai path. Magari il modo non è ortodosso e c'è qualche metodo per avere codice più pulito, ma funziona. DEMO
    BENE.
    Quello che ora mi resta da fare per automatizzare il tutto, anzi - per renderlo più completo - è di riuscire, in fase di upload delle immagini, ad aggiungere anche il testo per il "title" della finestra lightbox, in modo che non si visualizzi - come adesso - il nome del file, ma il testo che io scrivo in fase di upload. Suppongo quindi che bisognerebbe far ricorso a qualche uploader provvisto non solo del campo per l'immagine ma anche di quello per il testo.
    Si può fare?
    Resto in attesa della vostra "generosa" competenza.
    Nel frattempo googlo un po' alla ricerca della soluzione.

    Giò

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    44
    per rendere il codice piu pulito aggiungi ai tasti delle tre categorie il tag:

    codice:
    loghi
    print
    web
    poi tramite php recuperi il valore di categoria cosi:
    codice:
    $categoria=$_GET['categoria'];
    adesso devi confrontarlo in base al suo valore imposti la sua directori.
    Quando avrai finito ti aiuterò con l'upload

  6. #6
    Utente di HTML.it L'avatar di beat111
    Registrato dal
    Oct 2001
    Messaggi
    160
    Ehm... Non mi è molto chiaro.
    loghi deve sostituire quello che ho: <li class="segment-1">Loghi?
    Non ho provato ma sono abbastanza sicuro che il "data-vale" debba essere presente altrimenti il filtro non funziona.
    Comunque, potresti essere un po' più chiaro?
    Grazie anticipatamente

  7. #7
    Come suggeritoti da Mavi94 puoi fare una cosa del genere:

    Codice PHP:
    <div class="section" id="portfolio">
    <div id="galleria">
         <ul class="filtro">[*]
                <ul>
                    <li class="segment-1 selected-1">[url="pagina.php"]Tutto[/url]
                    <li class="segment-1">[url="pagina.php?categoria=loghi"]Loghi[/url]
                    <li class="segment-1">[url="pagina.php?categoria=print"]Print[/url]
                    <li class="segment-1">[url="pagina.php?categoria=web"]Web[/url][/list]
            [/list]
        <ul style="height: 500px;" id="list" class="image-grid">
        <?php
        $categoria 
    "";

        if (isset(
    $_GET['categoria'])) {
            
    $categoria $_GET['categoria']."/";
        }
        
        
    $dirlog 'images/portfolio/'.$categoria;
        
    $scanlog scandir($dirlog);
        
    $loghi 'class="loghi"';
        
    $count 0;
        for (
    $i 0$i<count($scanlog); $i++) {
            
        if (
    $scanlog[$i] != '.' && $scanlog[$i] != '..') {
            if (
    strpos($scanlog[$i], '.png') !== false) {
            
    $count++;
                echo 
    '
                    <li data-id="id-' 
    $count .'" ' $loghi .'>
                    <a rel="lightbox" href="' 
    $dirlog $scanlog[$i] . '" title="' $scanlog[$i] . '">
                    <span class="rollover" ></span>
                    [img]' 
    $dirlog $scanlog[$i] . '[/img]
                    </a>
                    '
    ;
            }
        }
        }; 
        
    ?>[/list]
    </div>
    </div>
    Dove pagina.php è il nome della pagina contenente lo script.

    P.S.
    Ovviamente andrebbero aggiunti dei controlli di sicurezza.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it L'avatar di beat111
    Registrato dal
    Oct 2001
    Messaggi
    160
    Perdonatemi, ma non riesco ad uscirne... Come premesso non mastico molto php e non capisco come il codice che mi avete suggerito faccia funzionare il tutto. Se copio pedissequamente quello che mi ha indicato satifal non funziona più il caricamento dei loghi. Forse devo sostituire una delle voci "categoria" con loghi? Sto andando a tentativi, ma non ci riesco. E poi se devo ripeterla per caricare anche le voci "print" e "web" non credo che il codice si accorci (magari dico un'eresia)
    Ripeto, la soluzione che ho trovato io non è il massimo, ma funziona.
    Mi piacerebbe di più riuscire ad inserire il caption nella finestra di lightbox.
    Giò

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    44
    ho visto il sorgente della tua demo non funziona perchè hai una funzione in jquery che blocca il caricamento della pagina al click del mouse sui link per risolvere il problema dovresti scrivere una funzione in javascript ma non puoi perchè le immagini vengono caricate al caricamento della pagina e non dinamicamente con js

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    44
    bisogna modificare la funzione in jquery che se ho capito bene ti anima l'apertura dell'immagine al click.
    Dopo cena ti scriverò come modificare quella funzione

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.