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

    Problema con didascalie galleria

    Salve a tutti, sto realizzano una galleria in php.
    La pagina crea dinamicamente le anteprime delle immagini prendendole da una cartella (non DB) e vorrei che sotto ciascuna anteprima venisse aggiunta una didascalia, presa a sua volta da un file .txt.

    il .txt si presenta in questa forma:
    codice:
    nomefile.jpg;titolo opera - dimensioni - descrizione -anno
    nomefile.jpg;titolo opera - dimensioni - descrizione -anno
    nomefile.jpg;titolo opera - dimensioni - descrizione -anno
    e questa è la parte di php interessata, oltre non riesco ad andare (lo ammetto ho problemi con gli array!):

    Codice PHP:
    <?php if (!empty($galleryArray) && $galleryArray['stats']['total_images'] > 0): ?>
                <ul class="gallery-wrapper thumbnails">
                    <?php foreach ($galleryArray['images'] as $image): ?>
                        <li class="">
                            <a href="<?php echo $image['file_path']; ?>" title="<?php echo $image['file_title']; ?>" class="thumbnail" rel="colorbox">
                                <img src="<?php echo $image['thumb_path']; ?>" alt="<?php echo $image['file_title']; ?>" />
    /* DA QUI DOVREBBE INIZIARE LA PARTE DELLE DIDASCALIE */
                                                            <div class="desc">
        <?php  
            
    $im 
    $image['file_title'];
    $ar1 file('pics.txt');
    foreach (
    $ar1 as $ar2){
    $a explode('-',$ar2);
    $nome_tot $a['0'];
    $dim $a['1'];
    $desc $a['2'];
    $anno $a['3'];
    $b explode(';',$nome_tot);
    $file $b['0'];
    $titolo $b['1'];
    $c explode('.',$file);
    $nome $c['0'];
    $ext $c['1'];
    print 
    $titolo;
    }
        
    ?>  

                                                 
     </div>
                            </a>
                        </li>
                    <?php endforeach; ?>
                </ul>
    Vorrei in pratica che sotto ogni immagine venissero elencate, uno sotto l'altro, le caratteristiche (titolo, dimensioni, descrizioni, anno).
    Ho provato a ciclare l'array in tutti i modi e aggiungere condizioni di tutti i tipi, ma non c'è verso, o ottengo errori e warning o mi elenca tutte le caratteristiche di tutte le immagini in ogni immagine che carica.
    Sareste così gentili da aiutarmi?
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Ciao,

    Da quanto posso vedere il tuo file corrisponde ad un file preformattato csv.
    Ti sarà utile la funzione di php

    http://it2.php.net/fgetcsv

    Ciao
    Paolo
    Che mestiere difficile.....essere da soli ancora di più

  3. #3
    ...veramente si tratta di un .txt e non di un .csv. Vedendo ora per la prima volta questa funzione non so se mi può essere utile, ora provo. Comunque il problema non è estrarre i dati da txt ma collocarli sotto l'immagine corrispondente.
    Ad esempio, ho un'immagine che si chiama 1.jpg, lo script deve aprire il txt, andare a cercare la linea che inizia con "1.jpg;" e stampare, uno sotto l'altro tutto ciò che segue il ";". Il ritorno a capo dello script è decretato dal "-" della linea nel file txt.
    Non so se è abbastanza chiaro il mio intento...

  4. #4
    nulla, non riesco a farlo.
    Al posto di questo:
    Codice PHP:
    $ar1 file('pics.txt');
    foreach (
    $ar1 as $ar2){
    $a explode('-',$ar2);
    $nome_tot $a['0'];
    $dim $a['1'];
    $desc $a['2'];
    $anno $a['3'];
    $b explode(';',$nome_tot);
    $file $b['0'];
    $titolo $b['1'];
    $c explode('.',$file);
    $nome $c['0'];
    $ext $c['1'];

    ho messo questo:
    Codice PHP:
    $file="pics.txt";
    $delimiter "-";

    //apro il file
    if (($fp fopen($file"r")) !== false)
    {
     
    //per ogni riga del file...
     
    while (($data fgetcsv($fp1000$delimiter)) !== false) {
    print 
    $data[0];
     }
     
    fclose($fp);

    sempre stesso risultato, visualizzo sempre tutto il contenuto del .txt sotto ogni immagine...

  5. #5
    ...nessuno?

  6. #6
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Forse non ho capito bene cosa vuoi fare..
    Nel tuo foreach stampi la tua immagine e poi vorresti che per ogni immagine stampata compaia sotto la sua descrizione, giusto?
    L'unico aggancio che vedo dalla tua immagine al tuo file .txt è il nome file percui devi inserire un controllo che stampi solo la descrizione corretta
    Codice PHP:
    $file_handle fopen("pics.txt""rb");

    while (!
    feof($file_handle) ) {
         
    $line_of_text fgets($file_handle);
         
    $parts explode(';'$line_of_text);
         if(
    $parts[0]==TUO_NOME_FILE_ESTRATTO_DAL_FOEACH){
                  
    $parts explode('-'$line_of_text);
                  echo 
    $part[2];//qui avrai la tua descrizione
         
    }
    }
    fclose($file_handle); 
    Che mestiere difficile.....essere da soli ancora di più

  7. #7
    Si, l'intenzione è esattamente quella, così come la mia idea era usare il nome del file per controllare se la linea del txt fosse quella esatta.
    Ora ho modificato il codice come mi hai suggerito, ma visualizzo solo le immagini della galleria, senza elementi del file di testo.
    Riposto il "nuovo" codice:
    Codice PHP:
     <?php if($gallery->getSystemMessages()): ?>
                <?php foreach($gallery->getSystemMessages() as $message): ?>
                    <div class="alert alert-<?php echo $message['type']; ?>">
                        <a class="close" data-dismiss="alert">×</a>
                        <?php echo $message['text']; ?>
                    </div>
                <?php endforeach; ?>
            <?php endif; ?>

            <!-- Start UberGallery v<?php echo UberGallery::VERSION?> - Copyright (c) <?php echo date('Y'); ?> Chris Kankiewicz (http://www.ChrisKankiewicz.com) -->
            <?php if (!empty($galleryArray) && $galleryArray['stats']['total_images'] > 0): ?>
                <ul class="gallery-wrapper thumbnails">
                    <?php foreach ($galleryArray['images'] as $image): ?>
                        <li class="">
                            <a href="<?php echo $image['file_path']; ?>" title="<?php echo $image['file_title']; ?>" class="thumbnail" rel="colorbox">
                                <img src="<?php echo $image['thumb_path']; ?>" alt="<?php echo $image['file_title']; ?>" />
                                                                                    <div class="desc"> 
     <?php  
     $im 
    $image['thumb_path'];
     
    $file_handle fopen("pics.txt""rb");

    while (!
    feof($file_handle) ) {
         
    $line_of_text fgets($file_handle);
         
    $parts explode(';'$line_of_text);
         if(
    $parts[0]== $im){
                  
    $parts explode('-'$line_of_text);
                  echo 
    $parts[2];
         }
    }
    fclose($file_handle);  

     
    ?>  


                                                 
     </div>
                            </a>
                        </li>
             <?php endforeach; ?>      
                </ul>

            <?php  endif;?>
    Dovrebbe confrontare $im ( $im = $image['thumb_path']; ) con $parts[0] e se coincidono andare avanti... ma qui non si smuove nulla....

  8. #8
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    if($parts[0]== $im)

    Sicuro che questo cotrollo sia giusto?
    Non è che verifichi uguaglianza tra nome file e path+nomefile?

    Ciao
    Paolo
    Che mestiere difficile.....essere da soli ancora di più

  9. #9
    Dunque, non ti ho ancora ringraziato per l'aiuto che mi stai dando: GRAZIE!
    Poi, si, hai ragione, la variabile $im era sbagliata, l'ho corretta in questo modo:
    codice:
    $ima = $image['file_title'];
     $ext = '.jpg';
     $im = $ima.$ext;
    perchè da nessuna parte su questa pagina posso recuperare il nome del file per esteso. Per ora mi accontento di farlo andare con i jpg, poi per estenderlo alle altre estensioni si vedrà in secondo momento.
    Comunque anche con questa modifica non funge...

  10. #10
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    L'unico modo di risolvere è fare echo su eco per vedere che i controlli e quello che leggi sia quello che ti aspetti.

    La logica è questa dentro il tuo for each cicli tutte le tue immagini.
    All'interno del tuo for each devi ciclare tutto il tuo file txt interrompere il ciclo quando trovi corrispondenza del nome e stampare le tue var....

    Diamo per scontato che sia corretto il foreach altrimenti non ti stamperebbe le immagini

    Codice PHP:

    while (!feof($file_handle) ) {
         
    $line_of_text fgets($file_handle);

    // debug

    echo "<br />";
    print_r($line_of_text);
    echo 
    "<br />";
    exit();
    // debug


         
    $parts explode(';'$line_of_text);
         if(
    $parts[0]== $im){
                  
    $parts explode('-'$line_of_text);
                  echo 
    $parts[2];
         }

    In questo modo controlli che la prima riga letta sia quello che ti apsetti ovvero : "nomefile.jpg;titolo opera - dimensioni - descrizione -anno"

    E' corretta allora passi al controllo successivo
    Codice PHP:

    while (!feof($file_handle) ) {
         
    $line_of_text fgets($file_handle);

         
    $parts explode(';'$line_of_text);
    // debug

    echo "<br />";
    print_r($parts);
    echo 
    "<br />";
    exit();
    // debug

         
    if($parts[0]== $im){
                  
    $parts explode('-'$line_of_text);
                  echo 
    $parts[2];
         }

    Controlli che cosa ci sia nella var $parts, se è un array con array(0) = nomefile.jpg e array(1) = titolo opera - dimensioni - descrizione -anno...

    Allora hai fatto giusto altrimenti la suddivisione deve essere fatta in altro modo....

    con print_r() stampi esattamente il contenuto della variabile, cosa indispensabile per il debug così da capire cosa succedere realmente, alrto alleato utile è il var_dump che ti dice anche che tipologia di variabile sia...

    Spero di esserti stato d'aiuto.
    Che mestiere difficile.....essere da soli ancora di più

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.