PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erst spezifizieren, dann sortieren



DerGulm
17.11.2008, 20:12
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

baluff
17.11.2008, 22:26
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

DerGulm
18.11.2008, 18:07
Filter doch das Genre direkt bei der Abfrage raus:

Genau danach habe ich gesucht. Einfach und effektiv. Echt super!

Vielen Dank baluff ;-)

DerGulm
18.11.2008, 18:40
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)){

DerGulm
19.11.2008, 15:17
Vielen Dank!

Wird nach der Arbeit sofort geprüft ;)

DerGulm
19.11.2008, 18:37
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)){

DerGulm
20.11.2008, 20:27
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

DerGulm
23.11.2008, 23:54
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";

DerGulm
25.11.2008, 22:00
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

DerGulm
26.11.2008, 12:41
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

DerGulm
26.11.2008, 17:19
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