• Super User

    mostrare solo una volta un testo nel ciclo while

    Salve a tutti
    sto cercando di mostrare una gallery di alcuni alberghi usando fancybox.
    Il problema è che per costruire la struttura esatta per poi mostrare le foto, devo mettere tutto in un ciclo while, compreso il link per l'apertura delle foto.

    Con il mio codice se ho 10 foto, mostro 10 volte la scritta "VEDI FOTO"

    Come posso fare a mostrare solo una volta il link?
    Ecco il codice

    
    $query_fotogallery="select * from foto_hotel where id_hotel=\"$riga[id_hotel]\" and attiva=\"1\"";
    $risultato_fotogallery = @mysql_query($query_fotogallery) or die("Impossibile eseguire l'interrogazione fotogallery"); 
    while ($riga_fotogallery = mysql_fetch_array($risultato_fotogallery)) {
    $id_hotel = $riga_fotogallery['id_hotel'];
    $id_foto = $riga_fotogallery['id_foto'];
    $fotogallery = $riga_fotogallery['foto'];
    $mostra_gallery="<a class=\"fancybox\" rel=\"gallery1\" href=\"$url/foto-strutture/$directory/grandi/thumb2_$fotogallery\">VEDI FOTO</a>";
    echo"$mostra_gallery<br>";
    }
    
    

    Come posso risolvere?
    Grazie


  • User Attivo

    Bhè se lo vuoi mostrare solo una volta lo metti fuori dal while, altrimenti lo mostri la prima volta con un controllo su di una variabile $show settata inizialmente a true dopodichè passa a false e non dovrebbe più passare il controllo.


  • Super User

    si ma se lo metto fuori dal while poi non mostra tutto il resto, in pratica dovrei mostrare qualcosa tipo:

    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$foto1">VEDI FOTO</a>";
    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$foto2"></a>";
    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$foto3"></a>";
    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$foto4"></a>";
    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$foto5"></a>";

    ecc

    come dovrei fare con la variabile settata su true e false?


  • User Attivo

    fuori dal ciclo while la setti true, fai un controllo all'interno che scrive VEDI FOTO solo se la variabile è settata true. Ma a fine ciclo la imposti false in modo che non sarà mai true ma solo la prima volta.

    [PHP]
    $show = true;
    while () {
    if($show == true) {
    VEDI FOTO
    }

    //Tutto quello che ti serve

    $show = false;
    }
    [/PHP]


  • Super User

    ci siamo quasi, funziona bene il tuo metodo, solo che adesso appena si apre la gallery le prime 2 foto sono le stesse, poi iniziano tutte le altre e questo per ogni struttura

    Quindi per esempio:
    hotel x: prima foto quella della piscina, seconda foto la stessa, dalla terza in poi tutte foto nuove

    e questo per tutte le altre strutture

    Come potrei fare ad evitare di far visualizzare la stessa foto 2 volte?

    Ecco il codice aggiornato con il tuo consiglio:
    [php]
    $show = true;
    $query_fotogallery="select * from foto_hotel where id_hotel="$riga[id_hotel]" and attiva="1"";
    $risultato_fotogallery = @mysql_query($query_fotogallery) or die("Impossibile eseguire l'interrogazione fotogallery");
    //$numero_foto_gallery = mysql_num_rows($risultato_fotogallery);
    while ($riga_fotogallery = mysql_fetch_array($risultato_fotogallery)) {
    $id_hotel = $riga_fotogallery['id_hotel'];
    $id_foto = $riga_fotogallery['id_foto'];
    $fotogallery = $riga_fotogallery['foto'];
    if($show == true) {
    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$fotogallery"><button type="button" class="btn btn-info btn-sm" style="margin-top:5px;"><b>VEDI FOTO</b></button></a>";
    echo"$mostra_gallery";
    }
    $show = false;
    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$fotogallery"></a>";
    echo"$mostra_gallery";
    }
    [/php]

    Inoltre ho notato che una volta che arrivo all'ultima foto dell'hotel, non ricomincia da zero, ma fa vedere le foto dell'albergo successivo e questo è un problema
    E' risolvibile? Magari devo fare qualche altro controllo...
    Grazie


  • User Attivo

    @No_Stress said:

    ci siamo quasi, funziona bene il tuo metodo, solo che adesso appena si apre la gallery le prime 2 foto sono le stesse, poi iniziano tutte le altre e questo per ogni struttura

    Quindi per esempio:
    hotel x: prima foto quella della piscina, seconda foto la stessa, dalla terza in poi tutte foto nuove

    e questo per tutte le altre strutture

    Come potrei fare ad evitare di far visualizzare la stessa foto 2 volte?

    Ecco il codice aggiornato con il tuo consiglio:
    [php]
    $show = true;
    $query_fotogallery="select * from foto_hotel where id_hotel="$riga[id_hotel]" and attiva="1"";
    $risultato_fotogallery = @mysql_query($query_fotogallery) or die("Impossibile eseguire l'interrogazione fotogallery");
    //$numero_foto_gallery = mysql_num_rows($risultato_fotogallery);
    while ($riga_fotogallery = mysql_fetch_array($risultato_fotogallery)) {
    $id_hotel = $riga_fotogallery['id_hotel'];
    $id_foto = $riga_fotogallery['id_foto'];
    $fotogallery = $riga_fotogallery['foto'];
    if($show == true) {
    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$fotogallery"><button type="button" class="btn btn-info btn-sm" style="margin-top:5px;"><b>VEDI FOTO</b></button></a>";
    echo"$mostra_gallery";
    }
    $show = false;
    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$fotogallery"></a>";
    echo"$mostra_gallery";
    }
    [/php]

    Inoltre ho notato che una volta che arrivo all'ultima foto dell'hotel, non ricomincia da zero, ma fa vedere le foto dell'albergo successivo e questo è un problema
    E' risolvibile? Magari devo fare qualche altro controllo...
    Grazie

    Tu avevi detto di voler mostrare una sola volta il VEDI FOTO quindi nel while non devi riportarci tutto il mostra gallery ma solo il vedi foto. Cioè il tuo codice andrebbe modificato così:
    [PHP]
    $show = true;
    $query_fotogallery="select * from foto_hotel where id_hotel="$riga[id_hotel]" and attiva="1"";
    $risultato_fotogallery = @mysql_query($query_fotogallery) or die("Impossibile eseguire l'interrogazione fotogallery");
    //$numero_foto_gallery = mysql_num_rows($risultato_fotogallery);
    while ($riga_fotogallery = mysql_fetch_array($risultato_fotogallery)) {
    $id_hotel = $riga_fotogallery['id_hotel'];
    $id_foto = $riga_fotogallery['id_foto'];
    $fotogallery = $riga_fotogallery['foto'];
    $mostra_gallery="<a class="fancybox" rel="gallery1" href="$url/foto-strutture/$directory/grandi/thumb2_$fotogallery">";
    echo"$mostra_gallery";
    if($show == true) {
    <button type="button" class="btn btn-info btn-sm" style="margin-top:5px;"><b>VEDI FOTO</b></button></a>";
    $show = false;
    }
    }
    [/PHP]

    L'ultimo problema non l'ho capito visto che non conosco tutto il funzionamento.