Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz w PHP
Forum PHP.pl > Forum > PHP
tdr
Siemanko!
Mój problem polega na tym, iż stworzyłem fajny formularz w phpie i wiadomo uzupełnienie jego dokonuje zmian w bazie danych.. Występują tam pola typu imię i nazwisko itp.. Dajmy na to strzeliłem literówkę w imieniu to wchodzę w magiczny formularz z mysql UPDATE i poprawie imię nie uzupełniając reszty pól. Czyli jak się można domyśleć po zatwierdzeniu zmian staną się puste. Jak taki problem rozwiązać?
Problem raczej banalny dla programistów, ale cóż.. domyślam się, że można coś takiego zrobić na tablicach... ale chciałbym zobaczyć i przeanalizować gotowe rozwiązanie, bo w ten sposób wiem, że się nauczę... Proszę o pomoc wink.gif

Pozdrawiam
Kshyhoo
Pobierz do formularza wszystkie dane albo pobieraj tylko dane do edycji.
tdr
heh.. smile.gif no tak tylko jak to zrobić? przecież nie wiem, które pola użytkownik będzie chciał poprawić smile.gif
Kshyhoo
Nie umiesz pobrać danych do edycji?
tdr
Nie wiem, czy się rozumiemy do końca, dlatego może bardziej postaram się zilustrować problem.. Chodzi o to, że gościu się loguje do serwisu, W czasie rejestracji nie podał nazwiska i teraz uzupelnia tylko pole Nazwisko, a reszta pozostaje pusta. moje zapytanie UPDATE wygląda powiedzmy tak, że ma wszystkie pola pobierać, nawet te które nie uzupełniał, czyli automatycznie zostaną wykasowane dane z bazy tych pol, które nie zostały uzupełnine (pusty łańcuch znaków). I teraz brzmi moje pytanie tak: Jak to zrobić, aby dynamicznie kod SAM "domyślał się", że tylko ma poprawić te pola, które zostały wypełnione.
Kshyhoo
Już napisałem:
1. Albo pobierz do formularza tylko te dane, które chcesz edytować.
2. Albo pobierz wszystkie dane, wrzuć do formularza - po edycji wciąż będą wszystkie dane.
Przy zapisie sprawdzaj, czy dane nie są puste...
Eluzive
Hmm... tak na szybko wymyslilem cos takiego, nie wiem czy jeszcze Ci to potrzebne ale prosze:
  1. <?php
  2.  
  3. function aktualizuj($tablica=array()) {
  4. $nazwy = array("login", "haslo");
  5. $polaczenie = mysql_connect('localhost', 'root', '') or die('Nie udalo sie polaczyc z baza danych');
  6. $wybor = mysql_select_db('test') or die('Nie udalo sie wybrac bazy danych');
  7. $zapytanie = mysql_query('select * from tabela where id="'.$_POST['id'].'"') or die('Nie udalo sie pobrac rekordow z bazy danych');
  8. $wyniki = mysql_fetch_assoc($zapytanie);
  9. $wlscTablica = array("login"=>'', "haslo"=>'');
  10. for($i=0; $i<count($tablica); $i++) {
  11. if(!empty($tablica[$nazwy[$i]])) {
  12. $wlscTablica[$nazwy[$i]] = $tablica[$nazwy[$i]];
  13. } else {
  14. $wlscTablica[$nazwy[$i]] = $wyniki[$nazwy[$i]];
  15. }
  16. }
  17. var_dump($wlscTablica);
  18. }
  19.  
  20. $tablica = array("login"=>$_POST['login'], "haslo"=>$_POST['haslo']);
  21. aktualizuj($tablica);
  22. ?>


id proponuje podac np. w polu hidden w formularzu lub pobrac nie z posta tylko z sesji, bo rozumiem, ze jesli ktos moze sobie edytowac swoje dane to jest zalogowany.

Mam nadzieje, ze jakos to pomoglo i ze o to chodzilo wink.gif .

Pzdr

PS. Tutaj jakby co to plik html:
  1. <form action="uzupelnij.php" method="post">
  2. Login: <input type="text" name="login"/><br/>
  3. Haslo: <input type="password" name="haslo"/><br/>
  4. <input type="submit" value="Wyslij"/>
  5. </form>
tdr
No, badzo mi pomogłeś Eluzive, wlasnie o to mi chodzilo dzieki bardzo smile.gif
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.