PHP gleiche einträge suchen und der größe nach sortieren!

bOsE

Lieutenant
Registriert
Mai 2003
Beiträge
1.016
Hallo zusammen!

Ich komme bei einer, ich hoffe simplen, DB-Abfrage nicht weiter.

Ich habe in einer Tabelle die Felder "name" und "test".

Es gibt jetzt mehrere Einträge mit dem gleichen "name" aber der Wert in test kann "ja" oder "nein" sein.

Ich möchte jetzt aufgelistet haben, welche "name" die meisten "ja" hat.
Also die Top5 dann in einer Tabelle

1. "name1" mit 5 "ja"
2. "name2" mit 3 "ja"
usw.

Hoffe Ihr könnt mir helfen.
Vielen Dank schonmal
 
Hallo!

Die Abfrage kann so nicht klappen, weil "ja" nur im feld test vorkommt und nicht im Feld name.
Den name muss er sich ja selber anhand der gezählten" ja" suchen.

Sprich erst gucken welche name "ja" haben, dann gucken welcher name die meisten "ja" hat und mir die 5 name mit den meisten "ja" ausgeben
 
guck dir die Abfrage nochmal an, ich tippe mal du hast nur die in der mail-notification gesehen, da waren noch typos drin.
 
Also irgendwie komme ich nicht weiter :(
Das habe ich jetzt als code

113:$sql = "SELECT name, count (test) FROM ".$tabellenname." WHERE test = "ja" GROUP BY name;
114:$result_qk = mysql_query($sql)
115:while($row = mysql_fetch_assoc($result_qk)) {
116:echo "
117:<tr>
118:<td width=\"25%\" align=\"center\" class=\"nav\">".$row['name']." Uhr</td>
119:<td width=\"41%\" class=\"nav\">".$row['test']."</td>
120:</tr>"; }

Kriege foldende Fehlermeldung:
Parse error: syntax error, unexpected T_STRING in /www/htdocs/XXXXX/statistik_big.php on line 113
 
Das kann so ja auch nicht funktionieren, ich sag nur Anführungszeichen.

Code:
$sql = "SELECT name, count (test) FROM ".$tabellenname." WHERE test = "ja" GROUP BY name;
Ersetzen mit
Code:
$sql = "SELECT name, count (test) FROM $tabellenname WHERE test = \"ja\" GROUP BY name";

btw, in Zeile 114 fehlt das Semikolon und der Code sieht fürchterlich aus, wenn man mit Anführungszeichen arbeitet beendet man nicht und fügt mit .$variable[] sachen an sondern schreibt die mit rein.
 
Bin gerade php am lernen, deswegen sorry wegen unkonventionellem code ;)
mach es learning by doing. und da zählt für mich erstmal das ergebnis ;)
Aber folgendes

113:$sql = "SELECT name, count (test) FROM $tabellenname WHERE test = \"ja\" GROUP BY name";
114:$result_qk = mysql_query($sql);
115:while($row = mysql_fetch_assoc($result_qk)) {
116:echo "
117:<tr>
118:<td width=\"25%\" align=\"center\" class=\"nav\">".$row['name']." Uhr</td>
119:<td width=\"41%\" class=\"nav\">".$row['test']."</td>
120:</tr>"; }

mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /www/htdocs/XXXXX/statistik_big.php on line 115

</tr>"; }
 
Lass dir $sql mal ausgeben und probier dann mal in sql direkt ob da was sinnvolles rauskommt.
 
113:$sql = "SELECT name, count (test) FROM $tabellenname WHERE test = \"ja\" GROUP BY name";
114:$result_qk = mysql_query($sql);
116:echo "hallo ich bin $result_qk";

Kommt nix raus.
Also leer.
Aber die Kombi name/test gibt es difinitiv

Thomas -> ja
Thomas -> ja
Thomas -> nein
Ingo -> nein
 
Du sollst ja auch $sql ausgeben lassen und dann in die sql-Konsole pasten.
Du versuchst hier gerade ein Array mit echo ausgeben zu lassen, das klappt so nicht.
 
Sorry, aber ich lerne doch noch :(
wie kann/soll ich mir sql ausgeben lassen?
hate evtl. icq oder msn?dann ging es schneller ;)
 
Von der Frage bin ich jetzt ein wenig geschocked. Wie/womit hast du denn die Tabellen / Datenbank angelegt ? :confused_alt:
phpMyAdmin ?
Wenn ja, benutz das zum Testen, da kannst du die SQL-Befehle reinpasten.
Ansonsten gibts neben dem sql-server auch den client, sprich eine Text-Konsole mit der du dich zum Server verbindest.

Du solltest evtl. erstmal mit einem anfangen, sprich sql oder php statt beides zusammen, das bringt so ja nichts wenn du nach jedem Schritt nicht weis woran es scheitert.

Ich hab mir damals neben dem Berufsschuluntericht "MySQL 4 in 21 Tagen" von Markt und Technik reingezogen, das war halbwegs brauchbar. PHP hab ich mir mit so nem alten 10 Euro-Buch aus der Bahnhofsbücherei beigebracht, für den Anfang reichts.
 
113:$sql = "SELECT name, count( test ) AS tes FROM $tabellenname WHERE test = \"ja\" GROUP BY name ORDER BY tes DESC LIMIT 5"

114:$result_qk = mysql_query($sql);
115:while($row = mysql_fetch_assoc($result_qk)) {
116:echo "
117:<tr>
118:<td width=\"25%\" align=\"center\" class=\"nav\">".$row['name']." Uhr</td>
119:<td width=\"41%\" class=\"nav\">".$row['test']."</td>
120:</tr>"; }

Ja, hab jetzt mal alles über phpmyadmin getestet, und die richtige sql-abfrage hinbekommen.
Sprich bei phpmyadmin wird mir das genauso angezeigt wie ich möchte.
Nur auf der HP bekomme ich jetzt

Parse error: syntax error, unexpected T_VARIABLE in /www/htdocs/XXXXXX/statistik_big.php on line 114
 
Semikolon in 113 ;)
 
HMPF :(

Ja, jetzt hab ich es :D
Ich danke Dir vielmals für Deine Hilfe und Deine Geduld.
Werde wohl demnächst mal einen Buchladen besuchen ;)

Also vielen Dank nochmal und einen schönen Abend noch.

Gruß Marcus
 
Du solltest solche Fehler wie Anführungszeichen und Semikolon erstmal suchen...
denn
a) ist das immer ca. die Fehlermeldung die dann kommt wenn sowas fehlt
b) sind diese beiden sachen die wohl häufigsten fehlerursachen weil man die schnell mal vergisst

brauch man nur mal lesen was da für ne fehlermeldung steht ^^

unexpected t_variable blablabla
--> unerwartete variable in blablabla
--> er denkt du bist noch in der zeile davor (die du ja nicht abgeschlossen hast) und du bretterst wie aus dem nichts ne variable hin :) --> unerwartet

bei der fehlermeldung brauchste meißtens bloß in die zeile davor schauen und da siehste dann den fehler ^^

für php und sql lernen kann ich dir das quakenet-tutorial empfehlen...da wird sql und php zusammengeführt und man begreift du die ausführlichen erklärungen eig. alles ganz gut :)
 
Zurück
Oben