Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]aktualizacja bazy - jeżeli puste to nie zmieniaj
Forti
post
Post #1





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Witam

Mam skrypt, dzięki którym użytkownik aktualizuje sobie profil.

  1. <?php
  2. if($profile['login'] == $_SESSION['login']){
  3.  
  4.  
  5.  
  6. if(isset($_POST['aktualizuj'])){
  7.  
  8.  
  9.  
  10.  
  11. $dodaj = $baza->prepare("UPDATE users SET achiv = :achiv, avatar = :avatar, sygnatura = :sygnatura, o_sobie = :osobie WHERE login = :login");
  12. $dodaj->bindValue(":achiv", $_POST['achiv'], PDO::PARAM_INT);
  13. $dodaj->bindValue(":avatar", $_POST['avatar'], PDO::PARAM_STR);
  14. $dodaj->bindValue(":sygnatura", $_POST['sygnatura'], PDO::PARAM_STR);
  15. $dodaj->bindValue(":osobie", $_POST['osobie'], PDO::PARAM_STR);
  16. $dodaj->bindValue(":login", $_SESSION['login'], PDO::PARAM_STR);
  17. $dodaj->execute();
  18. echo "Dane zostały zaaktualizowane!";
  19. }
  20.  
  21. else {
  22. user::upProfil();
  23. }
  24. }
  25.  
  26. ?>



obiekt upProfil() po prostu zwraca formularz w klasie user (uczę się robić jak najwięcej "obiektowo" ale straszny bałagan mi wychodzi.. (IMG:style_emoticons/default/smile.gif)

  1. function upProfil(){
  2. echo '
  3. <form method="post" action="">
  4. <label for="avatar">Avatar (55x55, link http):</label>
  5. <input type="text" name="avatar" maxlength="50" id="avatar" />
  6.  
  7. <label for="sygnatura">Sygnatura (100znaków):</label>
  8. <input type="text" name="sygnatura" maxlength="100" id="sygnatura" />
  9.  
  10. <label for="osobie">O sobie (200 znaków):</label>
  11. <input type="text" name="osobie" maxlength="200" id="osobie" />
  12.  
  13. <label for="achiv">Achievment:</label>
  14. <input type="text" name="achiv" maxlength="4" id="achiv" />
  15.  
  16.  
  17.  
  18. <input type="submit" name="aktualizuj" value="Aktualizuj" />
  19. </form>';
  20. }



I teraz problem:

Użytkownik wypełnia sobie tylko jedno pole - wysyła się prawidłowo do bazy, a pozostałe pola, które są puste nadpisuje w bazie jako wartości puste. Da się to zrobić jakoś prosto czy muszę zrobić odzielne warunki na każde z pól i sprawdzać czy puste?
Go to the top of the page
+Quote Post
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Albo sprawdzasz wszystkie, albo przy edycji wstawiasz domyslne value pobrane z bazy. Druga opcja jest najbardziej ludzka, bo użytkownik może chcieć usunąć sygnaturę, więc po prostu zostawi to pole puste (usunie zawartość).

Ten post edytował Turson 17.06.2014, 14:47:08
Go to the top of the page
+Quote Post
Damonsson
post
Post #3





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

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


No tak czy siak musisz sprawdzić czy nie jest puste. Powinieneś sobie automatycznie generować to zapytanie do bazy na podstawie tego co dostaniesz. Czyli foreach i sprawdzasz czy puste, jak nie to bindujesz.
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: 4.10.2025 - 16:52