Seitenblättern für eine Bilddatenbank

marc669

Mitglied
Hallo an alle ich hab da mal ein problem, wo ich jetzt nicht mehr weiter komme.
Ich bin neu dabei.
Mein Problem ist ich möchte gerne das 4 Bilder pro Seite angezeigt werden das klappt nicht hier ist mein Script
PHP:
<body bgcolor="white" text="black">
<table border="0" cellpadding="0" cellspacing="0"  width="100%">
<tr>
<td width="40">&nbsp;</td>
<td align="center">
<br><br>
<?php
      include ('connect.php');

         print"<br>";
         
         mysql_connect($host,$user,$pw);
         mysql_select_db ($database);
           $sql = 'SELECT * FROM `tag` LIMIT 0, 4 ';

         $erg=mysql_query($sql);

         $menge=mysql_num_rows($erg);
         $anzahl=3;
         $wievielseiten=floor($menge/$anzahl)+1;
         if ($menge%$anzahl==0) {$wievielseiten--;}

         if(!isset($seite)){$seite=1;}

         $start=($seite-1)*$anzahl;
         $sql = 'SELECT * FROM `tag` LIMIT 0, 4 ';
		 $erg=mysql_query($sql) or die(mysql_error().' sql:'.$sql);

         //print"<form action='' method='' name='formi' align='center'></form>";
         print"<table border='0' width='100%'cellspacing='0' cellpadding='5'>";
         print"<tr bgcolor='#FFFFFF'>
		 <td><!--id--></td>
		 <td><!--tag--></td>
		 




		 </tr>";
         $farbe=0;

          while($daten = mysql_fetch_row($erg))

              {
              if($farbe==0){print"<tr bgcolor='#FFFFFF'>";$farbe=1;}
              else  {print"<tr bgcolor='#FFFFFF'>";$farbe=0;}



                print"<!--<td>$daten[0]</td>-->
				<td><img src='neu/$daten[1]'width='50%' heigth='50%'></td>
				<td><img src='neu/$daten[1]'width='50%' heigth='50%'></td>
					  



					  </tr>";



                }
               print"</table></div>";

               print"<center>";

               if ($seite==1) {print" &nbsp;<<&nbsp;";}
               else {print"<a href='text.php?seite=1'><<</a>"; }


                if ($seite==1) {print"&nbsp;<&nbsp;";}
                else {$zurueck=$seite-1; print"<a href='text.php?seite=$zurueck'>&nbsp;<&nbsp;</a>"; }

                for ($i=1;$i<=$wievielseiten;$i++)
                {
                  if ($i==$seite) {print"&nbsp;$i&nbsp;";}
                  else {print" <a href='text.php?seite=$i'>&nbsp;$i&nbsp;</a> ";}
                  }

                if ($seite==$wievielseiten){print "&nbsp;>&nbsp;";}
                else {$weiter=$seite+1;print "<a href='text.php?seite=$weiter'>&nbsp;>&nbsp;</a>"; }

                  if ($seite==$wievielseiten){print "&nbsp;>>&nbsp;";}
                else {print "<a href='text.php?seite=$wievielseiten'>&nbsp;>>&nbsp;</a>"; }

                print"</center>";

                print"copy by ";



   ?>
</td>
<td width="40"></td>
</tr>
</table>
</body>
 
Ich habe in meiner Datenbank mehrere Bilder und möchte diese jetzt angezeigt bekommen aber 4 bilder pro Seite und wenn ich jetzt auf die 2. Seite klicke werden mir die ersten 4 bilder angezeigt
 
Ist relativ einleuchtend, weil deine SQL Anfrage statisch auf 0-4 festgesetzt ist, heißt es werden dir immer nur die ersten 4 angezeigt.
Wenn du die merkst, auf welcher Seite du bist, kannst du ausrechnen welche Bilder auf der Seite anzeigen müssen.
Kurz und knapp du musst dir den start der bei dir momentan immer 0 ist durch eine dynamische Variable ersetzen!!

Gruß
Evo
 
Zuletzt bearbeitet:
Und wo genau muss ich was ändern?
Habe schön viereckige Augen und der Schädel brumt.
Kannst du mir den Fehler zeigen?
 
lol
hatte grad meinen Post nochmal abgeändert um es dir konkret zu sagen.
Es liegt an der 0 im SQL Code!
Ein 2. Fehler den ich noch sehen, wie hast du $seite zu beginn deklariert? mit 0 oder 1? wenn mit 0 dann wird als nächstes deine Berechnung schief gehen.

Gruß
Evo
 
Zuletzt bearbeitet:
bei dem 2. musst du es ändern bei dem ersten brauchst du es eigentlich gar nicht

PHP:
$seite = $_GET["seite"]; //oder Post je nach dem was du verwendest
if(!isset($seite))
{
    $seite = 1;
}
$eintraege_pro_seite = 4;
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
$sql = 'SELECT * FROM `tag` LIMIT $start, $eintraege_pro_seite ';
 
Da ich dir hier keinen fertigen Code liefern möchte, weil ich glaube, dass das für den Lerneffekt einfach nix bringt, hier mal die grobe Vorgehensweise:

Deklariere dir eine Varialbe $limit, dass du das Limit, also wie viele Bilder pro Seite du anzeigen möchtest, schnell und einfach ändern kannst, evtl. auch durch den Benutzer angestoßen.
Nun setze eine Variable $start, und setze diese, sofern sie nicht durch $_GET['start'] gesetzt wird auf 0.
Für die Anzahl aller Bilder, die du für die Berechnung der gesamten Seitenanzahl benötigst, erstelle ein entsprechendes SQL-Statement ohne LIMIT.
Nehem dieses Statement nun und füge das LIMIT mit $start, $limit hinzu. Das Ergebnis dieses Selects nutzt du für die Anzeige.

Der neue $start-Wert setzt sich im folgenden nun aus $start + $limit zusammen für die nächste Seite und aus $start - $limit für die vorherige es sei denn, dass $start + $limit größer als die gesamte Anzahl an Bildern ist oder $start - $limit kleiner als $limit wird.

Diese Informationen solltest du nun Schritt für Schritt in PHP umsetzen und du hast dein gewünschtes Ergebnis.
 
hab geändert jetzt
PHP:
<?php
      include ('connect.php');

         print"<br>";
         
         mysql_connect($host,$user,$pw);
         mysql_select_db ($database);
           $sql = 'SELECT * FROM `tag` LIMIT 0, 4 ';

         $erg=mysql_query($sql);

        

         $seite = $_GET["seite"]; //oder Post je nach dem was du verwendest
         if(!isset($seite))
{
    $seite = 1;
}
              $eintraege_pro_seite = 4;
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
$sql = 'SELECT * FROM `tag` LIMIT $start, $eintraege_pro_seite '; 
		 $erg=mysql_query($sql) or die(mysql_error().' sql:'.$sql);

         //print"<form action='' method='' name='formi' align='center'></form>";
         print"<table border='0' width='100%'cellspacing='0' cellpadding='5'>";
         print"<tr bgcolor='#FFFFFF'>
		 <td><!--id--></td>
		 <td><!--tag--></td>
		 




		 </tr>";
         $farbe=0;

          while($daten = mysql_fetch_row($erg))

              {
              if($farbe==0){print"<tr bgcolor='#FFFFFF'>";$farbe=1;}
              else  {print"<tr bgcolor='#FFFFFF'>";$farbe=0;}



                print"<!--<td>$daten[0]</td>-->
				<td><img src='neu/$daten[1]'width='50%' heigth='50%'></td>
				<td><img src='neu/$daten[1]'width='50%' heigth='50%'></td>
					  



					  </tr>";



                }
               print"</table></div>";

               print"<center>";

               if ($seite==1) {print" &nbsp;<<&nbsp;";}
               else {print"<a href='text.php?seite=1'><<</a>"; }


                if ($seite==1) {print"&nbsp;<&nbsp;";}
                else {$zurueck=$seite-1; print"<a href='text.php?seite=$zurueck'>&nbsp;<&nbsp;</a>"; }

                for ($i=1;$i<=$wievielseiten;$i++)
                {
                  if ($i==$seite) {print"&nbsp;$i&nbsp;";}
                  else {print" <a href='text.php?seite=$i'>&nbsp;$i&nbsp;</a> ";}
                  }

                if ($seite==$wievielseiten){print "&nbsp;>&nbsp;";}
                else {$weiter=$seite+1;print "<a href='text.php?seite=$weiter'>&nbsp;>&nbsp;</a>"; }

                  if ($seite==$wievielseiten){print "&nbsp;>>&nbsp;";}
                else {print "<a href='text.php?seite=$wievielseiten'>&nbsp;>>&nbsp;</a>"; }

                print"</center>";

                print"copy by ";



   ?>
jetzt zeigt er mir diese fehl meldung

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$start, $eintraege_pro_seite' at line 1 sql:SELECT * FROM `tag` LIMIT $start, $eintraege_pro_seite
 
Zurück