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. Zitieren
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 ? = ?" Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.