mockauer Geschrieben 22. Januar 2012 Geschrieben 22. Januar 2012 Hi Community, ich habe gerade ein Schleifenproblem, bin auch langsam am verzwiefeln, wie ich es lösen kann. $query=mysql_query("SELECT * FROM sportmontana.diskus ORDER BY `diskus`.`setzwert1` DESC"); $anzahl=mysql_num_rows($query); for ($i=1;$i<=$anzahl;$i++){ switch ($i) { case 1: $punkte=30; break; case 2: $punkte=27; break; case 3: $punkte=24; break; case 4: $punkte=21; break; case 5: $punkte=19; break; case 6: $punkte=17; break; case 7: $punkte=15; break; case 8: $punkte=13; break; case 9: $punkte=11; break; case 10: $punkte=10; break; case 11: $punkte=9; break; case 12: $punkte=8; break; case 13: $punkte=7; break; case 14: $punkte=6; break; case 15: $punkte=5; break; case 16: $punkte=4; break; case 17: $punkte=3; break; case 18: $punkte=2; break; case 19: $punkte=1; break; } $query=mysql_query("SELECT * FROM sportmontana.diskus ORDER BY `diskus`.`setzwert1` DESC"); while( $row1 = mysql_fetch_assoc($query) ){ $query6="UPDATE `sportmontana`.`diskus` SET `punkte1` = '".$punkte."' WHERE name = '".$row1['name']."' "; echo $query6."<br/>"; } } [/php] Ich bekomme derzeit als Ausgabe: [b]UPDATE `sportmontana`.`diskus` SET `punkte1` = '30' WHERE name = 'admin'[/b] UPDATE `sportmontana`.`diskus` SET `punkte1` = '30' WHERE name = 'Walter Müller' UPDATE `sportmontana`.`diskus` SET `punkte1` = '30' WHERE name = '1234' UPDATE `sportmontana`.`diskus` SET `punkte1` = '27' WHERE name = 'admin' [b]UPDATE `sportmontana`.`diskus` SET `punkte1` = '27' WHERE name = 'Walter Müller'[/b] UPDATE `sportmontana`.`diskus` SET `punkte1` = '27' WHERE name = '1234' UPDATE `sportmontana`.`diskus` SET `punkte1` = '24' WHERE name = 'admin' UPDATE `sportmontana`.`diskus` SET `punkte1` = '24' WHERE name = 'Walter Müller' [b]UPDATE `sportmontana`.`diskus` SET `punkte1` = '24' WHERE name = '1234' [/b] Benötige aber nur die Dickgedruckten. Es geht darum jeden Namen nur einmal Punkte zuvergeben, dies ergibt sich durch den Setzwert, der größte gewinnt 30Punkte, der 2. 27 Punkte und soweiter nach unten. Setze ich $query ganz unten außerhalb der for Schleife bekomme alle Namen die gleichen Punkte hier in diesem Fall 24.
flashpixx Geschrieben 22. Januar 2012 Geschrieben 22. Januar 2012 Es ist nicht klar wo die Variable $punkte her kommt, zusätzlich beginnen die Schleifen und auch die Rows bei 0 und laufen bis n-1, Deine Schleife iteriert von 1 bis n. Wenn Du nur einzelne Einträge updaten willst, dann wäre ein "update table set ? = ? where ? = ?" das richtige oder auch alternativ "insert into ... on duplicated key ? = ?"
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden