Was mache ich falsch?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

Beitrag von Gumfuzi »

Ich habe es nun so:

Code: Alles auswählen

$sql='SELECT S.player, COUNT(*) AS HighScoreCount, SUM(S.score) AS HighScoreSum FROM phpbb_ina_games G INNER JOIN   phpbb_ina_scores S ON G.game_name=S.game_name GROUP BY S.player ORDER BY HighScoreCount DESC';
if(!$result = $db->sql_query($sql)) {
	message_die(GENERAL_ERROR, 'Fehler beim Auslesen der HiScore-Informationen', '', __LINE__, __FILE__, $sql);

while($row = $db->sql_fetchrow($result))
{
	$template->assign_vars('hi', array(
		'PLAYER' => $row['S.player'],
		'ANZAHL' => $row['HighScoreCount'],
		'SUMME' => $row['HighScoreSum']
	));
}
funzt aber nicht.

Warum bleibt das Bild weiss und zeigt nicht die Fehlermeldung, was falsch ist?
Du kannst niemals alle mit deinem Tun begeistern. Selbst wenn du über's Wasser laufen kannst, kommt einer daher und fragt, ob du zu blöd zum Schwimmen bist.
https://www.deskmodder.de
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

gib mal den SQL Code direkt im PMA ein, vielleicht gibts da ein Problem.....

Fehler einschränken :wink:
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

Beitrag von Gumfuzi »

dumme Frage: was ist ein PMA?
Du kannst niemals alle mit deinem Tun begeistern. Selbst wenn du über's Wasser laufen kannst, kommt einer daher und fragt, ob du zu blöd zum Schwimmen bist.
https://www.deskmodder.de
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

KB:phpMyAdmin - KB:pma_faq
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Gumfuzi hat geschrieben:dumme Frage: was ist ein PMA?
So wie es Leuchte schon gesagt hat....

Natürlich könntest du das auch über die MySQL Konsole tätigen aber nunja........
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

Beitrag von Gumfuzi »

Danke für die Aufklärung :oops: (die Abkürzung kannte ich noch nicht :schäm: )

Ich habe es nun im PMA ausprobiert und dort funzt es, allerdings so:
Name - funzt ;)
HScoreCount - hier werden die Anzahl der Scores (Datensätze) in denen ein User vorkommt zusammengezählt. Allerdings auch, wenn ein User nur zB. die zweitbesten Punkte hatte, was ja falsch ist, denn es sollen ja nur die Scores gezählt werden, bei denen ein User die meisten Punkte (in dem jeweiligen Spiel) hat, nicht alle.
HiScoreSum - funzt, brauche ich aber nicht ;)

und:
warum funzt die Abfrage nicht in der PHP-Datei? *grübel*
Du kannst niemals alle mit deinem Tun begeistern. Selbst wenn du über's Wasser laufen kannst, kommt einer daher und fragt, ob du zu blöd zum Schwimmen bist.
https://www.deskmodder.de
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

Beitrag von Gumfuzi »

ich komme nicht drauf... :oops:

Code: Alles auswählen

SELECT S.player, MAX(S.score) AS HighScoreCount, SUM(S.score) AS HighScoreSum FROM phpbb_ina_games G INNER JOIN phpbb_ina_scores S ON  G.game_name=S.game_name GROUP BY S.player ORDER BY HighScoreCount DESC
Damit erhalte ich pro Spieler den Höchsten HIScore und die Summer der HiScores - also auch nicht das, was ich brauche.

Man müsste den MAX-Befehl erweitern können, sodaß von jedem Spiel der höchste HiScore (mit MAX?) rausgesucht wird und dann die Anzahl pro User gezählt wird - oder so irgendwie...

Oder man reduziert die Liste zuerst auf die höchsten HiScores pro Spiel (inkl. User), schreibt die dann in eine extra Tabelle und liest die Anzahl dann mit folgenden Befehl aus:

Code: Alles auswählen

SELECT S.player, COUNT(*) AS HighScoreCount, SUM(S.score) AS HighScoreSum FROM phpbb_ina_games G INNER JOIN phpbb_ina_scores S ON  G.game_name=S.game_name GROUP BY S.player ORDER BY HighScoreCount DESC
... oder kann man die Select-Abfrage auch verschachteln?

P.S.: PMA zum Probieren von SQL-Anweisungen ist super, daran hatte ich vorher nie gedacht - ist viel schneller, als via PHP-Datei zu testen

=====

*edit*

folgender Code (z.T. vom Activity Mod) zeigt mir alle HiScores (die Besten Spieler pro Spiel):

Code: Alles auswählen

	$sql = "SELECT * FROM " . iNA_GAMES . "
		ORDER BY game_name";
	if( !$result = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, $lang['no_game_data'], "", __LINE__, __FILE__, $sql);
	}
	$game_count = $db->sql_numrows($result);
	$game_rows = $db->sql_fetchrowset($result);

	for($i = 0; $i < $game_count; $i++)
	{
		$game_id = $game_rows[$i]['game_id'];
		$game_name = $game_rows[$i]['game_name'];

		if ($game_rows[$i]['reverse_list'])
		{
			$list_type = 'ASC';
		}
		else
		{
			$list_type = 'DESC';
		}

		$sql = "SELECT * FROM " . iNA_SCORES . " 
         WHERE game_name = '" . $game_name . "' 
         ORDER BY score $list_type, date ASC";
		 if(!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, $lang['no_score_data'], "", __LINE__, __FILE__, $sql);
		}
		$score_info = $db->sql_fetchrow($result);
		$best_score = $score_info['score'];
		$best_player = $score_info['player'];

		$template->assign_block_vars("game", array(
			"BEST_SCORE" => $best_score,
			"BEST_PLAYER" => $best_player,
			"NAME" => $game_name)
	);
	}
Wie soll ich die nun zählen lassen, sodaß ich für jeden User die Anzahl der HiScores erhalte? soll ich dazu Arrays verwenden, die kann man doch zählen, oder?
Aber wie teile ich es per PHP mit, welche Spielernamen gezählt werden sollen (mom sind ja noch die Namen mehrmals vertreten)...
Zuletzt geändert von Gumfuzi am 15.11.2004 23:24, insgesamt 1-mal geändert.
Du kannst niemals alle mit deinem Tun begeistern. Selbst wenn du über's Wasser laufen kannst, kommt einer daher und fragt, ob du zu blöd zum Schwimmen bist.
https://www.deskmodder.de
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Ab Mysql 4.0.0 gibt es UNION damit sind verschachtelte SELECTs möglich

-> http://dev.mysql.com/doc/mysql/de/UNION.html#IDX1346
Benutzeravatar
Gumfuzi
Ehemaliges Teammitglied
Beiträge: 2454
Registriert: 26.03.2004 22:25
Wohnort: Linz, AT
Kontaktdaten:

Beitrag von Gumfuzi »

Ich habe leider MySQL 3.23.58 - schade.

Was sagst zu zum "edit"-Teil meines letzten Postings? komme ich so weiter?
Du kannst niemals alle mit deinem Tun begeistern. Selbst wenn du über's Wasser laufen kannst, kommt einer daher und fragt, ob du zu blöd zum Schwimmen bist.
https://www.deskmodder.de
Antworten

Zurück zu „Coding & Technik“