Nächst-Mögliches-Abfrage und Update Increment

Marco Gutenhof

Grünschnabel
Huhu,

ich habe ein kleines Problem mit einer Abfrage für mein Forum und weiß leider nicht mehr so recht weiter.

Folgende Tabelle:

id    forum_id     topic
1     1               Blub
2     2               Muh
3     1               Klo

Ursprünglich war mein Plan einen Next -bzw. Previous Link, der auf den nächsten Thread zeigt, einzubauen, wozu ich die nächste id benötige, welche aber die gleiche forum_id besitzt.

Also ungefähr so (Pseudocode):
$query = "SELECT id from threads WHERE forum_id=$fid AND id=($id + nächst-mögliche-id)";
$next_id = $result($query);

Wenn ich mich also im Thread mit der id=1 und der forum_id=1 befinde, soll per query die nächste mögliche id gefunden werden.
Ausgehend von obigen Beispiel soll dann die zweite Zeile übersprungen, da die forum_id=2 ist, und die id der Zeile 3 zurückgeben werden.

Als Ergebnis soll dann herauskommen, dass man im Thread 1 einen Link auf den nächsten Thread mit der thread_id=3 hat.
<a href="forum&thread_id=$next_id">Next</a>

Das ganze brauche ich dann entsprechend noch für den umgekehrten Fall bei Previous.

Leider ist das nicht ganz so leicht zu erklären, ich hoffe, dass mich trotzdem jemand verstanden hat und vor allem auch in der Lage ist mir zu helfen...



Dann noch ein zweites (leichteres) Problem:
Ich habe vor einen so-oft-hat-der-Benutzer-bereits-was-gepostet-Counter einzubauen:

$query = "UPDATE users SET UserReplies='UserReplies++' WHERE UserId=$user_id";

Aus Faulheit wollte ich mir jetzt ersparen zuerst die UserReplies aus der Datenbank zu holen, dann um eins zu erhöhen und danach wieder in die Datenbank zu schreiben. Ist es stattdessen möglich die Zelle gleich per UPDATE zu inkrementieren, wie es im obigen Beispiel bereits angedeutet wurde?
 
Hochzählen:

$query = "UPDATE users SET UserReplies='UserReplies+1' WHERE UserId=$user_id";


Aktuellen Eintrag und nachfolgenden anzeigen:
SELECT id from threads WHERE forum_id=$fid AND id >= '$id' order by id limit 2";

Vorherigen Eintrag anzeigen:
SELECT id from threads WHERE forum_id=$fid AND id < '$id' order by id desc limit 1";
 
Zurück