Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> brak wartości w bazie danych mysql
olo707
post
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 30.03.2012

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
olo707
post
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 30.03.2012

Ostrzeżenie: (0%)
-----


można te pola w formularzu jakoś inaczej wypełnić danym niż zmiennymi sesyjnymi
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pobierasz z bazy i wypełniasz.
Go to the top of the page
+Quote Post
olo707
post
Post #5





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 30.03.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie kumam... każdy normalny formularz reaguje na submit i wysyła cały formularz z którym robisz co chcesz.
Go to the top of the page
+Quote Post
olo707
post
Post #7





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 30.03.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Damonsson
post
Post #8





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Przenieś obsługę submita przed formularz, albo po wykonaniu daj header('Location :...')
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 08:27