Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem ze skryptem dodającym i wyświetlajacym dane do bazy
Forum PHP.pl > Forum > Przedszkole
ShamY
Witam,

znalazłem na internecie kod pozwalający dodawać dane do bazy MySQL i je wyświetlać, ale coś niestety nie działa, bo wyskakuje mi pusta, biała strona. Tabela jest utworzona w bazie. Sam jestem za słaby w PHP, by napisać coś "swojego".

  1. <?php
  2. $host = "---";
  3. $user = "---";
  4. $password = "---";
  5. $dbName = "---";
  6.  
  7. $polacz = mysql_connect($host, $user, $password) or die(mysql_error());
  8. $db = mysql_select_db($dbName, $polacz) or die(mysql_error());
  9.  
  10. if (isset($_POST[?jakies_pole?]) && trim($_POST[?jakies_pole?]) != ?) {
  11. $jakies_pole = $_POST[?jakies_pole?];
  12. $sql = "INSERT into tabela_testowa (nazwa_kolumny) VALUES (?$jakies_pole?)";
  13. $rezultat = mysql_query($sql, $polacz) or die(mysql_error());
  14. }
  15.  
  16. $sql = "SELECT nazwa_kolumny FROM tabela_testowa";
  17. $rezultat = mysql_query($sql, $polacz) or die(mysql_error());
  18. while ($lista = mysql_fetch_array($rezultat)) {
  19. echo $lista[?nazwa_kolumny?]. "<br />";
  20. }
  21.  
  22. echo <<<FORMULARZ
  23. <br /> Dodaj wpis: <br />
  24. <form action = "prog.php" method = "post">
  25.   <input type = "text" name = "jakies_pole" maxlength="20" size = "10">
  26.   <input type = "submit" value = "Dodaj wpis">
  27. </form>
  28. FORMULARZ;
  29. ?>
Kshyhoo
Dostosuj nazwę wątku do zasad (link w mojej sygnaturze).
Jakie błędy się wyświetlają (czy masz w ogóle włączone?)?
Generalny problem, to te ? zamiast '.
ShamY
Poprawiłem, tytuł wątku.
Nie mam w hostingu włączonych błędów niestety, stąd biała strona - a w opcjach serwera nie widziałem nigdzie możliwości włączenia - serwery OVH

Cytat(Kshyhoo @ 27.01.2018, 20:15:07 ) *
Generalny problem, to te ? zamiast '.


Poprawiłem też na ' ', ale bez skutku
  1. <?php
  2.  
  3. $host = '---';
  4. $user = '---';
  5. $password = '---';
  6. $dbName = '---';
  7.  
  8. $polacz = mysql_connect($host, $user, $password) or die(mysql_error());
  9. $db = mysql_select_db($dbName, $polacz) or die(mysql_error());
  10.  
  11. if (isset($_POST['jakies_pole']) && trim($_POST['jakies_pole']) != ?) {
  12. $jakies_pole = $_POST['jakies_pole'];
  13. $sql = "INSERT into tabela_testowa (nazwa_kolumny) VALUES ('$jakies_pole')";
  14. $rezultat = mysql_query($sql, $polacz) or die(mysql_error());
  15. }
  16.  
  17. $sql = "SELECT nazwa_kolumny FROM tabela_testowa";
  18. $rezultat = mysql_query($sql, $polacz) or die(mysql_error());
  19. while ($lista = mysql_fetch_array($rezultat)) {
  20. echo $lista['nazwa_kolumny']. "<br />";
  21. }
  22.  
  23. echo <<<FORMULARZ
  24. <br /> Dodaj wpis: <br />
  25. <form action = "prog.php" method = "post">
  26.   <input type = "text" name = "jakies_pole" maxlength="20" size = "10">
  27.   <input type = "submit" value = "Dodaj wpis">
  28. </form>
  29. FORMULARZ;
  30. ?>
Kshyhoo
Cytat(ShamY @ 27.01.2018, 20:24:07 ) *
Poprawiłem, tytuł wątku.
Nie mam w hostingu włączonych błędów niestety, stąd biała strona - a w opcjach serwera nie widziałem nigdzie możliwości włączenia - serwery OVH



Poprawiłem też na ' ', ale bez skutku

Naprawdę?
  1. != ?) {

Dodaj na początku skryptu:
  1. ini_set( 'display_errors', 'on' );
  2. error_reporting( E_ALL );
ShamY
Pokazuję się:
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/pogodakrkj/www/prog.php:12 Stack trace: #0 {main} thrown in /home/pogodakrkj/www/prog.php on line 12

12 i 13 linijka to:
  1. $polacz = mysql_connect($host, $user, $password) or die(mysql_error());
  2. $db = mysql_select_db($dbName, $polacz) or die(mysql_error());
php11
Jaką masz wersję PHP?
Jeśli 7 użyj mysqli
ShamY
Tak, wersja 7.2 - nie potrafię użyć mysqli
viking
Nie potrafisz użyć bo? To użyj pdo. W stopce mam wytłumaczone. Poza tym twój kod w obecnej formie jest dziurawy. https://prophp.pl/advice/show/25/jak_zabezp...ql_injection%3F
php11
Zrobiłem, jak umiałem.
Zwróć uwagę, czy nie jest dziurawy, jak pisał Kolega wyżej...

  1. <?php
  2.  
  3. // plik formularz.php
  4. // zmieniłem POST na GET by było widać, co przesyłam
  5. // niestety nie czyści zmiennych po wysłaniu. F5 wysyła kolejne...
  6.  
  7.  
  8.  
  9. ini_set( 'display_errors', 'on' );
  10. error_reporting( E_ALL );
  11.  
  12. $host = 'localhost';
  13. $user = '--------------';
  14. $password = '--------------';
  15. $dbName = '--------------';
  16.  
  17.  
  18. $baza = mysqli_connect(
  19. $host,
  20. $user,
  21. $password,
  22. $dbName
  23. );
  24.  
  25. if (!$baza) {
  26. printf("Brak połączenia z serwerem MySQL. Kod błędu: %s\n", mysqli_connect_error());
  27. } else {
  28. echo 'baza ok <br><br>';
  29. }
  30.  
  31. if (isset($_GET['submit']) && trim($_GET['jakies_pole']) != '') {
  32. $toDodaje = $_GET['jakies_pole'];
  33. $dodaj = mysqli_query($baza,"
  34. INSERT INTO tabela_testowa
  35. SET jakies_pole = '$toDodaje'
  36. ");
  37. if($dodaj) {
  38. echo "Rekord został dodany poprawnie <br><br>";
  39. $_GET['jakies_pole'] = '';
  40. $_GET['submit'] = '';
  41.  
  42. } else {
  43. echo "Błąd nie udało się dodać nowego rekordu <br><br>";
  44. }
  45. }
  46.  
  47.  
  48. $rezultat = mysqli_query($baza,"
  49. SELECT *
  50. FROM tabela_testowa
  51. ");
  52.  
  53. while ($lista = mysqli_fetch_array($rezultat)) {
  54. // echo '<pre>';print_r($lista);echo '</pre>';
  55. echo $lista['id']. ' - ';
  56. echo $lista['jakies_pole']. '<br>';
  57.  
  58. }
  59.  
  60. ?>
  61. <br /> Dodaj wpis: <br />
  62. <form action = "formularz.php" method = "get">
  63. <input type = "text" name = "jakies_pole">
  64. <input type = "submit" name="submit" value = "Dodaj wpis">
  65. </form>
  66.  
  67.  
ShamY
Bardzo dziękuję :-) Spróbuje to jakoś zabezpieczyć.
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.