ďťż

[php/mysql] Dodawanie danych z formularza

       

Podstrony


telcocafe

Witam

Staram sie napisac skrypt ktory dodaje jakies dane do bazydanych, narazie takie cos sklecilem

plik dodawanie.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <?php mysql_connect('localhost', 'user', 'haslo') or die('blad'); mysql_select_db('user') or die('blad'); if (isset($_POST['dodaj'])) { $jakistekst = $_POST['jakistekst']; $zapytanie = "INSERT INTO test ('tresc') VALUES ('$jakistekst')"; mysql_query($zapytanie); } ?> <body> <form action="dodawanie.php" method="post"> <input type="text" name="jakistekst" /> <input type="submit" name="dodaj" value="dodaj" /> </form> </body> </html>

http://iv.pl/images/96947946749415491333.png

i nie wiem co moze byc zle, zaden blad nie wyskakuje jednak dane sie nie dodaja...



Ten skrypt jest niebezpieczny. Filtruj dane z zewnątrz albo użyj mechanizm podpinania w MySQLi lub PDO.

Zamiast mysql_query($zapytanie) wstaw:mysql_query($zapytanie) or die('Query failed: ' . mysql_error());
To tylko prosty przykład. W przypadku błędu w zapytaniu lepiej poinformować o tym użytkownika w przyjazny sposób i zwrócić mu formularz z danymi (żeby ich nie utracił). Jeśli występuje błąd, wklej go na forum.

Na pierwszy rzut oka wszystko powinno działać. Sprawdź, czy w ogóle dochodzą dane z formularza:var_dump($_POST);

narazie sie nie skupiam nad zabezpieczaniem itp to zrobie pozniej jak cos i tak samo wyswietlanie bledu tez narazie nie potrzebuje :)
A co do sprawdzenia to wlasnie w tym sek ze chce dane z formularza dodac do rekordu bazy danych, skrypt php jak i formularz jest w jednym pliku i tak wlasnie chce zrobic a nie w dwoch np(formularz.html, dodaj.php) tylko poprostu w jednym chce wszystko i mam problem, bo jak robie w jednym to nie dziala mi, pisze ten kod co podalem wczesniej wyswietla sie formularz i przycisk dodaj, zero bledy ale gdy klikam zeby dodac dane z formularza nic sie nie dzieje, sprawdzam baze a rekord sie nie dodal i wlasnie jak to zrobic ?

tak wyglada formularz dodawania danych

http://iv.pl/images/60756967238842233635.jpg
Użytkownik fearseba edytował ten post 21 luty 2010, 17:12
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <?php error_reporting(E_ALL); mysql_connect('localhost', 'user', 'haslo') or die('blad'); mysql_select_db('user') or die('blad'); if (isset($_POST['dodaj'])) { echo '<div>Dane z formularza dotarły</div>'; var_dump($_POST); //Wyświetlamy całą zawartość $jakistekst = $_POST['jakistekst']; $zapytanie = 'INSERT INTO test (tresc) VALUES ('.$jakistekst.')'; if(!mysql_query($zapytanie)) { echo '<pre>'.mysql_error().'</pre>'; //Na wypadek błędu } } ?> <body> <form action="dodawanie.php" method="post"> <input type="text" name="jakistekst" /> <input type="submit" name="dodaj" value="dodaj" /> </form> </body> </html>Spróbuj teraz wysłać formularz. Napisz, co się wyświetla.
Użytkownik Ferrari edytował ten post 21 luty 2010, 17:31


taki blad wyskakuje :)

Dane z formularza dotarły array(2) { ["jakistekst"]=> string(19) "jakis tekst asadasd" ["dodaj"]=> string(5) "dodaj" } You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tekst asadasd)' at line 1

cos zle w skrypcie jest, ogolnie jak bys mogl to poprosilbym o najprostrzy skrypt zeby dodac dowolny tekst do bazy bez zbednych [ciach!] :P :)

Popraw linijkę na następującą:$zapytanie = 'INSERT INTO test (tresc) VALUES ("'.$jakistekst.'")';Mój błąd - przeoczyłem fakt, że wstawiasz ciąg tekstowy.

dzieki dziala :))

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.