Sturmverliebt: Nur das erste Bild in groß anzeigen

Hallo,

irgendwie drehe ich mich gerade im Kreis. In den letzten Tagen habe ich diverse Tutorial angeschaut wie man Daten richtig aus einer Daten ausliest z.B. diese Reihe:

https://www.youtube.com/watch?v=bwRY2t9qpWM&list=UU4iSMp_NB8fMw9bHi7D_Hiw

soweit klappt auch alles nur mein Aufbau ist leider etwas komplizierter.

Derzeit ist dieses mein HTML Aufbau

  
<div>  
        <?php  
		$stmt = $mysqli->prepare("SELECT photo_userID, photo_sedcardID, photo_bild_G FROM photobook");  
		$stmt->execute();  
                $stmt->bind_result($photo_userID, $photo_sedcardID, $photo_bild_G);  
		$stmt->store_result();  
		?>  
            <div>  
	      <img src="sturmverliebt/bild4.jpg" name="bild">  
            </div>  
  
            <div>  
  
<?php  
   while($stmt->fetch()) {  
?>  
<img src="sturmverliebt/k/<?php echo $photo_bild_G; ?>" width="174" onClick="document.bild.src='sturmverliebt/v/<?php echo $photo_bild_G; ?>'" style="cursor:pointer;">  
<?php  
}?>  
</div>  
  
</div>  

klappt auch ABER oben wo "sturmverliebt/bild4.jpg" steht muss das ERSTE Bild ausgegeben werden, muss ich hier nochmals eine Abfrage mit einbauen?

Zur Erklärung:
Unten werden die kleinen Vorschaubilder anzeigt, links das große. Klickt man auf das kleine wird links das große angezeigt. Wenn die Seite aufgerufen wird, soll das erste große Bild gleich zu sehen sein.

  1. Meine Herren!

    klappt auch ABER oben wo "sturmverliebt/bild4.jpg" steht muss das ERSTE Bild ausgegeben werden, muss ich hier nochmals eine Abfrage mit einbauen?

    Nein. Das Bild steckt ja schon in der Ergebnismnge der Datenbank-Abfrage mit drin. Es ist also unnötig die Datenbank nochmal danach zu fragen.

    Was du machen möchtest, ist den Datensatz aus dieser Ergebnismenge zu holen. Solche Datensätze holst du mit $stmt->fetch(). Das machst du ja zum Beispiel schon in deiner Schleife.

    Du kannst aber problemlos auch vor der Schleife schon $stmt->fetch() benutzen. Und das musst du hier auch an geeigneter Stelle machen.

    --
    “All right, then, I'll go to hell.” – Huck Finn
    1. Hallo,

      Du kannst aber problemlos auch vor der Schleife schon $stmt->fetch() benutzen. Und das musst du hier auch an geeigneter Stelle machen.

      die geeignete Stelle wäre hier?

        
      <div>  
       <img src="sturmverliebt/bild4.jpg" name="bild">  
      </div>  
      
      

      ich hab bis jetzt kein Tutorial gefunden wo ich sagen kann ich brauch nur den ERSTEN Datensatz und später dann wieder alle. Hast du hier ein kleines Beispiel für mich oder ein Link wo ich nachschauen kann?

      Mit einem Limit komme ich hier auch nicht weiter. Dann habe ich später nicht alle Daten in meiner Schleife.

      1. Meine Herren!

        Hallo,

        Du kannst aber problemlos auch vor der Schleife schon $stmt->fetch() benutzen. Und das musst du hier auch an geeigneter Stelle machen.

        die geeignete Stelle wäre hier?

        <div>
        <img src="sturmverliebt/bild4.jpg" name="bild">
        </div>

          
        Ja, genauer VOR dieser Stelle.  
          
        
        > ich hab bis jetzt kein Tutorial gefunden wo ich sagen kann ich brauch nur den ERSTEN Datensatz und später dann wieder alle.  
          
        Ah, okay. Die Facette des Problems habe ich nicht sofort erkannt. Wenn du die fetch()-Methode schon vor der Schleife aufrufst, wird dieser Datensatz dann folgerichtig in der Schleife nicht mehr benutzt.  
          
        Du kannst aber der Methode [data_seek( 0 );](http://php.net/manual/en/mysqli-result.data-seek.php) dafür sorgen, dass der Lese-Zeiger (nennen wir ihn einfach mal so) zurück an den Anfang der Ergebnismenge gesetzt wird.  
        
        -- 
        “All right, then, I'll go to hell.” – Huck Finn
        
        1. Hallo,

          Du kannst aber der Methode data_seek( 0 ); dafür sorgen, dass der Lese-Zeiger (nennen wir ihn einfach mal so) zurück an den Anfang der Ergebnismenge gesetzt wird.

          hab es nun so umgesetzt

            
          <?php  
          $stmt = $mysqli->prepare("SELECT photo_userID, photo_sedcardID, photo_bild_G FROM photobook");  
          $stmt->execute();  
            
          $stmt->bind_result($photo_userID, $photo_sedcardID, $photo_bild_G);  
          $stmt->store_result();  
          $stmt->fetch();  
          $stmt->data_seek(0);  
          ?>  
          <div>  
          <img src="sturmverliebt/<?php echo $photo_bild_G; ?>" name="Userbild">  
          </div>  
            
          <?php  
          while($stmt->fetch()) {  
          ?>  
          <img src="sturmverliebt/k/<?php echo $photo_bild_G; ?>" width="174" onClick="document.bild.src='sturmverliebt/v/<?php echo $photo_bild_G; ?>'" style="cursor:pointer;">  
          <?php  
          }?>  
          </div>  
            
          
          
          1. Hi,

            hab es nun so umgesetzt

            könnte mir auch sowas vorstellen:

            <?php

            $grossbild=false;

            while($stmt->fetch()) {

            if(!$grossbild){
             ||grossbild einfügen mit aktueller src;
             $grossbild=true;
             }

            ?>
            <img src="sturmverliebt/k/<?php echo $photo_bild_G; ?>" width="174" onClick="document.bild.src='sturmverliebt/v/<?php echo $photo_bild_G; ?>'" style="cursor:pointer;">
            <?php
            }?>
            </div>

              
              
            gruß  
            peter
            
            1. Mahlzeit,

              ja, man könnte im Auto auch ein zweites Zündschloss im Kofferraum einbauen, damit man zweimal den Schlüssel drehen muss ;)

              --
              42
              1. Mahlzeit,

                ja, man könnte im Auto auch ein zweites Zündschloss im Kofferraum einbauen, damit man zweimal den Schlüssel drehen muss ;)

                Nee,
                war alternativ gedacht, kam wohl nicht so rüber.

                Is ja aber andererseits auch doof, bei jedem Schleifendurchlauf was auszuführen, was nur einmal gebraucht wird. War wohl keine so gute Idee.

                Gruß
                peter

                1. Mahlzeit,

                  Is ja aber andererseits auch doof, bei jedem Schleifendurchlauf was auszuführen, was nur einmal gebraucht wird.

                  Darauf wollte ich hinaus ;)

                  War wohl keine so gute Idee.

                  Besser so als gar nicht nachgedacht :) Ich bin immer der Meinung, durch falsche Lösungen lernt man mindestens soviel wie durch richtige. Nur erkennen muss man es ;)

                  --
                  42
          2. @@Sturmverliebt:

            nuqneH

            <?php

            while($stmt->fetch()) {
            ?>
            <img src="sturmverliebt/k/<?php echo $photo_bild_G; ?>" width="174" onClick="document.bild.src='sturmverliebt/v/<?php echo $photo_bild_G; ?>'" style="cursor:pointer;">
            <?php
            }?>

              
            Das würde ich nicht so schreiben, sondern die [alternative Syntax für Kontrollstrukturen](http://php.net/manual/de/control-structures.alternative-syntax.php) verwenden:  
              
            ~~~html
            <?php  
            [code lang=php]while($stmt->fetch()):
            ~~~ ?>  
              <img src="sturmverliebt/k/<?php echo $photo\_bild\_G; ?>" width="174" onClick="document.bild.src='sturmverliebt/v/<?php `echo $photo_bild_G;`{:.language-php} ?>'" style="cursor:pointer;">  
            <?php `endwhile;`{:.language-php} ?>[/code]  
              
            Siehe <http://forum.de.selfhtml.org/archiv/2014/1/t216248/#m1482382> ff.  
              
            Qapla'
            
            -- 
            „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)