Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Formularz dodawania rekordu do bazy, Przy każdym uruchomieniu formularza dodawany jest pusty rekord
Lukasso
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 11.09.2013

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


Zmobilizowałem się wreszcie do nauki php od początku.

Stworzyłem formularz dodawania danych do bazy. Po mniejszych i większych perturbacjach udało mi się połączyć z bazą i zapisać w niej dane z formularza.
PROBLEM: po każdym otwarciu strony z formularzem od razu pojawia się komunikat o poprawnym dodaniu rekordu do bazy i rekord taki zostaje dodany, oczywiście pusty, bo pole formularza były puste. Jak temu zapobiec i spowodować dodawanie danych dopiero po naciśnięciu submit? Czy przesyłanie danych w ten sposób jest bezpieczne, czy powinienem mieć w nawyku dodawanie jakiegoś zabezpieczenia? Lepiej to wiedzieć i niech wejdzie w krew na początku nauki. Może jeszcze jakieś uwagi doświadczonych programistów?

Kod:
  1. <?php require ('config.php'); // wstawiamy dane configuracyjne do polaczenia z baza
  2.  
  3. // tworzymy krotkie nazwy zmiennych otrzymanych z formularza
  4. $marka=$_POST['marka'];
  5. $model=$_POST['model'];
  6. $kolor=$_POST['kolor'];
  7. $pojemnosc=$_POST['pojemnosc'];
  8. $paliwo=$_POST['paliwo'];
  9.  
  10. // przekazujemy wartosci zmiennych do odpowiednich pol w bazie danych
  11. // WSTAW DO tabeli test (kolumny w bazie) WARTOSCI (wartosci zmiennych)
  12. $zapytanie = "INSERT INTO test (marka, model, kolor, pojemnosc, paliwo) VALUES ('$marka','$model','$kolor','$pojemnosc','$paliwo')" or die(mysql_error());
  13. // wykonaj zapytanie
  14. $wynik = mysql_query($zapytanie);
  15. // komunikat potwierdzający poprawne zapisanie danych w bazie
  16. if ($wynik) {
  17. echo 'Prawidłowo dodano do bazy danych';
  18. }
  19.  
  20. mysql_close($db);
  21. ?>
  22.  
  23. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  24. <html>
  25. <head>
  26. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  27. <title>Untitled Document</title>
  28. </head>
  29.  
  30. <body>
  31. <h3>DODAJ NOWY SAMOCHÓD DO BAZY</h3>
  32.  
  33. <!-- FORMULARZ HTML WPROWADZANIA DANYCH -->
  34. <form name="form1" method="post" action="samochody-dodaj.php">
  35. marka: <input name="marka" type="text" size="20">
  36. model: <input type="text" name="model" size="20">
  37. kolor: <input type="text" name="kolor" size="20">
  38. pojemność: <input type="text" name="pojemnosc" size="20">
  39. paliwo: <input type="text" name="paliwo" size="20">
  40. <input value="dodaj samochód" type="submit">
  41. </form>
  42. <!-- KONIEC FORMULARZA -->
  43.  
  44. </br>
  45. <a href="samochody.php">ť lista samochodów</a>
  46. </body>
  47. </html>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Lukasso
post
Post #2





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 11.09.2013

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


Cytat
Zauważ że mój kod sprawdza tylko czy formularz został wcześniej wysłany

alex19 - dokładnie o to mi chodziło, dzięki, problem został rozwiązany.
Źle się wyraziłem mówiąc "metoda podręcznikowa" miałem na myśli uniwersalne rozwiązanie, które można zastosować bez modyfikacji w każdym formularzu. Użyłeś wartości ze zmiennej "marka", a zmienna o tej nazwie może nie występować w innym formularzu. W jednej z książek z których się uczę znalazłem rozwiązanie. Działa dokładnie tak jak Twój przykład, tylko zamiast zmiennej "marka" użyto wartości z ukrytego pola "submitted" umieszczonego na końcu formularza. Dzięki temu nie trzeba za każdym razem zmieniać nazwy zmiennej na taką, która jest w danym formularzu. O takie, uniwersalne rozwiązanie mi chodziło. Dzięki za pomoc.

Tak to wygląda (może przyda się komuś, kto się uczy tak jak ja):
  1. if (isset($_POST['submitted'])) {
  2. require ('config.php');

i w formularzu:
  1. <input type="hidden" name="submitted" value="TRUE"/>

Cytat
Polecam zajrzeć do manuala, a nie zadawac tak głupie pytania

com - właśnie zacząłem naukę php praktycznie od "zera". Uważam, że na tym etapie żadne pytanie nie jest głupie. Manual na pewno jest super bazą wiedzy, ale na początku trzeba zrozumieć na czym polega to całe php, bo tylko mając jakąś podstawową wiedzę na ten temat można umiejętnie z manuala korzystać. Dla mnie na to jeszcze za wcześnie. Proponuję, żeby ktoś kto nie ma ochoty pomóc, powstrzymał się od nic nie wnoszących komentarzy. Dzięki za link do "biblii", znam go.
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 05:05