Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Wyświetlanie rekordów w formularzu
Forum PHP.pl > Forum > Przedszkole
Posio
Siemka!

Musze zrobić tak, aby dana z tabeli wyświetlała mi się w formularzu. A mianowicie, mam w bazie danych nazwy odbiorców (20 osócool.gif i chciał bym zrobić edycję danych tych odbiorców. Widze to tak:

Formularz wyboru :

  1. <form action="panel.php?odbiorcy" method="post">
  2. <select name="w_odbiorcy">
  3. <option>Odbiorca 1</option>
  4. <option>Odbiorca 2</option>
  5. */i tak dalej.../*
  6. </select>
  7. </form><input type="submit" name="z_odbiorce" value="Zatwierdź" /></center>


Po kliknięciu przycisku zatwierdź, wyskakuje mi następny formularz z uzupełnionymi danymi użytkownika, którego wybrałem. Mam koncepcję, lecz nie wiem jak się za to zabrać. Dopiero zaczynam walkę z PHP i MYSQL więc proszę o pomoc. Z góry dzięki.
mortus
Najpierw zapytaniem
  1. SELECT id, nazwa FROM odbiorcy

pobierasz id i nazwę wszystkich odbiorców. Następnie w pętli odczytujesz wiersze i uzupełniasz pola option:
  1. $select = '<select name="w_odbiorcy">';
  2. while($wiersz = mysql_fetch_assoc($wyniki)) {
  3. $select .= '<option value="'.$wiersz['id'].'">'.$wiersz['nazwa'].'</option>';
  4. }
  5. $select .= '</select>';
  6. // no i wyświetlamy listę rozwijaną
  7. echo $select;

Po wybraniu odbiorcy i naciśnięciu przycisku Zatwierdź w tablicy $_POST['w_odbiorcy'] będziemy mieć id odbiorcy. Teraz możemy pobrać jego dane
  1. $sql = 'SELECT * FROM odbiorcy WHERE id = '.$_POST['w_odbiorcy'];

Mamy już wszystkie dane odbiorcy, tworzymy formularz, gdzie id jest polem typu hidden, a pozostałe pola mogą być typu tekstowego. Wartości (atrybut value) uzupełniamy danymi z bazy. Po zatwierdzeniu formularza wykonujemy aktualizację (dane pobieramy jak poprzednio z tablicy $_POST i zapisujemy do bazy danych za pomocą poniższego zapytania).
  1. UPDATE odbiorcy SET name = $_POST['name'], ... WHERE id = $_POST['id']

W zarysie tak mniej więcej ma to wyglądać. Spróbuj na początek utworzyć pierwszy formularz, a później się zobaczy.
Mogą Ci się przydać: mysql_connect(), mysql_select_db(), mysql_query(), mysql_num_rows(), mysql_fetch_assoc(). Polecam zapoznać się z tymi funkcjami i z przykładami umieszczonymi na stronach, do których prowadzą odnośniki.
Posio
ogarnąłem to bez problemu, troche krótszym i latwiejszym sposobem bez zabawy z ID ;D (chyba mialem jakąś zaćmę, bo rozwiązanie było banalne) Teraz mam problem zusuwaniem rekordów z bazy danych. Mój kod wygląda tak:

  1.  
  2.  
  3. ..........
  4. <input type="submit" name="delete" disabled="disabled" value="Usuń odbiorcę" />
  5. ..........
  6.  
  7.  
  8.  
  9. if(isset($_POST['delete'])) {
  10. $sq2 = "DELETE FROM `odbiorcy` WHERE `nazwa_odbiorcy`='$odbiorca'";
  11. $result2 = mysql_query($sq2);
  12. header('Refresh: 1; panel.php?odbiorcy');
  13. }
  14.  

i coś mi tu nie działa, ale nie wiem co, po prostu nie usuwa tego odbiorcy. (Nic sie nie dzieje)

Dodam że funkcja mysql_query zwraca mi wartość TRUE
nospor
No to warunek nie jest spełniony. Czy tak cięzko sprawdzić, czy wszystkie dane/zmiennej się zgadzają?
Posio
ehhh... wszystko sie zgadza. W zapytaniu jest tylko jedna zmienna, która działa prawidłowo... Nie wiem co może być jeszcze nie tak ? tabela tak samo...
nospor
Jakoś ci nie wierzę na słowo.

echo $sql2;
co zwraca?
Posio
  1.  
  2. echo $sq2;


zwraca mi tekst:

DELETE FROM `odbiorcy` WHERE `nazwa_odbiorcy`=''
nospor
Brak słów :/

Zadałem ci proste polecenie: sprawdź zmienne. Na co ty mi odpisujesz: wszystko się zgadza.

Z racji, że ci nie wierze karze ci zrobić echo $sql. Ty pokazujesz wynik tego prostego kodu i widać jak wół ze zmienna odbiorcy jednak się nie zgadza

zamykam
Gdy przemyślisz sprawę i zaprzestaniesz kłamać w żywe oczy zapraszam na PW. Forum to nie zabawa w kotka i myszkę.

edit: temat otwieram.
Autora wątku proszę o zapoznanie się z tematem:
Temat: Jak poprawnie zada pytanie
i zastosowanie do podanych tam wskazówek, między innymi wyświetlania wszystkich błędów i sprawdzania zmiennych
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.