Limit + Rand macht Wiederholungen!!

sandroP

Erfahrenes Mitglied
Hallo,

ich sortiere die Ergebnisse der SQL Abfrage nach RAND und gebe sie
dem Nutzer mit Limit dann Stückweise aus.
- Es kommt nun aber vor, dass ein Erbenis welches auf Seite 1 bereits ausgegeben
worden ist, auf Seite 2 nochmals ausgegeben wird.

Hier mal ein Paar Zeilen Code:
PHP:
// Seiten aufteilung
$proseite = 10 ; // Wieviele Einträge pro seite!
$seiten_s = "SELECT * FROM gastgeber WHERE typ = 'ferienwohnung'";
$seiten_r = mysql_query($seiten_s) ;
$number = mysql_num_rows($seiten_r);
$seiten = floor($number/$proseite);
$start = $page * $proseite;
$seiten_s .="ORDER BY $order1 LIMIT $start,$proseite";
// damit werden Seite:0 1 2 3 ausgegeben!



// Tabelleninhalt

while ($zeile = mysql_fetch_assoc($res))
{
    echo "<tr>";
// Überschrift
    echo "<tr bgcolor='#F1D.........
 
Hallo,

der Quellcode ist sehr dürftig. Aber ich denke $page muss bei "0" anfangen.Oder aber du machst es so.

PHP:
LIMIT ".(($page-1) * $proseite).",".$proseite."

Gruss
 
Hi,

das Problem ist hier eher, dass bei Aufruf von z.B. Seite 2 ja eine neue Abfrage gestartet und durch RAND() natürlich ganz anders, eben zufällig, sortiert wird. Das ganze Konstrukt ergibt so irgendwie keinen Sinn...

LG
 
Das siehst du völlig richtig, damit hebelst du "order by" komplett aus. Erkläre mal was genau hast du vor(ich meine sandroP ;))? Eine Möglichkeit wäre erstmal alle Datensätze zu holen und in ein Array packen und danach mit Ausschlußparametern rand auszuführen.
 
Zuletzt bearbeitet von einem Moderator:
Das kann der Besucher/Nutzer ja auswählen.
Ich dachte eben, dass eine Zufallssortierung eben ganz nett hätte sein können.

- Warum geht das ganze bei ORDER nach zum preis ohne Fehler



----- Kann ich nicht erst die Daten Abfragen
-------- Dann sortieren (nach was auch immer)
------- Auf die Seiten aufteilen
und dann ausgeben?
 
Hi,

sandroP hat gesagt.:
- Warum geht das ganze bei ORDER nach zum preis ohne Fehler
- und bei Rand() eben nicht?

Wenn Du nach Preis sortierst, ist die Reihenfolge immer gleich, egal wie oft Du das tust. Du hast an sagen wir mal 53. Stelle immer den gleichen Datensatz. Wenn Du aber zufällig sortierst, ist die Reihenfolge logischerweise bei jedem Aufruf anders. Dann steht halt plötzlich an Position 13 ein Datensatz, den Du vorher noch auf 5 hattest.

Was verstehst Du daran denn nicht? :confused:

LG
 
Ja, das ist schon klar, nun zumindest....;)
Ich hab da wohl zu kompleziert gedacht.

Um nun aber einfach zu denken, müsste es doch gehen, wenn ich:

1. Daten auswählen
2. Sortieren
3. Auf Seiten verteilen
4. Ausgeben

Dann müsste das doch gehen?
 
Hi,

dann hast Du aber das Problem, das beim Weiterblättern der Server nichts mehr von den zuvor ausgewählten Daten weiß. Da müsstest Du dann mit Sessions arbeiten oder das Weiterblättern in Javascript realisieren.

LG
 
Zurück