Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL] Problem dotyczący UPDATE ... SET
Forum PHP.pl > Forum > Przedszkole
slupek
Mam tabelę z kolumną nagroda2. Co miesiąc przyznaję użytkownikom nagrody (złote, srebrne i brązowe, każdej odpowiada pewien numer). Tak więc po kilku miesiącach zawartość komórki nagroda2 może wynosić np. 2,4,5,15 . Aktualizuję jej zawartość za pomocą formularza i checkboxów takim oto kodem:

  1. <?php
  2. $query = "UPDATE pilots SET nagroda2='$nagroda' WHERE pilot_id='$pilot_id' ";
  3. $result = mysql_query($query);
  4. if ($result) 
  5. echo ("Dokonano zmian w bazie pilotów.");
  6. ?>


Mój problem polega na tym, co w pewnej mierze jak się domyślam wynika ze specyfiki funkcji UPDATE, że, aktualizując tę komórkę, kasuje mi istniejące wartości. Jedynym sposobem jest zaznaczanie w formularzu wszystkich poprzednich nagród. W styczniu i lutym nie było problemu - ale jest lipiec. A co będzie w październiku? Czy jest jakiś sposób by nie zmieniając struktury tabeli "dopisywać" tylko kolejne wartości do już istniejących w tej samej komórce np.: 21, 34, 55 ?

Dzięki za info z góry.
artega
Cytat
zy jest jakiś sposób by nie zmieniając struktury tabeli "dopisywać" tylko kolejne wartości do już istniejących w tej samej komórce np.: 21, 34, 55 ?

Chwile pomyśleć i użyć np. funkcji CONCAT w zapytaniu
  1. <?php
  2. $query = "UPDATE pilots SET nagroda2=CONCAT(nagroda2, ',$nagroda') WHERE pilot_id='$pilot_id' ";
  3. $result = mysql_query($query);
  4. if ($result) 
  5. echo ("Dokonano zmian w bazie pilotów.");
  6. ?>

lub odczytać aktualną wartość tego pola, rozbić przez funkcje explode i zaznaczyć checkbox'y atrybutem checked.
slupek
Cytat(artega @ 1.07.2008, 17:26:55 ) *
Chwile pomyśleć


Jeśli się ma braki w wiedzy, to nie ma o czym myśleć. Dzięki za pomoc, działa wyśmienicie z CONCAT.
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.