Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Problem z dodawaniem danych do bazy poprzez formularz
miki1612
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 2.05.2010

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


Witam. Byłem dosyć długo nieobecny na forum ale od początku zacząłem się uczyć PHP/MySQL. Zakupiłem książkę i przerabiam zawarty w niej kod. Przepisałem wszystko idealnie, praktycznie słowo w słowo i kod niestety mi nie działa :/ Sprawdzałem czy nie popełniłem jakiegoś błędu i nic. Sam również próbowałem zmieniać niektóre rzeczy(ostatnio też miałem problem z kodem ale poradziłem sobie) ale teraz niestety już nie mam pojęcia o co w tym wszystkim chodzi. Poprzez formularz mają być dodawane kawały do bazy danych. Poprzez konsole MySQL udaje mi się dodawać do bazy danych- poprzez formularz już niestety nie. Oto pliki:

form.html
  1. <p><a href="?addjoke">Dodaj kawał</a></p>
  2. <p>Oto wszystkie kawały przechowywane w bazie danych:</p>
  3.  
  4. <form action "?" method="post">
  5. <div>
  6. <label for="joketext">Wpisz treść kawału:</label>
  7. <textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
  8. </div>
  9. <div><input type="submit" value="Dodaj"/></div>
  10. </form>



jokes.php
  1. <?php
  2. {
  3. function stripslashes_deep($value)
  4. {
  5. $value = is_array($value) ?
  6. array_map('stripslashes_deep', $value) :
  7. stripslashes($value);
  8.  
  9. return $value;
  10.  
  11. }
  12.  
  13. $_POST = array_map('stripslashes_dep', $_POST);
  14. $_GET = array_map('stripslashes_dep', $_GET);
  15. $_COOKIE = array_map('stripslashes_dep', $_COOKIE);
  16. $_REQUES = array_map('stripslashes_dep', $_REQUES);
  17. }
  18.  
  19. if (isset($_GET['addjoke']))
  20. {
  21. include'form.html';
  22. exit();
  23. }
  24.  
  25. $link = mysqli_connect('localhost', 'test', 'test');
  26. if(!$link)
  27. {
  28. $error = 'Nie można się połączyć z serwerem bazy danych.';
  29. include 'error.html';
  30. exit();
  31. }
  32.  
  33. if(!mysqli_set_charset($link, 'utf8'))
  34. {
  35. $output = 'Nie można ustalić kodowania dla połączenia z bazą danych.';
  36. include 'output.html';
  37. exit();
  38. }
  39.  
  40. if(!mysqli_select_db($link, 'ijdb'))
  41. {
  42. $output = 'Nie znaleziono bazy danych ijdb';
  43. include 'output.html';
  44. exit();
  45. }
  46.  
  47.  
  48. if(isset($_POST['joketext']))
  49. {
  50. $joketext = mysqli_real_escape_string($link, $_POST['joketext']);
  51. $sql = 'INSERT INTO kawal SET
  52. tekstkawalu="' .$joketext . '",
  53. datakawalu=CURDATE()';
  54. if(!mysqli_query($link, $sql))
  55. {
  56. $error = 'Błąd w trakcie dodawania kawału: '. mysqli_error($link);
  57. include 'error.html';
  58. exit();
  59. }
  60.  
  61. header('Location: .');
  62. exit();
  63.  
  64. }
  65.  
  66. $result = mysqli_query($link, 'SELECT tekstkawalu FROM kawal');
  67. if(!$result)
  68. {
  69. $error = 'Błąd odczytu kawału: '. mysqli_error($link);
  70. include 'error.html';
  71. exit();
  72. }
  73.  
  74. while($row = mysqli_fetch_array($result))
  75. {
  76. $jokes[] = $row['tekstkawalu'];
  77. }
  78.  
  79. include 'jokes.html';
  80.  
  81. ?>



Czy ktoś wie lub ma jakiś pomysł dlaczego może to nie działać?


Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
valkirek
post
Post #2





Grupa: Zarejestrowani
Postów: 117
Pomógł: 6
Dołączył: 24.07.2013

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


A moze powiesz co nie dziala? Albo jaki jest blad? o ile je wyswietlasz...

P.S. Nie ma czegos takiego jak $_REQUES
Go to the top of the page
+Quote Post
miki1612
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 2.05.2010

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


Przepraszam, to literówka... Chodzi o to, że nie zgłasza mi żadnego błędu i nie dodaje do bazy danych kawałów, które wpisuję w formularzu i chcę je dodać poprzez opcję "dodaj" w formularzu w pliku form.
Go to the top of the page
+Quote Post
SaMi
post
Post #4





Grupa: Zarejestrowani
Postów: 173
Pomógł: 14
Dołączył: 27.03.2004
Skąd: Białystok

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


Pierwsza żecz jaka rzuca się w oczy
to:
  1. <form action "?" method="post">

nie powinno wyglądać tak ?
  1. <form action="jokes.php" method="post">


Ten post edytował SaMi 24.07.2013, 17:06:24


--------------------
Zapraszam na spływy kajakowe rzekami podlasia www.splywy-kajakiem.pl
Go to the top of the page
+Quote Post
valkirek
post
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 6
Dołączył: 24.07.2013

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


stripslashes_dep czy stripslashes_deep?

"' .$joketext . '" powinno byc raczej '".$joketext."' czyli najpierw apostrofy a pozniej cudzylowy

duzo tych literowek biggrin.gif
Go to the top of the page
+Quote Post
miki1612
post
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 2.05.2010

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


Poprawiłem a jeśli chodzi o apostrofy to tak było w książce... Poprawiłem natomiast zgodnie z sugestiami i teraz w tych linijkach poprawionych wyrzuca bład:
Parse error: syntax error, unexpected '"' w pliku jokes.php
Go to the top of the page
+Quote Post
SaMi
post
Post #7





Grupa: Zarejestrowani
Postów: 173
Pomógł: 14
Dołączył: 27.03.2004
Skąd: Białystok

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


Podaj pełną treść zwróconego błędu a nie tylko fragemnt.

Ten post edytował SaMi 24.07.2013, 17:19:45


--------------------
Zapraszam na spływy kajakowe rzekami podlasia www.splywy-kajakiem.pl
Go to the top of the page
+Quote Post
miki1612
post
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 2.05.2010

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


Parse error: syntax error, unexpected '"' in C:\xampp\htdocs\php\addjoke\jokes.php on line 58 gdzie 58 linijka odpowiada właśnie za poprawiony błąd z apostrofami i cudzysłowami.
Go to the top of the page
+Quote Post
valkirek
post
Post #9





Grupa: Zarejestrowani
Postów: 117
Pomógł: 6
Dołączył: 24.07.2013

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


pokaz jak to poprawiles
Go to the top of the page
+Quote Post
miki1612
post
Post #10





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 2.05.2010

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


  1. <?php
  2. {
  3. function stripslashes_deep($value)
  4. {
  5. $value = is_array($value) ?
  6. array_map('stripslashes_deep', $value) :
  7. stripslashes($value);
  8.  
  9. return $value;
  10.  
  11. }
  12.  
  13. $_POST = array_map('stripslashes_deep', $_POST);
  14. $_GET = array_map('stripslashes_deep', $_GET);
  15. $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
  16. $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
  17. }
  18.  
  19. if (isset($_GET['addjoke']))
  20. {
  21. include'form.html';
  22. exit();
  23. }
  24.  
  25. $link = mysqli_connect('localhost', 'test', 'test');
  26. if(!$link)
  27. {
  28. $error = 'Nie można się połączyć z serwerem bazy danych.';
  29. include 'error.html';
  30. exit();
  31. }
  32.  
  33. if(!mysqli_set_charset($link, 'utf8'))
  34. {
  35. $output = 'Nie można ustalić kodowania dla połączenia z bazą danych.';
  36. include 'output.html';
  37. exit();
  38. }
  39.  
  40. if(!mysqli_select_db($link, 'ijdb'))
  41. {
  42. $output = 'Nie znaleziono bazy danych ijdb';
  43. include 'output.html';
  44. exit();
  45. }
  46.  
  47. if(isset($_POST['joketext']))
  48. {
  49. $joketext = mysqli_real_escape_string($link, $_POST['joketext']);
  50. $sql = 'INSERT INTO kawal SET
  51. tekstkawalu='".$joketext."',
  52. datakawalu=CURDATE()';
  53. if(!mysqli_query($link, $sql))
  54. {
  55. $error = 'Błąd w trakcie dodawania kawału: '. mysqli_error($link);
  56. include 'error.html';
  57. exit();
  58. }
  59.  
  60. header('Location: .');
  61. exit();
  62.  
  63. }
  64.  
  65. $result = mysqli_query($link, 'SELECT tekstkawalu FROM kawal');
  66. if(!$result)
  67. {
  68. $error = 'Błąd odczytu kawału: '. mysqli_error($link);
  69. include 'error.html';
  70. exit();
  71. }
  72.  
  73. while($row = mysqli_fetch_array($result))
  74. {
  75. $jokes[] = $row['tekstkawalu'];
  76. }
  77.  
  78. include 'jokes.html';
  79.  
  80. ?>
Go to the top of the page
+Quote Post
valkirek
post
Post #11





Grupa: Zarejestrowani
Postów: 117
Pomógł: 6
Dołączył: 24.07.2013

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


Sorki moje niedopatrzenie bo jestem nauczony dawac zapytania w cudzyslowiach czyli miales dobrze
  1. $sql = 'INSERT INTO kawal SET
  2. tekstkawalu="'.$joketext.'",
  3. datakawalu=CURDATE()';


ja natomiast robie to tak

  1. $sql = "INSERT INTO kawal SET
  2. tekstkawalu='".$joketext."',
  3. datakawalu=CURDATE()";


masz 2 dzialajace przyklady i zobacz czy dodaje Ci ten rekord

edit bo juz usypiam:/ drugi przyklad jest prawidlowy i tak zrob i sprawdz

Ten post edytował valkirek 24.07.2013, 22:00:14
Go to the top of the page
+Quote Post
aras785
post
Post #12





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


Pisze jak byk gdzie jest błąd, a Ty się zastanawiasz...
Go to the top of the page
+Quote Post
miki1612
post
Post #13





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 2.05.2010

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


Zadziałał ale przykład z :
  1. $sql = 'INSERT INTO kawal SET
  2. tekstkawalu="'.$joketext.'"


czyli najpierw cudzysłów a potem apostrofa. Chyba już wiem czemu wcześniej mi to nie chciało zadziałać. Otóż rozchodzi się o atrybut action. Był tam podany pytajnik(zrobiłem tak, jak zostało to pokazane w książce). Nie kierowało do właściwego pliku bo gdzie właściwie miało kierować. Ale już dodaje do bazy danych także dziękuję za wyrozumiałość i pomoc.

Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 04:26