Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] UPDATE wielu rekordów w pętli
jg44
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

Ostrzeżenie: (0%)
-----


Witam,
mam dwie następujące tabele: turnieje_zapisy (pola: nazwa_turnieju,zawodnik) oraz turnieje_pary (pola: nazwa_turnieju,gracz1,gracz2). Ogólnie chodzi o to, że do tabeli turnieje_zapisy zapisywane są nazwiska ludzi jedno pod drugim, którzy chcą wziąć udział w turnieju, w tabeli turnieje_pary wylosowane do gry. Dobór w pary wygląda tak, że sprawdzam, ile zapisanych jest w turnieje_zapisy, i pierwszą połowę zapisanych przenoszę do turnieje_pary (gracz1) za pomocą INSERT INTO ... . Drugą połówę chciałbym UPDATE'ować do kolumny gracz2. Problem jest w tym, że UPDATE mi źle działa, a konkretnie LIMIT - jeśli np. pętla biegnie od 8 do 4, to zamiast UPDATE'ować rekordy z kolejnymi wartościami LIMIT $i,1, on leci jak przez sito, po czym 4 razy UPDATE'uje ten sam rekord, w tym przypadku ten, który jest pod LIMIT 4,1. Tak jakby w kolejnych przebiegach pętli $i wcale nie było zmniejszane wewnątrz zapytania.

  1. $r1 = mysql_query("SELECT * FROM turnieje_zapisy WHERE nazwa_turnieju='$this->tournament'")or die(mysql_error());
  2. $count = mysql_num_rows($r1); //liczebność tabeli
  3. $interval = ceil($count/2); // wyznaczenie połowy
  4. $max = $count-1;
  5. if($count % 2 != 0) // jeśli liczba zapisanych jest nieparzysta, to dopisuję 'kreskowy' rekord, aby było parzyście
  6. {
  7. mysql_query("INSERT INTO turnieje_zapisy (nazwa_turnieju,zawodnik) VALUES ('$this->tournament','---')");
  8. }
  9.  
  10. for($i=$max; $i>=$interval; $i--)
  11. {
  12. mysql_query("UPDATE turnieje_pary SET gracz2=(SELECT zawodnik FROM turnieje_zapisy WHERE nazwa_turnieju='$this->tournament' LIMIT ".$i.",1) WHERE nazwa_turnieju='$this->tournament' LIMIT ".$i)or die(mysql_error());
  13. }

Proszę o podpowiedź
Z góry dziękuję
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 04:58