Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Aktualizowanie rekordu
Forum PHP.pl > Forum > Przedszkole
redelek
Witam,

Mam taki problem,

Dane do formularza są pobierane z bazy danych. wszystko ładnie się pobiera i wyświetla się w formularzu.
Chcę dać użytkownikowi szansę na zamianę niektórych danych ( imię, nazwisko, e-mail, hasło ).

Wszystko też ładnie wygląda. Problem w tym, że ludzie są różni i chciałbym uniknąć problemów lub błedów
Mam tak

  1. <?php
  2. if ($rek=="update"){
  3.    echo "dane zmienione<br />";
  4.    $imie=$_POST['imie'];
  5.    $nazwisko=$_POST['nazwisko'];
  6.    $haslo=$_POST['haslo'];
  7.    $haslo_szyfrowane=md5($haslo);
  8.    $email=$_POST['email'];
  9.    
  10.    if (!empty($haslo)) {
  11.            echo "Aktualizuję:  <br />";
  12.            echo $imie.'<br />'.$nazwisko.'<br />'.$haslo.'<br />'.$haslo_szyfrowane.'<br />'.$email.'<br />';
  13.    }    else {
  14.            echo "Aktualizuję bez pola {HASŁO}: <br />";
  15.                        echo $imie.'<br />'.$nazwisko.'<br />'.$email.'<br />';
  16.            }
  17.    
  18.    }
  19. ?>

Wszystko pięknie, ale jeśli chodzi o hasło. Nie ma hasła pole pozostawia bez zmian, a resztę aktualizuje. Jeśli pole hasło zmienione to aktualizuje wszystkie pola. Tu właśnie jest problem. Czy dla każdego pola mam pisać warunek
  1. <?php
  2. if (!empty($imie))
  3. ?>
itd. czy mogę to zrobić w jakiejś pętli, że jeśli któreś pola się róznią to je zmień. Jeśli są puste a w bazie coś jest to je pomiń w aktualizacji.

Mam nadzieję że nie zakręciłem tego o co mi chodzi.

Będę bardzo wdzięczny za pomoc i sugestie może jakieś inne rozwiązanie

Pozdrawiam
Redelek
Lonas
Możesz przekazywać sobie ID uzytkownika - jeżeli którekolwiek pole jest zmienione - imie lubi nazwisko lub inne to robisz jednego UPDATE ktory aktualizuje wszystkie dane ktore są w formularzu
redelek
Cytat(Lonas @ 3.02.2009, 09:40:08 ) *
Możesz przekazywać sobie ID uzytkownika - jeżeli którekolwiek pole jest zmienione - imie lubi nazwisko lub inne to robisz jednego UPDATE ktory aktualizuje wszystkie dane ktore są w formularzu


No tak ja mam login użytkownika którego nie można zmieniać.

Problem w tym, że koleś ma jakieś wpisy

Imię: Jan
Nazwisko: Kowalski
Hasło: janek
E-mail: janek@wp.pl

Użytkownik, zalogował się ma swoją sesję i widzi swoje dane. Zmienia sobie hasło i kasuje adres e-mail. Robi UPDATE i w bazie robi się tak
Imię: Jan
Nazwisko: Kowalski
Hasło: nowe_janek
e-mail:

Przez to przestaje działać jedna funkcja powiadamiania o aktualizacjach.
Mogę to zrobić tak
  1. <?php
  2. if (!empty($imie) {
  3.   UUPDATE wszystkich pól bez pola IMIE
  4. } else {
  5.    UPDATEwszystkich pól w&#322;ącznie z polem IMIE
  6. }
  7. if (!empty($haslo) {
  8.   UUPDATE wszystkich pól bez pola HASLO
  9. } else {
  10.    UPDATEwszystkich pól w&#322;ącznie z polem HASLO
  11. }if (!empty($email) {
  12.   UUPDATE wszystkich pól bez pola email
  13. } else {
  14.    UPDATEwszystkich pól w&#322;ącznie z polem email
  15. }
  16. ....
  17. ?>

Pytanie czy można to jakoś skrócić czy mam tak sypać tymi IF
Lonas
Robisz sobie hidden input z ID usera.

Odbierasz formulasz i robisz update bazy jeżeli nie chcesz żeby pole mail zostało puste robisz tak :

  1. <?php
  2. if(isset($_POST['update'])){
  3.  if(!empty($_POST['mail']))
  4.    die('Pole email nie moze pozostac puste');
  5.  else
  6.    //UPDATE
  7. }
  8. ?>
redelek
Cytat(Lonas @ 3.02.2009, 10:12:50 ) *
Robisz sobie hidden input z ID usera.

Odbierasz formulasz i robisz update bazy jeżeli nie chcesz żeby pole mail zostało puste robisz tak :

  1. <?php
  2. if(isset($_POST['update'])){
  3.  if(!empty($_POST['mail']))
  4.    die('Pole email nie moze pozostac puste');
  5.  else
  6.    //UPDATE
  7. }
  8. ?>


No ja tak właśnie zrobiłem tylko pytanie czy można krócej , bo do każdego pola ustawiać if.
Poza tym chodzi mi o to że jeśli jest puste to nie aktualizuj go w bazie, a resztę jeśli zmieniona to aktualizuj.

przykład :
Dane w bazie
imię: jan
nazwisko: Kowalski
haslo: janek
email: jkowalski@wp.pl

Użytkownik wszedł do formularza edycyjnego. Zmienił pola
imię: janek2
nazwisko: Kowalski
hasło: puste skasował wartość
email: puste skasował wartość

klika aktualizuj i dane w bazie wyglądają tak
imię: janek2
nazwisko: Kowalski
hasło: puste bo wywalił je w formularzu
email: puste bo wywalił je w formularzu

Chodzi mi o to że jeśli pozmienia na wartości puste ma nie aktualizować pola w bazie tylko pozostawić je bez zmian.
Lonas
No to masz 2 ify

  1. <?php
  2. if(isset($_POST['update'])){
  3. if(empty($_POST['mail']) OR empty($_POST['haslo']))
  4.   //UPDATE bez tych pol
  5. else
  6.   //UPDATE z polami
  7. }
  8. ?>
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.