Komplexe Abfrage in kleiner Datenbank

Versuche mal das
PHP:
$erg2 = mysql_query( $ausg); 

if (!$erg2 ) {
   die('Ungültige Abfrage: ' . mysql_error());
}

Da solltest du einen eventuellen SQL Fehler angezeigt bekommen
 
Jetzt bekomme ich die Meldung:

FUNCTION test.SUM does not exist.

Ich hab die SQL abfrage daruaf hin mal direkt in die Datenbank eingegeben. Da scheint er die Funktion SUM zu kennen.
 
Moment mal.....
PHP:
$ausg = "SELECT user, projekt 
FROM bewertung";
Laut deinem Dump zum erstellen der Tabelle gibt es die Spalte "projekt" überhaupt nicht.
Du solltest Deine Tabelle nochmal überprüfen.
 
Sorry mein Fehler. Ich hatte zur Probe die Dateinamen geändert. Das habe ich beim kopieren übersehen. Im Originalscript auf meinem Rechner steht da date und nicht projekt.
 
Oh man, ich habe mich mit sowas noch nie befasst.....
Aber so ist schonmal die Fehlermeldung weg:
PHP:
$end_ausg= "SELECT user,SUM(punkte) AS 'gesamt_punkte' 
FROM bewertung 
GROUP BY user 
ORDER BY gesamt_punkte DESC"; 
$end_erg = mysql_query($end_ausg); 
while (list($user,$gesamt_punkte) = mysql_fetch_row($end_erg)) 
{ 
    $z++; 
    for ( $x="0" ; $x<=$i ; $x++ ) 
   { 
        if ( $user_b==$user_a[$x] ) 
        { 
            $punkte=$gesamt_punkte/$counter[$x]; 
        } 
    } 
    echo "Platz ($z) - $user_b hat $punkte."; 
}
 
Ok danke damit wäre die erste Hürde geschafft. nur verstehe ich nicht so ganz, warum mir nichts azsgegeben wird. ich bekomme nur

Platz (1) - user2 hat.Platz (2) - user1 hat.

Wieso bekomme ich denn jetzt keine Punktestände angezeigt?
 
Zuletzt bearbeitet:
Frage mich aber lieber nicht wie ich es hinbekommen habe. :rolleyes:
PHP:
######################################################################### 
$ausg = "SELECT * FROM bewertung"; 
$erg2 = mysql_query($ausg) or die (mysql_error()); 
while (list(,,$user,,,,$punkte) = mysql_fetch_row($erg2)) 
{ 
    $i++; 
    $user_a[$i]=$user; 
    $punkte_a[$i]=$punkte; 
} 

// zählen der Bewertungen pro Projekt 
for ( $x="0" ; $x<=$i ; $x++ ) 
{ 
    for ( $y="0" ; $y<=$i ; $y++ ) 
    { 
        if ( $user_a[$x]==$user_a[$y] && $punkte_a[$x]==$punkte_a[$y] ) 
        { 
            $counter[$x]++; 
            $user_a[$y]=$x; // um Doppelzählungen auszuschließen 
        } 
    } 
} 
#################################################################### 
$end_ausg= "SELECT *,SUM(punkte) AS 'gesamt_punkte' 
FROM bewertung 
GROUP BY user 
ORDER BY gesamt_punkte DESC"; 
$end_erg = mysql_query($end_ausg) or die (mysql_error()); 
while (list(,,$user,,,,$gesamt_punkte) = mysql_fetch_row($end_erg)) 
{ 
    $z++; 
    $user_b[$z]=$user; 
    $punkte_b[$z]=$gesamt_punkte; 
    
    for ( $x="0" ; $x<=$z ; $x++ ) 
   { 
        if ( $user_a[$y]==$user_b[$x] ) 
        { 
            $punkte2=$gesamt_punkte/$counter[$x]; 
        } 
    }
    echo "Platz ($z) - ".$user_b[$z]." hat ".$punkte2." Punkte.<br>"; 
}
Ausgabe:
Code:
Platz (1) - foo hat 8 Punkte.
Platz (2) - bar hat 5 Punkte.
 
Vielen Dank für die Arbeit. Ich weiß, das ist eine echt blöde Abfrage. Allerdings wird bei mir immer noch ein Fehler angezeigt.

$punkte2=$gesamt_punkte/$counter[$x];

Angeblich wäre in dieser Zeile eine unerwartete eckige Klarmmer "[" :confused:
 
Kann ich nicht bestätigen...... bei mir funktioniert es.
Allerdings habe ich auch die eingebundenen Dateien config.php und lang.php auskommentiert, da ich diese Dateien ja nicht habe.
Demzufolge habe ich natürlich auch die beiden if-Abfragen ( if (!$verbindung) und if (!$erg ) ) im oberen Teil des Scripts auskommentiert.
Ich glaube allerdings nicht dass es daran liegen könnte.

Ist evtl. beim Copy&Paste irgendwo ein Zeichen verloren gegangen oder hast Du irgendwas geändert?
Du benutzt ja hoffentlich einen Editor mit Syntaxhervorhebung?!
 
ja ich mach das alles mit dreamweaver 8. es kann natürlich sein, das durch die ständigen veränderungen jetzt irgendwas nichtmehr so ist wie du es vorliegen hattest. dürfte aber eigentlich nicht. mich wundert halt nur warum er ausgerechnet die eckige klammer bemängelt.

naja ich sag erstmal danke und werde die änderungen so wie hier im thread beschrieben der reihenach nochmal durchgehen. vieleicht finde ich ja meinen fehler.
 
Zurück