Archiv verlassen und diese Seite im Standarddesign anzeigen : Erst spezifizieren, dann sortieren
Hallo,
Also, ich habe eine Spieleseite, die noch mit Textdateien arbeitet. Wird gerade auf MySQL umgestellt, aber hab da ein Problem.
Tabelle: ID|Name|Gespielt|Genre|......
Ich möchte nun alle Spiele, dessen Genre z.B. Fighting ist auslesen und Sort by ASC anzeigen lassen, damit auch die wenig gespielten Spiele eine Chance bekommen. ;-) Mit Textdateien habe ich das mit array_multisort(); geregelt.
$genre="Fighting";
$db_link=@mysql_connect($dbserver,$dbuser,$dbpass) ;
$db_sel=@mysql_select_db($dbname);
$sql="SELECT * FROM KMV ORDER BY Genre DESC";
$db_erg=mysql_query($sql);
while($spalte=mysql_fetch_array($db_erg)){
if($spalte['Genre']==$genre){
$ausgabe=$ausgabe.$spalte['Name']."|".$spalte['Gespielt']."|".$spalte['Genre']."|\n";}}
Hiermit könnte ich das wieder mit array_multisort() regeln, aber das scheint mir doch ein wenig umständlich. Da muss es doch eine bessere Methode auf MySql Basis geben.
Vielen Dank
Mit freundlichen Grüßen
Der Gulm
Filter doch das Genre direkt bei der Abfrage raus:
"SELECT * FROM KVM WHERE Genre=".$genre." ORDER BY Genre DESC"Die Notation von php kenn ich nicht genau, wegen der Verknüpfung der Strings. Aber das weisst du ja sicher besser als ich.
Gruss
baluff
Mikes-PCHilfe
18.11.2008, 16:48
Jop, baluffs Auszug passt.
Grüße Mike
Filter doch das Genre direkt bei der Abfrage raus:
Genau danach habe ich gesucht. Einfach und effektiv. Echt super!
Vielen Dank baluff ;-)
Verdammt, zu früh gefreut ;-)
mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Muss ich da was anderes als mysql_fetch_array(); benutzen?
Mit freundlichen Grüßen
Der Gulm
Mikes-PCHilfe
19.11.2008, 13:33
Mach mal das draus:
$sql="SELECT * FROM KMV WHERE Genre=".$genre." ORDER BY Genre DESC";
$db_erg=mysql_query($sql) or die(mysql_error());
while($spalte=mysql_fetch_array($db_erg, MYSQL_ASSOC)){
Vielen Dank!
Wird nach der Arbeit sofort geprüft ;)
Hab jetzt mal getestet und mir wird folgende Fehlermeldung: ausgegeben...
--> Unknown column 'Shooting' in 'where clause'
Zur Erklärung: $spalte['Genre'] hat verschiedene Inhalte: Fighting, Shooting, Geschick, Multiplayer, Other....
Ich möchte jetzt alle Spiele vom Genre "Fighting", sortiert (ASC) nach der $spalte['Gespielt'] anzeigen lassen.
Mit freundlichen Grüßen
Der Gulm
Mikes-PCHilfe
20.11.2008, 08:41
Die Meldung sagt, dass du nach einer Spalte Shooting suchen willst, die gibts aber nicht.
Mach das draus:
$sql="SELECT * FROM KMV WHERE Genre=\"".mysql_real_escape_string($genre)."\" ORDER BY Genre DESC";
$db_erg=mysql_query($sql) or die(mysql_error());
while($spalte=mysql_fetch_array($db_erg, MYSQL_ASSOC)){
Nun hat es geklappt :D
Vielen dank dafür!
Mit freundlichen Grüßen
Der Gulm
Mikes-PCHilfe
21.11.2008, 11:26
Prima :)
Grüße Mike
Hallo nochmal, neues Problem, gleiches Thema :D
Möchte, das nach "AnzBew" (Anzahl Bewertungen) sortiert wird und dann nochmal nach "Bewertung". Giebt es dafür auch etwas? Denn so wie ich es mir dachte geht es leider nicht und bevor ich es wieder umständlich schreibe, frag ich lieber nach :D
$sql="SELECT * FROM KMV ORDER BY AnzBew DESC ORDER BY Bewertung DESC LIMIT ".$start.", 25";
Vielen Dank.
Mit freundlichen Grüßen
Der Gulm
Mikes-PCHilfe
24.11.2008, 08:21
$sql="SELECT * FROM KMV ORDER BY AnzBew,Bewertung DESC LIMIT ".$start.", 25";
Hallo, vielen dank erstmal für die Antwort, aber die Prioritäten sind bei der Variante gleich stark verteilt, ich benörtige aber die Priorität auf Bewertung.
Geht das auch ganz einfach per ""SELECT * FROM" ???
Beispiel:
Das Script ließt so aus:
Bewertung 10 - AnzBew 15
Bewertung 8 - AnzBew 14
Bewertung 10 - AnzBew 13
Ich brauche aber es aber so:
Bewertung 10 - AnzBew 15
Bewertung 10 - AnzBew 13
Bewertung 8 - AnzBew 14
Vielen Dank
Mit freundlichen Grüßen
Der Gulm
Mikes-PCHilfe
26.11.2008, 08:23
Dann drehe AnzBew,Bewertung einfach um, also Bewertung,AnzBew
Grüße Mike
Auf die Idee bin ich natürlich auch schon gekommen ;-) (bevor ich hier gepostet habe), aber der Effekt war leider nicht der Gewünschte.
Sieht dann so aus:
Bewertung 1 - AnzBew 12
Bewertung 1 - AnzBew 10
Bewertung 2 - AnzBew 12
Bewertung 2 - AnzBew 11
usw.
Soll aber mit Bewertung 10 anfangen.
MfG
Der Gulm
Mikes-PCHilfe
26.11.2008, 16:21
$sql="SELECT * FROM KMV ORDER BY Bewertung DESC,AnzBew DESC LIMIT ".$start.", 25";
Das Skript sortiert absteigend, es kann niemals mit 1 beginnen...
grüße Mike
Da stimme ich dir zu! DESC ist absteigend ;-) Genau deswegen frage ich ja nach, weil das kommt mir doch ein bisschen Komisch vor ;-)
MfG
Der Gulm
_________________________________________
Hab den Fehlér entdeckt hatte vergessen Bewertung Desc anzeigen zu lassen!
Nochmal vielen dank
MfG Der Gulm
Mikes-PCHilfe
27.11.2008, 08:30
Dann hast du scheinbar meinen SQL String nicht kopiert ;)
Prima, freut mich
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.