[PHP][MySQL] UPDATE wielu rekordów w pętli |
[PHP][MySQL] UPDATE wielu rekordów w pętli |
28.11.2011, 17:03:48
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.
Proszę o podpowiedź Z góry dziękuję |
|
|
28.11.2011, 17:34:20
Post
#2
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) |
Trzymanie jakichś "kreskowych" rekordów w bazie jest strasznie nieprofesjonalne. Te kreski powinieneś dodawać już po odczycie z bazy, na samym wyjściu za pomocą html/css.
Na końcu nie powinno być przypadkiem
? Ten post edytował qrzysztof 28.11.2011, 17:51:28 -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
28.11.2011, 18:12:22
Post
#3
|
|
Grupa: Zarejestrowani Postów: 355 Pomógł: 50 Dołączył: 20.08.2007 Skąd: Częstochowa Ostrzeżenie: (0%) |
A nie pomyślałeś o tym, żeby nie męczyć mysqla tym wszystkim, sparować ludzi w php i insertować juz gotowe rekordy?
-------------------- przetwornik yt na czasie :)
|
|
|
28.11.2011, 18:22:01
Post
#4
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 14 Dołączył: 14.07.2011 Skąd: Gliwice / Wrocław Ostrzeżenie: (0%) |
qrzysztof, po pierwsze jeśli będzie nieparzysta liczba, to ktoś nie będzie miał pary do gry i zazwyczaj na turniejach tenisowych daje mu się 'dziką kartę' i jego nieistniejącego 'wirtualnego' rywala właśnie się kreskuje. Ok, jak skrypt będzie działał, to zrobię jak mówisz.
Po drugie, na końcu nie powinno być $i.",1, bo to jest polecenie UPDATE. A w tym poleceniu nie można używać LIMIT z dwoma parametrami, bo będzie błąd składni. http://dev.mysql.com/doc/refman/5.0/en/update.html hondek, właśnie nie bardzo mam pomysł, jak taką funkcję napisać. bezpośrednio w bazie jest teoretycznie łatwiej. Ten post edytował jg44 28.11.2011, 18:24:16 |
|
|
28.11.2011, 18:31:08
Post
#5
|
|
Grupa: Zarejestrowani Postów: 355 Pomógł: 50 Dołączył: 20.08.2007 Skąd: Częstochowa Ostrzeżenie: (0%) |
przeciez spokojnie możesz wykorzystań arraye np.
tworzysz arraya: pobierasz sobie pierwszą połowę zawodników do $mysql_players, a do $others_players resztę i przepisujesz do tablicy wyniki:
-------------------- przetwornik yt na czasie :)
|
|
|
28.11.2011, 18:36:47
Post
#6
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 14 Dołączył: 14.07.2011 Skąd: Gliwice / Wrocław Ostrzeżenie: (0%) |
Faktycznie, niezły pomysł
dzięki |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 10:33 |