Felix Riesterer: Vor und Zurück Buttons erstellen (varX+1)

Beitrag lesen

Lieber Arne,

Du benötigst eine Gesamtliste aller IDs, sowie die aktuelle. Dann kannst Du anhand der Gesamtliste den jeweiligen Vorgänger und Nachfolger bestimmen.

ich hab jetz schon ewig gesucht, aber nichts gefunden

Der Suchbegriff wäre Paginierung oder pagination gewesen.

<a href="seminar-detail.php?var=' . ($row['ID']) . '";</a>

OMG. Du darfst hier zwar davon ausgehen, dass $row['id'] einen reinen Ziffern-String beinhaltet, trotzdem sind solche Konstrukte ein Programmierfehler, weil Du den Kontextwechsel nicht (sichtbar) berücksichtigst. Im Moment ist der ID-Wert eine Zahl, aber was, wenn das einmal geändert wird? Ich habe mir angewöhnt, meine Programmlogik so zu schreiben, dass mich solche Details nicht belasten können, da sie kontext-gerecht kodiert werden. Du darfst freilich tun, was Dir beliebt, aber was tut Dein Script bei einem Aufruf wie diesem hier?

/seminar-detail.php?var=%3BDROP%20TABLE%20seminar

Nun möchte ich auf der Detailseite unten jeweils ein vor und zurück Button einfügen

Du meinst Links, die wie Buttons gestyled sind. Für echte Buttons bräuchtest Du ein passendes Formular...

Also muss die Var nur eins erhöht oder verringert werden. Aber wie mach ich das am besten?

Wenn es nur das wäre, könntest Du einen geklammerten Ausdruck verwenden:

$str = '?' . ( $row['id'] + 1 );

Aber das genügt hier nicht. Es prüft nicht, ob es dieses Seminar überhaupt gibt. Daher mein Hinweis auf die Gesamtliste aller verfügbaren Seminare. Die steht in einem Array, welche so oder so ähnlich aus der Datenbank kommt:

$seminars = array(
  '123' => array(
    'id' => 123,
    'title' => 'Filmkritik: Das Leben des Brian',
    'time' => ...
   ),
  '125' => array(...)
);

$all = array_keys($seminars);
$next = array('id' => 0);
$prev = array('id' => 0);

$current = array_search($row['id'], $all);

if ($current >= 0
  && array_key_exists($current + 1)
) {
  $next = $seminars[$all[$current + 1]];
}

if ($current > 0
  && array_key_exists($current - 1)
) {
  $prev = $seminars[$all[$current - 1]];
}

// vorheriges Seminar verlinken?
if ($prev['id'] > 0) {
  // HTML für Link zum vorherigen Seminar
}

// nächstes Seminar verlinken?
if ($next['id'] > 0) {
  // HTML für Link zum nächsten Seminar
}

Der Code ist weder getestet noch vollständig. Aber Du solltest erkennen können, wie er bei einer nicht fortlaufenden Nummerierung der Seminare sich nicht zu falschen Links hinreißen lässt. Wie man den Kontextwechsel beim Erzeugen der Links berücksichtigt, lasse ich Dich alleine herausfinden. Link dazu habe ich oben angegeben.

Liebe Grüße

Felix Riesterer