Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]aktualizacja bazy - jeżeli puste to nie zmieniaj
Forum PHP.pl > Forum > Przedszkole
Forti
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.. 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?
Turson
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ść).
Damonsson
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.
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.