Datenbank Abfrage

Liebe/-r Experte/-in,
ich brauche mal Hilfe bei einem CMS mit Datenbank.

Es sollen bei Listeneinträgen (z.B. 100 Einträge, alle sind in der Datenbank), die Einträge per Zufallsprinzip angezeigt werden. Z.B. 10 Einträge auf einer Seite und dann die nächsten 10. Mit einer normalen Navigation…1,2,3…
Es geht darum, dass alle auch mal auf der ersten Seite sind, wie soll ich es sonst sortieren?

Jetzt kommt aber das Problem. Die erste Seite per rand() ist ja noch kein Problem aber wie gehts weiter wenn der user auf Seite 2 klickt. Ich hatte an eine temporäre Tabelle gedacht, da brauch ich aber eine session. Ich möchte keine Session einsetzen, da dies sehr google unfreundlich ist und auch am liebesten auch ohne javascript.

Hast du einen Tip oder Gedankenansatz für mich wie ich es realisieren kann.

Ich würde mich sehr freuen.

Lieben Gruß Moni

Ich denke das du leider nicht um die temporäre Tabelle rum kommst… du kannst zwar mit der Funktion rand() das Ergebnis in einer zufälligen Reihenfolge ausgeben lassen, aber dann bleibt trotzdem noch das Problem mit den Seiten… Wie wäre es denn wenn du eine Temporäre Tabelle erstellst die immer nur eine bestimmte Zeit lang gültig ist, also ohne Sessions.
Dann hast du einen gewissen Grad an Zufälligkeit da drin, aber brauchst keine Sessions. Kommt natürlich ganz darauf an in welchem Kontext du das verwendest.

Danke erstmal, der Gedanken ist ja garnicht schlecht. Ich könnte die Tabelle mit einem timestamp versehen und nach einer Stunde löschen. Ist natürlich noch die Frage, was da für eine server Leistung hintersteckt. Es wird ja jedesmal wenn einer auf die Startseite der Liste klickt ne neue Tabelle gebaut. Hab keine Ahnung, was meinst du?

Lieben Gruß Moni

Nene, eben nicht :smile: Du musst nur kurz nachschauen ob die Tabelle noch aktuell ist, und wenn sie älter ist als z.B. eine Stunde dann wird sie neu eingetragen, ich weiß zwar nicht wie hoch die Auslastung später sein wird, aber das sollte auf jeden Fall im Bereich des möglichen liegen :smile:

Hallo Moni,

das einfachste das mir auf die Schnelle einfällt, ist eine zweite Tabelle anzulegen, eine jeweils zufällige Reihenfolge speicherst, z.B. für jede IP-Adresse eine eigene.
Kommt ein Besucher mit neuer IP, baust du eine zufällige feste Reihenfolge für diese IP:

$res = mysql_query(„select id from liste order by rand()“);
for ($i=0; list($id) = mysql_fetch_row($res); $i++)
mysql_query(„insert into zufall values (’$ip’, $i, $id)“);

Dann noch IP und Timestamp des letzten Zugriffs auf die Liste in einer weiteren Tabelle speichern, um Einträge eines bestimmten Alters zu löschen; denkbar wäre auch eine tägliche Löschung der gesamten zufall-Tabelle.