Mehrere Zeilen aufeinmal updaten

  • Hallo,

    ich versuche derzeit ein kleines Browsergame zu programmieren, um meine PHP Kenntnisse zu verbessern, aber komme bei der Punkteberechnung nicht weiter.
    Ich lese aus der Datenbank die einzelnen Attribute die der Spieler besitzt aus, multipliziere sie mit verschiedenen Werten und berechne daraus seine Punkte. Für einen Spieler klappt das ja, aber wie kann ich die Punkte aller Spieler berechnen? Für jeden Spieler eine eigene Abfrage wäre ja nicht gerade sinnvoll, da dies dann unendliche wären.
    Mein Code bisher:

    $result = mysql_query("SELECT * FROM gees WHERE id=1 ");
    while ($row = mysql_fetch_array($result, MYSQL_BOTH))

    $sql = "UPDATE gees SET points=$row[ausdauer]*4 + $row[staerke]*2 +..... WHERE id=1 ";

    Wenn ich das WHERE weglasse schreibt er mir unter Points bei jedem Spieler die selbe Punktezahl hinein. Kann mir da jemand helfen?

  • Zeige mal den kompletten Update-String. Die Idee von alxy solltest du erst mal lassen.

  • Ja, die ids sind aufsteigend. Ich habe es so schon versucht aber bekomme es mit dem hochzählen einfach nicht hin.
    Könntest du mir vielleicht einen Anstoß geben? :)

  • $sql = "UPDATE gees SET points=$row[staerke]*2 + $row[ausdauer]*4 + $row[aufmerksamkeit]*3 + $row[treffsicherheit]*7 + $row[intelligenz]*1 + $row[geschwindigkeit]*3 ";

  • Zuerst einmal:

    Warum soll ich nicht SELECT * schreiben?
    http://php.faq-page.net/q-sql-select.html

    Dann:

    PHP
    $sql = "UPDATE 
                `gees` 
              SET 
                `points` = `staerke` * 2 + `ausdauer` * 4 + `aufmerksamkeit` * 3 + `treffsicherheit` * 7 + `intelligenz` * 1 + `geschwindigkeit` * 3";


    Damit kannst du dir dein Select und die Schleife schenken

  • Perfekt, es geht, Danke ;)
    Unglaublich wie man doch manchmal an solch simplen Dingen verzweifeln kann :)