Problem bei Mysql_fetch_Array mit Group by-Abfrage

Riegel

Mitglied
Hi, ich habe ein großes Problem. Am SQl kann es nicht liegen, hier auf meinem SQL-Server (kein MySQL) geht es ohne Probleme, doch als php-anfänger tu ich mir mit der Ausgabe ziemlich schwer......

Hier ersteinmal der code:

Code:
<?php

include("connector.inc.php");
$dbverbindung = mysql_connect ($host, $user, $password);


$dbanfrage="

Select pg.id_gruppe,
	pm.id_mannschaft,
	pm.name,
	ps2.id_spieler,
	ps2.vorname,
	ps2.nachname,
	sum(ps.volle),
	sum(ps.abraeumen),
	sum(ps.fehlwurf),
	sum(ps.volle+ps.abraeumen)
from ergebnisse ps,
	spieler ps2,
	mannschaft pm,
	gruppe pg
where ps.fs_id_spieler = ps2.id_spieler
	and ps2.fs_id_manschaft = pm.id_mannschaft
	and pm.fs_id_gruppe = pg.id_gruppe
group by pg.id_gruppe,
	pm.id_mannschaft,
	pm.name,
	ps2.id_spieler,
	ps2.vorname,
	ps2.nachname
order by pg.id_gruppe,
	sum(ps.volle+ps.abraeumen) desc,
	pm.id_mannschaft";
	
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);


 while ($ausgabe = mysql_fetch_array ($result))
 {
 
	 print "$ausgabe[pm.name]";
	 print "$ausgabe[ps2.vorname]";
	 print "$ausgabe[ps2.nachnahme]";
	 
 }

	
	
mysql_close ($dbverbindung);


?>

So bekomm ich immer:

Guggst du

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/web1/html/freizeitturnier/ergebniss.php on line 47



Hoffe ihr könnt mir sagen woran das liegt. Danke :-)
 
PHP:
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung) or die (mysql_error());
und Fehlermeldung zeigen. Dann kann Dir leichter geholfen werden.
 
Hier ist jetzt der Thread...

was für Code steht in Zeile 47?

gibt es in der Tabelle Spieler eine Spalte "nachnahme"? :-)

PHP:
 print "$ausgabe[ps2.nachnahme]";

jens
 
ohm.... da schaust 2 stunden das an und findest nix und dann so ein dummer schreibfehler...lol

na ich werde es gleich morgen mal testen.
geht das mit der while-schleife aber so?


ich hoffe ihr habt mir geholfen...lol
 
Füge bitte mal den Code von hpvw in dein Skript ein und poste die Fehlermeldung. So spontan würde ich sagen, das in deinem Query in der group by klausel die Spalte pg.id_gruppe fehlt, was aber Deiner Aussage widerspricht?
 
Riegel hat gesagt.:
geht das mit der while-schleife aber so?
Vermutlich nicht.
PHP:
 while ($ausgabe = mysql_fetch_array ($result)) {
    echo $ausgabe['name'];
    echo $ausgabe['vorname'];
    echo $ausgabe['nachname'];
}
etwas Formatierung könnte natürlich auch nicht schaden ;)

EDIT: Ich würde bei den berechneten Feldern mit Aliasnamen arbeiten. Das erleichtert den Zugriff auf das Ergebniszeilenarray:
Code:
...
sum(ps.volle) AS `SummeVolle`,
...

Gruß hpvw
 
Zuletzt bearbeitet:
hpvw:
Invalid use of group function



Der code sieht immo so aus:

Code:
<?php

include("connector.inc.php");
$dbverbindung = mysql_connect ($host, $user, $password);


$dbanfrage="

Select pg.id_gruppe as 'gruppenid',
	pm.id_mannschaft as 'mannschaftsid',
	pm.name as 'mannschaftsname',
	ps2.id_spieler as 'idspieler',
	ps2.vorname as 'vorname',
	ps2.nachname as 'nachname',
	sum(ps.volle) as 'summevolle',
	sum(ps.abraeumen) as 'summeabraeumen',
	sum(ps.fehlwurf) as 'summefehlwurf',
	sum(ps.volle+ps.abraeumen) as 'summegesamt'
from ergebnisse ps,
	spieler ps2,
	mannschaft pm,
	gruppe pg
where ps.fs_id_spieler = ps2.id_spieler
	and ps2.fs_id_manschaft = pm.id_mannschaft
	and pm.fs_id_gruppe = pg.id_gruppe
group by pg.id_gruppe,
	pm.id_mannschaft,
	pm.name,
	ps2.id_spieler,
	ps2.vorname,
	ps2.nachname
order by pg.id_gruppe,
	sum(ps.volle+ps.abraeumen) desc,
	pm.id_mannschaft";

$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung) or die (mysql_error());


while ($ausgabe = mysql_fetch_array ($result)) {
    echo $ausgabe['vorname'];
    echo $ausgabe['nachname'];
}


mysql_close ($dbverbindung);


?>


Leider versteh ich es nun gar nicht mehr. Wenn ich die group by komplett aus dem code raus werfe sagt er mir trotzdem Invalid use of group function. Naja muss ich wohl ganz auf euch vertrauen :-)))
 
Zuletzt bearbeitet:
Ich kann jetzt nur raten:
Versuche es mal mit
Code:
...
sum(ps.volle) + sum(ps.abraeumen)
...
anstatt
Code:
...
sum(ps.volle+ps.abraeumen)
...
 
Zurück