URL: https://www.overclockers.at/coding-stuff/mysql_speed_68187/page_3 - zur Vollversion wechseln!
where id > $x order by ... limit 50;
nope geht eben nicht ...
sag ma ich hab auf der page 20 Filme dann soll er nur die 20 sortieren, die der user gerade sieht ... wenn ichs wie mit "where id > $x order by ... limit 50;" mach, dann sortiert er mir wieder alle ab dem ersten Film der aktuellen Seite bis zum Schluss.
was macht das überhaupt für einen sinn, nur einen teil der filme zu sortieren, entweder man zeigt doch nach dem schlüssel (zb id) an, oder nach einem suchkriterium. so ein "lokales" sortieren auf seiten zum blättern (ich nehme an, es soll sowas werden) ist total unüblich.
wie auch immer, als workaround kannst du dir ja in einem ersten query nur die höchste id (nennen wir sie $ende) mit id > $x und limit besorgen und dann mit id between $x and $ende order by ... anzeigen lassen.
// edit: womöglich lassen sich auch user-variablen zum abzählen verwenden, ganz ähnlich wie in diesem beispiel: http://www.faqts.com/knowledge_base...id/1238/fid/104
Jop. Genauso was solls werdenZitat von atroxso ein "lokales" sortieren auf seiten zum blättern (ich nehme an, es soll sowas werden) ist total unüblich.
Zitatwie auch immer, als workaround kannst du dir ja in einem ersten query nur die höchste id (nennen wir sie $ende) mit id > $x und limit besorgen und dann mit id between $x and $ende order by ... anzeigen lassen. [/B]
tortzdem sehe ich nicht die sinnhaftigkeit.. wenn ein user nach namen sortiert, und er hat als obersten eintrag auf der seite "Boogie Nights" und als letzten Eintrag "Star Trek", dann wird er wohl erwarten daß beim vorblättern filme mit dem namen < "Boogie Nights" zu finden sind (also A.. und B...) und analog beim weiterblättern filme > "start Trek" also mit anfangsbuchstaben "s.. t.. u.." usw zu finden sind. oder nicht ?
Jop ... genauso is es auch
nur kann soll er die Filme die er gerade sieht auch nach anderen Kriterien sortieren können ... wenn er also auf der Seite 1-50 sieht, dann kann er dort auch nach Genre oder Sprache sortieren ... wenn er auf weiter klickt, dann sieht er die Filme 51-100 (zu Beginn nach dem Titel sortiert) ...
damn ... die funktion MAX() von mysql ignoriert Limit
na, mit max() wirds nicht hinhauen, weil limit "hinterher" angewandt wird. versuchs mit den user-variablen oder ganz unnschön mit "händisch" durchzählen
naja ... es gibt bei php auch eine funktion max() die liefert angeblich das größte element des arrays ... vielleicht mach ich was falsch, aber ich bekomm immer 1 als ergebnis
So jetzt hab ichs "per hand" durchgezählt ...
wahahhaahahaha ...
das hilft auch nur bedingt
da er die filme jetzt auf den einzelnen Seiten nicht mehr nach titel sondern nach id sortiert
*argl*
heißt soviel wie ... auslesen des titels vom ersten und letzten Film auf der Seite und dann BETWEEN den beiden auslesen ... argl ...
Wie zum Geier les ich nur den 50 Datensatz aus, sortiert nach Fimtitel?
Ich glaub ich bin zu blöd für komplexere Mysqlgschichtln
Kanns ja ned sein, dass man sowas ned auf einmal aulesen kann
So ... drauf geschissen
Die Leute müssen jetzt bevor die Filme ausgegeben werden, auswählen wonach sortiert wird und fertig =)
ich versteh dein problem net, in dem moment wo ich eine seite anzeige habe ich ja schon die id's - ich kann ja nicht was anzeigen wenn ich nicht weiss was ich anzeige...Zitat von MaehmannSo ... drauf geschissen
Die Leute müssen jetzt bevor die Filme ausgegeben werden, auswählen wonach sortiert wird und fertig =)
Da hast du wohl recht
Es geht auch um die Sortierung vor der Ausgabe ... Ich hab leider keine brauchbare Funktion gefunden mit der ich das Array im nachhinein sortieren könnte. Und das sortieren mit MYSQL ist eben etwas kompliziert. Siehe oben
Ich muss ehrlich sagen ich versteh dein Problem nicht ??? du machst einfach in der tabelle ein paar links mit file.php?sort=title&order=1 ... file.php?sort=laenge&order=2....... etc
dann machst einfach
[PHP]
IF ($_GET[sort] == "laenge") {
$sort = "laenge";
}elseif($_GET[sort] == "title") {
$sort = "title";
}elseif......
}else{
$sort = "title";
};
IF ($_GET[order] == "1") {
$order = "ASC";
}elseif{$_GET[order] == "2") {
$order = "DESC";
}else{
$order = "ASC";
};
SELECT blbalbalab FROM $table WHERE blabalbala ORDER BY $sort $order";
und die geschichte hat sich ! :P
jaja ...
das geht aber nur, wenn alles auf einer seite angezeigt wird.
wenn ich auf einer seite nur 50 einträge anzeigen lasse und dann nur diese 50 Einträge sortieren möchte, dann geht das mit MYSQL ned wirklich einfach
eine möglichkeit wäre, dass array mit php zu sortieren ... dazu hab ich aber keine brauchbare Funktion gefunden
damit kannst du multi-dimensionale arrays sortieren (siehe beispiel 2)
http://www.php.net/manual/en/function.usort.php
hmmm ... thx für den Link ... das hab ich mir eh schon mal kurz angeschaut.
Hab mittlerweile aber auf dieses Feature verzichtet
Prog mal den Rest ... am Schluss werd ich mir dieses Feature nochmal durch den Kopf gehen lassen
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025