Nächste mögliche Seite / ID ausgeben

BerlinerBaer

Mitglied
Hallo Community,

ich habe ein Problem. Ich habe eine art Seitefunktion gebastelt. Dabei hat man auf der aktuellen Seite, auf der man sich befindet, die Möglichkeit, eine Seite zurück zu gehen, sodern diese existiert. Und man hat die Möglichkeit die nächste Seite aufzurufen. Nun mein Problem ist halt, das es mittels der ID ausgegeben wird. Diese wird durch eine andere Tabelle verglichen. Das hat den Sinn, dass die id der Seite mit der id der Hauptseite übereinstimmen. Dementsprechend ist es wie folgt aufgebaut:

Tabelle 1
Code:
-------------
| id | name |
-------------
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
-------------

Code:
Tabelle 2:
-----------------------
| id | kat_id | name |
-----------------------
|  1 |         1 | test1a |
|  2 |         1 | test1b |
|  3 |         2 | test2a |
|  4 |         1 | test1c |
-----------------------

... u.s.w. ...

Die kat_id ist die ID aus der 1. Tabelle.

Wenn ich nun bei der 2. Tabelle an die 2. ID angekommen bin, so gibt er mir dann mithilfe des folgendes Skriptes nicht die 4. ID aus, die dementsprechend, laut kat_id folgen müssen.

Meine Frage nun, wie kann ich es mithilfe meines Skriptes herausfinden, ab wenn die kat_id weitergeht?
PHP:
<?php
    if(!$_GET['id'])
        { $id = 1; }
    else
        { $id = $_GET['id']; }


    // ##### ZUM ZURÜCKBLÄTTERN! #####        
    if($id > 1)
        {    $zurueck1 = ($id - 1);            
             $zurueck2 = '<a href="?seite=galerie&amp;aktion=erweitertes_ansehen&amp;id='.$zurueck1.'"><img src="http://www.tutorials.de/forum/images/Icons/zurueck.png" alt="zur&uuml;ck" border="0" /></a>'; }
    else
        {    $weiter2 = '<img src="http://www.tutorials.de/forum/images/Icons/halt.png" alt="weiter" border="0" />'; }

    // ##### ZUM VORWÄRTSBLÄTTERN! #####            
    if($id < $seiten_foto)
        {    $weiter1 = ($id + 1);
             $weiter2 = '<a href="?seite=galerie&amp;aktion=erweitertes_ansehen&amp;id='.$weiter1.'"><img src="http://www.tutorials.de/forum/images/Icons/weiter.png" alt="weiter" border="0" /></a>'; }
    else
        {    $weiter2 = '<img src="http://www.tutorials.de/forum/images/Icons/halt.png" alt="weiter" border="0" />'; }
?>


Ich würde mich sehr um eure Hilfe freuen.


Gruß
BerlinerBaer
 
Ich sehe nirgends einen SQL-Query. Wie löst du denn den Zurück-Fall? Einfach nur davon auszugehen, das sobald ID > 1, es sich um eine Seite nach der ersten handelt, halte ich für gewagt. Was passiert denn, wenn du die Seite mit der ID=1 mal löschst?

Also grundsätzlich würde ich es so lösen:

Lese genau einen Datensatz aus Tabelle2 aus, bei dem ID kleiner als Aktuelle ID ist sowie kat_id dementspricht, was der aktuellen ID entspricht; Sortierung nach ID absteigend. (2 Queries):

Code:
SELECT kat_id FROM Tabelle2 WHERE id = $id;
SELECT id FROM Tabelle2 WHERE id < $id AND kat_id = $kat_id LIMIT 1 ORDER BY id DESC;

Etwas ähnliches müsstest du auch für den "nächste Seite"-Fall machen.
 
Okay sorry,


ich habe die Hälfte vergessen:

PHP:
<?php
		if(!$_GET['id'])
			{ $id = 1; }
		else
			{ $id = $_GET['id']; }

		$FotoID = mysql_real_escape_string($_GET['id']);

		$abfrage_galerie = "SELECT * FROM `galerie_kategorie` WHERE `id` = '".$FotoID."' LIMIT 1;";
		$loesung_galerie = mysql_query($abfrage_galerie) or die (mysql_error());
		$ausgabe_galerie = mysql_fetch_assoc($loesung_galerie);	
			
		
		$max_ergebnisse = 1;
		$current = (($FotoID * $max_ergebnisse) - $max_ergebnisse);
		$abfrage_foto = "SELECT * FROM `galerie_fotos` WHERE `kat_id` = '".$ausgabe_galerie['id']."' ORDER BY `id` DESC LIMIT ".$current.", ".$max_ergebnisse.";";
		$loesung_foto = mysql_query($abfrage_foto) or die (mysql_error());
		$ausgabe_foto = mysql_fetch_assoc($loesung_foto);
        $anzahl_foto = mysql_num_rows($loesung_foto);
        $seiten_foto = ceil($anzahl_foto / $max_ergebnisse);

			// ##### ZUM ZURÜCKBLÄTTERN! #####
            if($id > 1)
				{	$zurueck1 = ($id - 1);			
					$zurueck2 = '<a href="?seite=galerie&amp;aktion=erweitertes_ansehen&amp;id='.$zurueck1.'"><img src="http://www.tutorials.de/forum/images/Icons/zurueck.png" alt="zur&uuml;ck" border="0" /></a>'; }
			else
				{	$zurueck2 = '<img src="http://www.tutorials.de/forum/images/Icons/halt.png" alt="weiter" border="0" />'; }

			// ##### ZUM VORWÄRTSBLÄTTERN! #####			
			if($id < $seiten_foto)
				{	$weiter1 = ($id + 1);
					$weiter2 = '<a href="?seite=galerie&amp;aktion=erweitertes_ansehen&amp;id='.$weiter1.'"><img src="http://www.tutorials.de/forum/images/Icons/weiter.png" alt="weiter" border="0" /></a>'; }
			else
				{	$weiter2 = '<img src="http://www.tutorials.de/forum/images/Icons/halt.png" alt="weiter" border="0" />'; }

?>
So sieht das aktuelle Skript aus.

Hier habe ich mal zwei screenshots gemacht, um sich das mal etwas anzuschauen.

Beim 2. Anhang handelt es sich um Bild 2. Das 3. Bild hat eine andere kat_id. Dementsprechend kann es vom aufbau her, garnicht mit in dieser Liste auftauchen. Das 4. Bild, welches ausgegeben werden sollte, wird halt nicht ausgegeben, da laut ID-Folge Bild 3 dafür kommen sollte. Kann es aber, wie eben beschrieben, nicht.
 

Anhänge

  • beispiel.jpg
    beispiel.jpg
    30,9 KB · Aufrufe: 12
  • beispiel2.jpg
    beispiel2.jpg
    29,1 KB · Aufrufe: 10
Zurück