Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    togliere variabile foto da un ciclo while

    ciao a tutti,

    1 - ho una tab strutture e una tab strutture_foto.
    2 - devo stampare tutte le descrizioni delle strutture e SOLO la prima foto (di 6) su due colonne.

    3 - dato questo codice mi succede che viene stampata sei volte la struttura, tante quante sono le foto (quindi, 6 foto diverse con la stessa descrizione)

    4 - come posso fare per togliere $fotina dal ciclo e farmi stampare solo una volta la foto con una sola descrizione?

    grazie, danielix

    Codice PHP:
    $query "SELECT strutture.id, strutture.descrizione, strutture.tipo_struttura, strutture.nome, strutture_foto.FOTO AS fotina FROM strutture LEFT JOIN strutture_foto ON strutture.id=strutture_foto.ID_STRUTTURA";
    $res mysql_query($query) or die (mysql_error());

    // numero delle immagini presenti nel DB
    $n_img mysql_num_rows($res);

    // verifico che il DB ospiti almeno un'immagine
    if($n_img >= ){
      
    // stabilisco il numero di righe e colonne della nostra tabella per l'impagninazione
      
    $colonne 2;
      
    $righe=0;

      
    // ciclo tutti i record recuperati attraverso la nostra query
      
    while ($f=@mysql_fetch_array($res)){
        
    $righe++;
        
    $id $f['id'];
        
    $nome stripslashes($f['nome']);    
        
    $localita stripslashes($f['locid']);
        [
    b]$fotina stripslashes($f['fotina']);[/b]
        
    $testo stripslashes($f[descrizione]);
        
    $tipologia stripslashes($f['tipo_struttura']);
        
    // stampo la cella contenente l'immagine
        
    echo "<td align=\"center\">\n";
        
    //echo $titolo . "
    ";
        //echo "
    <img src=\"/fot_str\" height=\"67\" width=\"90\" title=\"$nome\"></td>";
        echo 
    "[img]/foto_str".$id."_".$fotina."[/img]</td>";
        
    //echo "<img src=\"/foto_str$id"_"$nome"\" height=\"67\" width=\"90\" title=\"$nome\"></td>";
        
    echo "<td valign=\"top\"><span class=\"loc_box\">" $localita;
        echo 
    "</span>\n" $testo;    echo "</td>\n";

        
    // quando il numero di righe equivale al valore impostato nella variabile $righe
        // procedo a chiudere la linea e ad azzerare il valore di $righe
        
    if ($righe == $colonne){
          echo 
    "</tr>\n";
          
    $righe 0;
        }
      }
    }else{
      
    // stampo un messaggio se il DB è vuoto
      
    echo "Nessuna immagine inserita.";
    }
    @
    mysql_close($cn);
    echo 
    "</table>"
    ---------------------------
    danielix05

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Dovrebbe bastare aggiungere un " LIMIT 1" in fondo alla query, la foto estratta sarà la prima inserita con quel particolare id di collegamento.

    ciao

  3. #3
    potresti mettere un contatore inizializzato a 0, prima di stampare la foto controlli se 0 allora stampa e imposta a il contatore a 1..per tutte le altre troverà il contatore ad un valore diverso da 0 e ti stamperà solo la prima..

  4. #4

    grazie delle risposte

    per gianiaz:

    ho provato la tua soluzione
    Codice PHP:
    $query "SELECT strutture.id, strutture.descrizione, strutture.tipo_struttura, strutture.nome, strutture_foto.FOTO AS fotina FROM strutture LEFT JOIN localita ON strutture.localita=localita.id LEFT JOIN strutture_foto ON strutture.id=strutture_foto.ID_STRUTTURA LIMIT 1"
    ma mi stampa solo una struttura oppure se scrivo LIMIT 1,6 ho lo stesso risultato di prima (6 foto della stessa struttura)

    per ardetek
    alla tua soluzione non ci arrivo. troppo pivello ancora. mi aiuti?
    ---------------------------
    danielix05

  5. #5
    hehe sarà più probabile che mi son spiegato male io.. cmq
    Codice PHP:
    $controllo=0//imposto la variabile a 0, non ha stampato nessun immagine
      
    while ($f=@mysql_fetch_array($res)){
        
    $righe++;
        
    $id $f['id'];
        
    $nome stripslashes($f['nome']);    
        
    $localita stripslashes($f['locid']);
        [
    b]$fotina stripslashes($f['fotina']);[/b]
        
    $testo stripslashes($f[descrizione]);
        
    $tipologia stripslashes($f['tipo_struttura']);
        
    // stampo la cella contenente l'immagine
        
    echo "<td align=\"center\">\n";
        
    //echo $titolo . "
    ";
        //echo "
    <img src=\"/fot_str\" height=\"67\" width=\"90\" title=\"$nome\"></td>";
    //----------- Inizio modifiche
       
    if($controllo==0){//controllo che non siano state stampate già le immagini
           
    echo "[img]/foto_str".$id."_".$fotina."[/img]</td>";
           
    $controllo=1;// se sono quì vuol dire che è la prima immagine che stampo quindi posso mettere la variabile a 1 per dire di nn stamparne più
       
    }
    //----------- Fine modifiche
        //echo "<img src=\"/foto_str$id"_"$nome"\" height=\"67\" width=\"90\" title=\"$nome\"></td>";
        
    echo "<td valign=\"top\"><span class=\"loc_box\">" $localita;
        echo 
    "</span>\n" $testo;    echo "</td>\n";

        
    // quando il numero di righe equivale al valore impostato nella variabile $righe
        // procedo a chiudere la linea e ad azzerare il valore di $righe
        
    if ($righe == $colonne){
          echo 
    "</tr>\n";
          
    $righe 0;
        }
      } 

  6. #6

    niente ardetek

    ho provato la tua soluzione ma stampa solo la prima immagine e poi nessuna altra.

    praticamente stampa la foto e una descrizione (per il primo record) e solo la descrizione (per i record successivi).

    :master:
    ---------------------------
    danielix05

  7. #7
    no è quello che volevi?

  8. #8
    scusa se sono stato poco chiaro.

    io devo praticamente stampare foto+descrizione di una struttura e poi passare alla successiva (fin quante ce ne sono nel db) ognuna deve avere solo una foto e descrizione.

    qualcosa di questo genere già impostato in html in questo vecchissimo sito (guarda in basso dove ci sono le foto delle strutture).

    ora lo vorrei riproporre in php.

    ---------------------------
    danielix05

  9. #9
    quindi tu hai una descrizione in strutture e 6 foto per ogni descrizione.. vorresti stampare la descrizione e solo una foto giusto?

    provato a fare un "GROUP BY strutture.id" nella query?

  10. #10

    funzia!!!

    wow
    sembra funzionare!!!

    ti ringrazio.
    ---------------------------
    danielix05

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.