Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: brak wartości w bazie danych mysql
Forum PHP.pl > Forum > Przedszkole
olo707
Witam
Właśnie tworze małą aplikację (w oparciu o PHP i Mysql), w której użytkownik będzie miał możliwość zarejestrowania się , zalogowania i edytowania swoich danych po pomyślnym zalogowaniu. Konstrukcja tabeli w bazie danych jest standardowa (Pierwsze pole to oczywiście id jako Integer, auto increment i primery key. Reszta pól to Varchar not null m.in dla nazwiska, imienia, pseudonimu, email itd ). Zapytanie sql wygląda tak

  1. mysql_query("UPDATE lista SET
  2. name = '{$this->name}',
  3. surname = '{$this->surname}',
  4. nick = '{$this->nick}',
  5. email = '{$this->email}',
  6. phone = '{$this->phone}',
  7. birthday = '{$this->birthday}'
  8. WHERE `id` = '{$_SESSION['ID']}'
  9. ");
  10.  


Na chwile obecną gdy użytkownik będzie chciał edytować np tylko name a pozostałe pola formularza pozostawi puste (nic w nie wpisując) to te "puste wartości "
z pozostałych pol nadpiszą w bazie danych pola wypełnione podczas rejestracji (czyli je wykasują pozostawiając pustą wartość). Jak osiągnąć taki efekt aby tylko wpisane wartości w formularzu HTML były uaktualniane a te nie wpisane po prostu się nie uaktualniały. Próbowałem następujących rozwiązań
Kod
$this->name     =    (isset($_POST['name']) == TRUE && !empty($_POST['name']) == TRUE) ? $this->filter($_POST['name']) : null;


zamieniałem również null na false i '' (pusty string ) ale efekt był ten sam. filter z kodu powyżej to funkcja (metoda), która przy pomocy wyrażeń regularnych określa co może się znaleźć w bazie danych. Z góry dzięki za pomoc

nospor
Wyświetlając użytkownikowi forma, gdzie może zmieniać swoje dane, wypełnij pola tego forma jego danymi z bazy. Wówczas nie będziesz miał problemu że coś co nie chciał zmieniać zostawi puste. Gdy ty mu wypełnisz forma jego danymi, to to czego nie będzie chciał zmieniać zostawi jak jest i wszystko będzie w porządku. Tak się robi w 99% formularzy do edycji danych.

ps: przenosze na przedszkole bo z samą bazą problem ma niewiele wspólnego
olo707
można te pola w formularzu jakoś inaczej wypełnić danym niż zmiennymi sesyjnymi
nospor
Pobierasz z bazy i wypełniasz.
olo707
a jak podczas edytowania danych uzyskać taki efekt aby wartości (values w polach formularza html) aktualizowały się od razu po naciśnięciu przycisku submit a nie dopiero po naciśnięciu np któregoś z linków
nospor
Nie kumam... każdy normalny formularz reaguje na submit i wysyła cały formularz z którym robisz co chcesz.
olo707
zgadza się ale chodzi mi o to że do naciśnięcia submit mam w polach formularza wartości z bazy danych (mysql) Następnie wpisuje coś innego w polu input żeby updejtować baze danych i faktycznie tak się dzieje po naciśnięciu submit z tym że w tym momencie w tym polu pojawia się wartość stara (jeszcz nie zmieniona) z bazy danych która się dopiero zmienia po kolejnym przeładowaniu strony
Damonsson
Przenieś obsługę submita przed formularz, albo po wykonaniu daj header('Location :...')
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.