Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Jak najlepiej dopisać dane do komórki
Forum PHP.pl > Forum > Przedszkole
Kshyhoo
Jak najlepiej dodać do komórki inne dane (tekst). Pobrać, dopisać, zapisać, czy lepiej CONCAT?
kpt_lucek
A te dane, to pochodzą z innych wierszy/tabel?
Jak tak, to imo warto rozważyć utworzenie widoku (bo łatwo zmodyfikować i dorzucić inne wymagane pola do concat'u).

Jeżeli jest to jakiś stały wpis i to ma być modyfikowalne bezpośrednio przez jakiś skrypt, np. tagi, to pobrać, dopisać i zapisać.


Chociaż w praktyce można oba te rozwiązania połączyć, imo wszystko zależy od tego jak wygląda proces i jaki jest wymóg.
Kshyhoo
Chcę uaktualnić komórkę, czyli dodać dane na końcu.
kpt_lucek
No to ja bym pobrał, dopisał i zapisał smile.gif
Kshyhoo
Gorzej, jak ktoś inny dopisze do tej komórki w tym samym czasie...
kpt_lucek
No tak, ale jak Ci w tym wypadku pomoże Concat?

Tak czy siak, musisz pobrać, zaktualizować i zapisać, dla bardzo uporczywego zagadnienia wrzuciłbym jakiś longpull/socket/etc żeby informować użytkownika o zmianach (o ile jest to takie istotne).
Kshyhoo
No właśnie, pierwszy problem. Dane początkowe. Mam taką pętlę:
  1. $a = 5;
  2. for ($i=1; $i<=$a; $i++) {
  3. $s = ($i % 2 == 0) ? '1' : '0';
  4. echo $s;
  5. }

Jak mam zapisać do bazy. Powinno być coś w rodzaju 010101010 a mam 0.
kpt_lucek
Typ pola w bazie?
Kshyhoo
varchar
kpt_lucek
Ok, to inaczej, pokaż kawałek kodu który za to odpowiada smile.gif
Kshyhoo
  1. if (!$error) {
  2. $sql1 = "SELECT COUNT(id) AS adv FROM advent";
  3. $result1 = mysqli_query($con, $sql1);
  4. $adv = mysqli_fetch_assoc($result1);
  5. $adv = $adv['adv']*2-1;
  6. for ($i=1; $i<=$adv; $i++) {
  7. $stat = ($i % 2 == 0) ? '|' : '0';
  8.  
  9. $sql2 = "INSERT INTO users (name, email, pass, stat_u)
  10. VALUES ('".$name."', '".$email."', '".$password."', '".$stat."')";
  11. }
  12. if(mysqli_query($con, $sql2)) {
  13. $successmsg = "Rejestracja pomyślna!";
  14. } else {
  15. $errormsg = "Błąd trakcie w rejestracji!";
  16. }
  17. }
kpt_lucek
Zamień
  1. $stat = ($i % 2 == 0) ? '|' : '0';

na
  1. $stat .= ($i % 2 == 0) ? '|' : '0';


+ przed pętlą zrób
  1. $stat = '';


--Edit

  1. for ($i=1; $i<=$adv; $i++) {
  2. $stat = ($i % 2 == 0) ? '|' : '0';
  3.  
  4. $sql2 = "INSERT INTO users (name, email, pass, stat_u)
  5. VALUES ('".$name."', '".$email."', '".$password."', '".$stat."')";
  6. }


Jesteś pewien co do tej składni?

Wywal to poza pętlę (niżej, nie ma sensu ustawiać tej zmiennej w pętli, gdzie dane się zmieniają)
Kshyhoo
Generuje dobrze, ale wstawiało jedno zero. Zaraz sprawdzę Twoją wersję.

Wstawiłem to w pętlę przy kombinowaniu.

Działa, dzięki.
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.