Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP i MySQL]Dane z formularza dodawane do taneli.
Forum PHP.pl > Forum > Przedszkole
Gość_Gość
Mam dwa problemy.

Wiązą sie one z dodawaniem rekordów do tabeli w MySQL. Problem polega na tym, że:
Kod
CREATE TABLE news (id integer NOT NULL, tytul char(30), tresc blob, autor char(10), data date, PRIMARY KEY(id))";

przy tych ustawieniach tabeli, aby dodać coś do nie muszę użyć takieo kodu:
Kod
$dodaj = "INSERT INTO news(id, tytul, tresc, autor, data) VALUES ('5', 'kkk', 'kkkkkkc', 'kkkkk', '2005-01-14')";
, a wolałbym, aby id i data dodawały się automatycznie (czyli "id" jako następne liczby: 1,2,3,4 itp, a data jako aktualna data.
Mój drugi problem jest taki, że nie wiem jak napisać skrypt aby dane z formularza były dodawane jako nowy rekord. Oto skrypt formularza:
Kod
<FORM ACTION=adsnews.php METHOD=POST>
Tytuł:<INPUT TYPE=TEXT NAME=tytul><br>
Treść:<TEXTAREA NAME="tresc" ROWS="10" COLS="25"></TEXTAREA>
Autor:<INPUT TYPE=TEXT NAME=autor>
<INPUT TYPE="submit" VALUE="Wślij">
</FORM>


PS: Pierwszy "code" ma być skryptem obsługującym formularz.

Kermit.
Kuziu
co do ID
to w tabeli dodaj polu ID atrybut "auto_increment" a podczas dodawania wiersza
  1. $dodaj = "INSERT
  2. INTO news(id, tytul, tresc, autor, data) VALUES ('', 'kkk', 'kkkkkkc', 'kkkkk', '2005-01-14')";


pozostawiasz pole ID puste
Gość_zak
Musisz edytować strukturę tabeli pole id ustawić jako smalint (czy coś takiego) 4 podać usigned i autouzupełnianie. aarambo.gif
Kermit
Sprawa z ID już zalatwiona. Data też. Aż wstyd mi, że na to nie wpadłem wcześniej. Wystarczyło określić zmienną data w ten sposób:
  1. <?php
  2. $data = date(&#092;"Y-m-d\");
  3. ?>
. Potem tylko dodać zmienną do dodawania rekordu.

Co do formularza znalazłem taki skrypt na WEBHELP (obsługujący księgę gości, ale o podobne sprawy chodzi):

  1. <?
  2. if ($nick == '' or empty($nick) or $text == '' or empty($text)) {
  3. echo &#092;"<html>n<head>n<title>Blad</title>n</head>nn<body><h1 align=\"center\">Blad</h1>n<p>Nie wypelniles pola <b>NICK</b> i/lub <b>TRESC</b></p>\";
  4. echo &#092;"<a href=\"javascript:history.back()\">Powrot do formularza</a></body></html>\";
  5. }
  6.  
  7. $query = &#092;"insert into ksiega values (null, '$text', '$nick', \";
  8. if(isset($email)) {
  9. if (!ereg('^[-!#$%&'*+./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+.'.'[-!#$%&'*+./0-9=?A-Z^_`a-z{|}~]+$',$emil)) {
  10. echo &#092;"<html>n<head>n<title>Blad</title>n</head>nn<body><h1 align=\"center\">Blad</h1>n<p>Niepoprawny format emaila!</p>\";
  11. echo &#092;"<a href=\"javascript:history.back()\">Powrot do formularza</a></body></html>\";
  12. } else {
  13. $query .= &#092;"'$email', \";
  14. }
  15. }
  16.  
  17. if($www == &#092;"http://\") {
  18. $query .= &#092;"'', \";
  19. } else {
  20. $query .= &#092;"'$www', \";
  21. }
  22.  
  23. $host = &#092;"localhost\";
  24. $uzytkownik_bazy = &#092;"user\";
  25. $haslo_bazy = &#092;"tajne\";
  26. $nazwa_bazy = &#092;"baza\";
  27. if (!($mylink = mysql_connect($host, $uzytkownik_bazy, $haslo_bazy))) {
  28. echo &#092;"Nie udalo sie polaczyc z baza!\";
  29. }
  30. mysql_select_db($nazwa_bazy);
  31.  
  32. $data = date(&#092;"Y-m-d H:i:s\");
  33. $query .= &#092;"'$data')\";
  34. $result = mysql_query($query);
  35. if($result) {
  36. header(&#092;"Location: ksiega.php\");
  37. } else {
  38. echo &#092;"blad bazy!\";
  39. }
  40. ?>


Nie bedę sie bawił w sprawdzanie czy pole Treść i Tytuł jest wypełnione, a dopiero potem czy pole Autor jest wypełnione ... sprawdze to na początku skryptu biggrin.gif (o ile wszystko bedzie działało tongue.gif). Martwi mnie jedna rzecz. Autor tego skryptu poprostu używa zmiennych "$nazwa_pola_w_formularzu" niestety kiedy jak ja tak zrobie:
  1. <?php
  2.  
  3. $data = date(&#092;"Y-m-d\"); 
  4. $dodaj = &#092;"INSERT INTO news(id, tytul, tresc, autor, data) VALUES ('', '$tytul', '$tresc', '$autor', '$data')\";
  5. $result = mysql_query($dodaj);
  6. if (mysql_errno())
  7. { 
  8. die(&#092;"<BR>\" . mysql_errno() .\": \".mysql_error().\"<BE>\");
  9. }
  10.  
  11. ?>

To niestety mam w bazie puste pola (oprócz id i daty). Próbowałem też w taki sposób:
  1. <?php
  2.  
  3. $tytul= $_POST['tytul'];
  4. $tresc= $_POST['tresc'];
  5. $autor= $_POST['autor'];
  6. $data = date(&#092;"Y-m-d\"); 
  7. $dodaj = &#092;"INSERT INTO news(id, tytul, tresc, autor, data) VALUES ('', '$tytul', '$tresc', '$autor', '$data')\";
  8. $result = mysql_query($dodaj);
  9. if (mysql_errno())
  10. { 
  11. die(&#092;"<BR>\" . mysql_errno() .\": \".mysql_error().\"<BE>\");
  12. }
  13. ?>

Ale obawiam się, że w zły sposób uzywa $_POST.

PS: Nie proszę tu o podanie gotowego skryptu (gzieś chyba widzialem o to kłotnie), ale o nakierowanie na pewne pomocne dane.

Kermit
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.