Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z dodawaniem danych do bazy poprzez formularz
Forum PHP.pl > Forum > Przedszkole
miki1612
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
valkirek
A moze powiesz co nie dziala? Albo jaki jest blad? o ile je wyswietlasz...

P.S. Nie ma czegos takiego jak $_REQUES
miki1612
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.
SaMi
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">
valkirek
stripslashes_dep czy stripslashes_deep?

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

duzo tych literowek biggrin.gif
miki1612
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
SaMi
Podaj pełną treść zwróconego błędu a nie tylko fragemnt.
miki1612
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.
valkirek
pokaz jak to poprawiles
miki1612
  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. ?>
valkirek
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
aras785
Pisze jak byk gdzie jest błąd, a Ty się zastanawiasz...
miki1612
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
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.