Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak uprościć polecenie ?
Forum PHP.pl > Forum > Bazy danych > MySQL
aniol
Tabela wygląda tak że zawiera rekordy dla każdego usera o id-1, id-2, id-3...... itd
Każdy user w rekordzie ma pola kilku liczników: licznik_stol, licznik_krzeslo, licznik_fotel.....itd

Chcę mieć możliwość skasowania (wstawienia 0) do wszystkich liczników dla danego ID.

obecnie robię to tak:
  1. mysql_query("UPDATE $mysql_table SET licznik_stol='0', licznik_krzeslo='0', licznik_fotel='0'...itd WHERE id='$id'");


Czy można uprościć to polecenie ? Gdy np. było by 100 liczników to musiał bym napisać dość długą linijkę.

Może istnieje jakąś składnia umożliwiająca np. wstawienie wartości do wszystkich pól, których nazwy zaczynają się na 'licznik_" ?

Druga sprawa: końcowy warunek
  1. WHERE id='$id'"


A jak bym chciał wyzerować wszystkim userom wszystkie liczniki, chodzi o to czy można to $id zastąpić jakimś znakiem mówiącym, że chodzi o wszystkie id ? Coś w rodzaju '*'.

Wiem, że pętla to załatwia, ale czy bez pętli da się prościej ?
kitol
Nie da się w ten sposób. Przeprojektuj tabelę, wywal wszystkie liczniki i utwórz tabelę liczniki:

user_id INT,
licznik_val INT,
licznik_name ENUM('krzeslo', 'stol', tapczan')

W takiej tabeli kombinacją warunków WHERE user_id=x AND licznik_name=y możesz wykasować interesujący cię licznik.
Gy pominiesz warunek na user_id wykasujesz wszystkich, analogicznie z drugim warunkiem.
Co gdy chcesz wykasować tylko dwa liczniki? Dajesz warunek WHERE licznik_name IN ('krzeslo','stol')

PS. Piszesz grę online?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.