Seite 1 von 1

brauche hilfe bei einer SQL abfrage

Verfasst: Fr 29.Jul, 2005 01:32
von dagobert
ich brauch nochmal rat....ich komm wieder nich weiter.

ich habe eine tabellenstruktur

entry_id
user_id
user_points

wie stell ich das nun am geschickstesten an eine abfrage ähnlich dieser ins phpbb einzubauen. ich bekomm das einfach nicht hin.

Code: Alles auswählen

SELECT SUM(user_points) FROM phpbb_table WHERE user_id = $user_id
:roll: :!:

Verfasst: Fr 29.Jul, 2005 01:50
von oxpus
So?

Code: Alles auswählen

$sql = "SELECT sum(user_points) as total_points FROM phpbb_table
	WHERE user_id = $user_id";
if (!$result = $db->sql_query($sql));
{
	message_die(GENERAL_ERROR, 'Could not fetch user points', '', __LINE__, __FILE__, $sql);
}

$row = $db->sql_fetchrow($result);
$user_points = $row['total_points'];
$db->sql_freeresult($result);

Verfasst: Fr 29.Jul, 2005 01:53
von dagobert
och man... das AS total_points hatt ich vergessen....nun klappts ! super, danke !

wofür steht das

Code: Alles auswählen

$db->sql_freeresult($result);
das leert das result oder ? muss / sollte man das angeben oder isses nich so wichtig?

Verfasst: Fr 29.Jul, 2005 04:13
von oxpus
Das schliesst u.a. auch den dann nicht mehr genutzten Kanal zur Datenbank, also ja: Benutzen. Aber auch nur, wenn $result gefüllt ist. Also bei einem SELECT z.B.

Verfasst: Fr 29.Jul, 2005 04:42
von dagobert
nach jedem datenbank befehl oder reicht einmal am ende des files ?
(ich muss wohl einiges noch ausbessern ;) :D )

Verfasst: Fr 29.Jul, 2005 05:01
von oxpus
Nach jedem beendeten SELECT.

Verfasst: Fr 29.Jul, 2005 10:38
von dagobert
alles klar....vielen dank nochmal !

Verfasst: So 31.Jul, 2005 17:11
von dagobert
so, kleine levelsteigerung ;)

wie müsste die sql abfrage aussehen, wenn ich die nun nach total_points sortiert haben will und nach user_id zusammengefasst ? (es sind ja pro user mehrere einträge in der tabelle)

irgendwie so ?

Code: Alles auswählen

SELECT sum(user_points) AS total_points, user_id FROM phpbb_table
GROUP BY user_id
ORDER BY total_points ASC

Verfasst: So 31.Jul, 2005 21:49
von oxpus
so, kleine levelsteigerung
*hüstel*
Mehr nicht?

Ja so ist das dann auch richtig.

Verfasst: Mo 01.Aug, 2005 05:52
von dagobert
Mehr nicht?
forder es nicht heraus...
spätestens wenn du zur analyse eines problems durch meinen code steigen musst, haste den endgegner erreicht ;) :D

is das eigentlich normal, dass die erste version eines mods teilweise aussieht wie ne frisch gekochte buchstabensuppe ? :heiss:



die abfrage hat aber wunderbar geklappt. war doch nich so kompliziert wie ich dachte.
aber ich kann jetzt schon absehen, dass ich bald meine nächste frage dazu habe. da will ich aber vorher noch gucken, ob ich mir die lösung herleiten kann.

Verfasst: Mo 01.Aug, 2005 13:41
von oxpus
forder es nicht heraus...
spätestens wenn du zur analyse eines problems durch meinen code steigen musst, haste den endgegner erreicht
Nur zu :D

Verfasst: Sa 27.Aug, 2005 14:53
von dagobert
was sagt mir dieser fehler ?

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /www/htdocs/w0058caf/forum/db/mysql4.php on line 318

kommt nur auf einem testboard, wo ich nun ne alpha meines mods installieren wollte. in meinem forum rennt der gleiche mod mit den gleichen dateien und gleicher phpbb version ohne probs.

Verfasst: Sa 27.Aug, 2005 17:03
von AmigaLink
Kann es sein das du bei deinem anderem Board die mysql.php anstelle der mysql4.php verwendest?
Ich hatte da auch schonmal komplett unterschiedliche ergebnisse, weil die mysql4.php nicht abwärtskompatible ist und mein Code eine veraltete Programmierweise beinhaltet hat. :(

Poste mal den code der diesen Fehler verursacht (nicht den aus der mysql4.php, sondern deinen).

Verfasst: Sa 27.Aug, 2005 18:42
von oxpus
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /www/htdocs/w0058caf/forum/db/mysql4.php on line 318
Das bedeutet, daß in einem Script die Zeile $db->sql_freeresult($result); vorhanden ist, ohne daß $result einen Wert hat. Das ist auch nur bei einem voran gegangenen SELECT der Fall. Alle anderen Befehle erzeugen keine Connect-ID, bzw. benötigen keine, da ja keine Daten von der Datenbank gelesen werden sollen.
Suche also mal nach dieser Zeile in dem Script, was diese Fehlermeldung erzeugt nach dieser Zeile ohne vorheriges SELECT...

Verfasst: Sa 27.Aug, 2005 19:01
von dagobert
hmm....nun hab ich die dinger rausgenommen und es geht (aber die standen jedesmal nach ner select-geschichte)

danke!


EDIT: manchmal hab ich auch wirklich ein brett vorm kopf. ich habs nun raus: ich hatte in 2 von 3 dateien je 1 mal die falsche var angegeben: $db->sql_freeresult($sql);

nu rennts....

Verfasst: Sa 27.Aug, 2005 19:12
von oxpus
Oder so ;)

Tipp, wenn etwas partout nicht will: Geh raus, lauf eine Runde oder lenk dich anderweitig ab, dann gehts wieder.
Hilft mir auch immer wieder enorm weiter !

Verfasst: Sa 27.Aug, 2005 19:55
von AmigaLink
^^ Kann ich nur bestätigen!!!
Mir ist sogar schonmal bei einem Bierchen, um die Ecke, die Lösung eingefallen. :D

Verfasst: Sa 27.Aug, 2005 20:30
von dagobert
hehe......

aber mein problem war, dass ich nichmal wusste wo ich suchen muss, weil ich die fehlermeldung nicht verstand. (vor allem weils komischerweise im anderen board keine zicken macht mit der defekten datei)

ohne euch hätt ich da bestimmt ne woche gesucht..... ;)

Verfasst: So 28.Aug, 2005 11:06
von oxpus
Dan bin ich ja froh, Dir die Suchzeit verkürzt zu haben :cool: