Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie plików w formularzu
Forum PHP.pl > Forum > PHP
radziowie
Przekształciłem jeden ze swoich plików i tak powstało dodawanie plików. Teraz mam problem w linijce 72 i 78. Zmienna $opis jest nieznana. Dlaczego?

  1. <?php
  2. //stosować tylko do projektu do wyszukania błędów
  3. ini_set('display_errors','1');
  4. // usunąć po zakończeniu projektowania
  5. //załączenie plików
  6. include ('../meta.php');
  7. include ('../gora_logo.php');
  8. include ('./menu_admin.php');
  9. include ('../dodatki/bonus.php');
  10. polacz_baza();
  11. $data = date('Y-m-j');
  12. function add_file () {
  13. echo "<h1>INSTRUKCJE - DODAWANIE I WYŚWIETLANIE</H1>";
  14. echo '<form enctype="multipart/form-data" action="instrukcje.php" method="post">
  15. Tytuł instrukcji: <input type="text" name="tytul" /><br />
  16. Opis: <textarea name="opis" cols="50" rows="10"></textarea><br />
  17. Autor: <input type="text" name="wykladowca" /><br />
  18. <input type="hidden" name="MAX_FILE_SIZE" value="1240000" />
  19. Plik (max 1 MB):<input name="plik" type="file" />
  20.  
  21.  
  22. <input type="submit" name="submit" value="wyślij plik" />
  23. </form>';
  24. }
  25.  
  26. ?>
  27. <table bgcolor="white" width="900" cellspacing="0" cellpadding="10" border="1" align="center">
  28. <tr>
  29. <td colspan="2" align="center" valign="middle">
  30.  
  31. <?php
  32. /////////////////////////////////////////
  33. /////////////////////////////////////////
  34. //SPRAWDZIĆ DANE WYSYŁANE PRZEZ FORMULARZ
  35. /////////////////////////////////////////
  36. /////////////////////////////////////////
  37.  
  38. //sprawdzenie czy istnieją zmienne
  39. if (isset($_POST['tytul']) && isset($_POST['opis']) && isset($_POST['wykladowca']) && isset($_POST['plik'])) {
  40. //mysql_real_escape_string Dodaje znaki unikowe w łańcuchu znaków do użycia w instrukcji SQL, trim wycina spacje
  41. $tytul = mysql_real_escape_string(trim($_POST['tytul']));
  42. $opis = mysql_real_escape_string(trim($_POST['opis']));
  43. $wykladowca = mysql_real_escape_string(trim($_POST['wykladowca']));
  44. $plik = $_POST['plik'];
  45.  
  46.  
  47.  
  48.  
  49. }
  50. //sprawdza czy istnieje zmienna$_POST['submit'], czyli czy nastąpiło wysłanie danych
  51. if (isset($_POST['submit'])) {
  52. //dodawanie danych do bazy
  53. $plik_tmp = $_FILES['plik']['tmp_name'];
  54. $plik_nazwa = $_FILES['plik']['name'];
  55. $plik_rozmiar = $_FILES['plik']['size'];
  56. $plik = $plik_nazwa;
  57. if(is_uploaded_file($plik_tmp)) {
  58. move_uploaded_file($plik_tmp, "../upload/$plik_nazwa");
  59. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  60. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
  61. }
  62. $zapytanie = "INSERT INTO instrukcje VALUES (NULL, '".$tytul."', '".$opis."', '".$wykladowca."', '".$plik."')";
  63. $result = mysql_query($zapytanie);
  64. }
  65. //sprawdzenie czy istnieją zmienne
  66. if (isset($_GET['co']) && isset($_GET['id']) && $_GET['co'] == 'skasuj') {
  67. $wynik = mysql_query("DELETE FROM instrukcje WHERE id = '".$_GET['id']."'");
  68. add_file();
  69. //sprawdzenie czy istnieją zmienne
  70. } elseif (isset($_POST['co']) && $_POST['co'] == 'popraw') {
  71. if ($_POST['tytul'] && $_POST['opis'] && $_POST['wykladowca'] && $_POST['plik']) {
  72. $popraw = mysql_query("UPDATE instrukcje SET tytul = '".$_POST['tytul']."', opis = '".$_POST['opis']."', wykladowca = '".$_POST['wykladowca']."'
  73. , plik = '".$_POST['plik']."'
  74. WHERE id = '".$_POST['id']."';")
  75. $wynik = mysql_query($popraw);
  76. } elseif (!$tytul || !$opis || !$wykladowca || !$plik) {
  77. echo '<b>Wpis nie został zaktualizowany. Przynajmniej jedno z pól nie zostało wypełnione.<br /> Popraw to!</b><br />';
  78. }
  79. add_file();
  80.  
  81. }
  82. //sprawdzenie czy istnieją zmienne
  83. elseif (isset($_GET['co']) && $_GET['co'] == 'edytuj') {
  84. $edycja = mysql_query("SELECT * FROM instrukcje WHERE id = '".$_GET['id']."';");
  85. $rekord = mysql_fetch_assoc($edycja);
  86. $nrid = $rekord['id'];
  87. $tytul = $rekord['tytul'];
  88. $opis = $rekord['opis'];
  89. $wykladowca = $rekord['wykladowca'];
  90. $plik = $rekord['plik'];
  91. echo "<table border=\"1\">
  92. <tr>
  93. <td width=\"120\"><form action=\"instrukcje.php\" method=\"post\">
  94. nr id: ".$nrid."<input type=\"hidden\" name=\"co\" value=\"popraw\">
  95. <input type=\"hidden\" name=\"id\" value=\"".$nrid."\"><br /></td>
  96. </tr><tr>
  97. Tytuł:<input type=\"text\" name=\"tytul\" value=\"".htmlspecialchars($tytul)."\"><br /></td>
  98. </tr><tr>
  99. <td width=\"120\">Treść wiadomości:<textarea name=\"text\" cols=\"50\" rows=\"10\">".htmlspecialchars($opis)."</textarea><br /></td>
  100. </tr><tr>
  101. <td width=\"120\">Autor:<input type=\"number\" name=\"autor\" min=\"0\" max=\"7\" value=\"".htmlspecialchars($wykladowca)."\"><br /></td>
  102. </tr><tr>
  103. <td>Data: ".$plik."</td>
  104. </tr><tr>
  105. <td align=\"center\"><input type=\"submit\" name =\"popraw\" value=\"popraw\"><br />
  106. </form></td>
  107. </tr>
  108. </table>";
  109. //sprawdza czy nie istnieje zmienna $_GET['co'], jeśli nie istnieje wtedy wyświetlany jest funkcja add_news(), czyli formularz
  110. } elseif (!isset($_GET['co'])) {
  111. add_file();
  112. }
  113.  
  114. $wynik = mysql_query("SELECT * FROM instrukcje ORDER BY id DESC;") or
  115. die ("zle polecenie");
  116. //liczba rekordów
  117.  
  118. $ile = mysql_num_rows($wynik);
  119. echo "Znaleziono: ".$ile." rekordów";
  120. echo "<table border=\"1\" width=\"750\"><tr><td width=\"30\">Nr. ID</td><td width=\"100\">Tytuł</td><td width=\"400\">Opis</td>
  121. <td width=\"10\">Wykladowca</td>
  122. <td>Plik</td>
  123. <td width=\"50\">Usuwanie
  124. </td><td>Edytowanie</td></tr>";
  125. //wyświetlanie danych z bazy komórka po komórce
  126.  
  127. WHILE ($rekord = mysql_fetch_assoc ($wynik)) {
  128. $nrid = $rekord['id'];
  129. $tytul = $rekord['tytul'];
  130. $opis = $rekord['opis'];
  131. $wykladowca = $rekord['wykladowca'];
  132. $plik = $rekord['plik'];
  133.  
  134. echo "<tr><td width=\"30\">".$nrid."</td><td width=\"100\">".stripslashes($tytul)."</td>
  135. <td width=\"40\">".stripslashes($opis)."</td>
  136. <td width=\"10\">".stripslashes($wykladowca)."</td>
  137. <td width=\"120\">".$plik."</td>
  138. <td><a href=\"instrukcje.php?co=skasuj&amp;id=$nrid\">usuń</a></td><td>
  139. <a href=\"instrukcje.php?co=edytuj&amp;id=$nrid\">edytuj</a></td></tr>";
  140. }
  141. echo "</table>";
  142.  
  143.  
  144. ?>
  145. </tr>
  146. </table>
  147. <?php
  148. include ('../stopka.php');
  149. ?>
  150. </body>
  151. </html>


  1. Notice: Undefined index: opis in C:\Program Files (x86)\WebServ\httpd-users\praca\admin\instrukcje.php on line 72
  2.  
  3. Notice: Undefined variable: opis in C:\Program Files (x86)\WebServ\httpd-users\praca\admin\instrukcje.php on line 78
ciekawskiii
tak szczerze, to patrze na to juz 5 minut i nie moge sie polapac
radziowie
Postaram się poprawić kod, ale w tym celu muszę dowiedzieć się gdzie tkwi problem w kodzie.
Może ktoś mi pomóc? Dodam tylko, że jak usunę zmienną opis w tych linijkach to podobnie jest ze zmienną $wykladowca. Dlaczego kod nie "czepia" się zmiennej tytul a do reszty ma "pretensje", że tak powiem.
modern-web
Nie mieszaj kodu HTML z PHP...
To po pierwsze. Lepiej jest zrobić stronę w HTML i po prostu użyć include do skryptu, który powinien znajdować się nie dość, że w osobnym pliku to jeszcze katalogu. Jest to znacznie bezpieczniejsza metoda.

Co do samego kodu PHP - faktycznie; nie idzie się połapać.
Zrób to co napisałem powyżej, a skrypt będzie znacznie czytelniejszy.

Pozdrawiam.
dantes
Zgadzam się z kolegami, że brakuje czytelności i danych, na których testujesz.

BTW. W liniach 73-75 masz `update` do bazy, ale z powrotem odwołujesz się do pól z $_POST (np. $_POST['opis'] zamiast $opis). Więc nie chronisz przy update przed np. SQL Injection.

pozdrawiam
radziowie
Kod poprawiłem troszkę. Nie poprawiłem tylko kodu html. Nie rozumiem do końca. Mam stworzyć osobny html i w nim formularz (go z kolei wkleić do podfolderu jakiegoś?)?

  1. <?php
  2. //stosować tylko do projektu do wyszukania błędów
  3. ini_set('display_errors','1');
  4. // usunąć po zakończeniu projektowania
  5. //załączenie plików
  6. include ('../meta.php');
  7. include ('../gora_logo.php');
  8. include ('./menu_admin.php');
  9. include ('../dodatki/bonus.php');
  10. polacz_baza();
  11. $data = date('Y-m-j');
  12. function add_file () {
  13. echo "<h1>INSTRUKCJE - DODAWANIE I WYŚWIETLANIE</H1>";
  14. echo '<form enctype="multipart/form-data" action="instrukcje.php" method="post">
  15. Tytuł instrukcji: <input type="text" name="tytul" /><br />
  16. Opis: <textarea name="opis" cols="50" rows="10"></textarea><br />
  17. Autor: <input type="text" name="wykladowca" /><br />
  18. <input type="hidden" name="MAX_FILE_SIZE" value="1240000" />
  19. Plik (max 1 MB):<input name="plik" type="file" />
  20.  
  21.  
  22. <input type="submit" name="submit" value="wyślij plik" />
  23. </form>';
  24. }
  25. echo '<table bgcolor="white" width="900" cellspacing="0" cellpadding="10" border="1" align="center">
  26. <tr>
  27. <td colspan="2" align="center" valign="middle">';
  28.  
  29. /////////////////////////////////////////
  30. /////////////////////////////////////////
  31. //SPRAWDZIĆ DANE WYSYŁANE PRZEZ FORMULARZ
  32. /////////////////////////////////////////
  33. /////////////////////////////////////////
  34.  
  35. //sprawdzenie czy istnieją zmienne
  36. if (isset($_POST['tytul']) && isset($_POST['opis']) && isset($_POST['wykladowca']) && isset($_POST['plik'])) {
  37. //mysql_real_escape_string Dodaje znaki unikowe w łańcuchu znaków do użycia w instrukcji SQL, trim wycina spacje
  38. $tytul = mysql_real_escape_string(trim($_POST['tytul']));
  39. $opis = mysql_real_escape_string(trim($_POST['opis']));
  40. $wykladowca = mysql_real_escape_string(trim($_POST['wykladowca']));
  41. $plik = $_POST['plik'];
  42. }
  43. //sprawdza czy istnieje zmienna$_POST['submit'], czyli czy nastąpiło wysłanie danych
  44. if (isset($_POST['submit'])) {
  45. //dodawanie danych do bazy
  46. $plik_tmp = $_FILES['plik']['tmp_name'];
  47. $plik_nazwa = $_FILES['plik']['name'];
  48. $plik_rozmiar = $_FILES['plik']['size'];
  49. if(is_uploaded_file($plik_tmp)) {
  50. move_uploaded_file($plik_tmp, "../upload/$plik_nazwa");
  51. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  52. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
  53. } else {
  54. echo "Nie udało się wysłać pliku <strong>$plik_nazwa</strong> na serwer";
  55. }
  56. $zapytanie = "INSERT INTO instrukcje VALUES (NULL, '".$tytul."', '".$opis."', '".$wykladowca."', '".$plik_nazwa."')";
  57. $result = mysql_query($zapytanie);
  58. }
  59.  
  60. //sprawdzenie czy istnieją zmienne
  61. if (isset($_GET['co']) && isset($_GET['id']) && $_GET['co'] == 'skasuj') {
  62. $wynik = mysql_query("DELETE FROM instrukcje WHERE id = '".$_GET['id']."'");
  63. add_file();
  64.  
  65. //sprawdzenie czy istnieją zmienne
  66. } elseif (isset($_POST['co']) && $_POST['co'] == 'popraw') {
  67. if ($_POST['tytul'] && $_POST['opis'] && $_POST['wykladowca']) {
  68. $popraw = mysql_query("UPDATE instrukcje SET tytul = '".$_POST['tytul']."', opis = '".$_POST['opis']."', wykladowca = '".$_POST['wykladowca']."'
  69. WHERE id = '".$_POST['id']."';") or
  70. $wynik = mysql_query($popraw);
  71. } elseif (!$tytul || !$opis || !$wykladowca) {
  72. echo '<b>Wpis nie został zaktualizowany. Przynajmniej jedno z pól nie zostało wypełnione.<br /> Popraw to!</b><br />';
  73. }
  74. add_file();
  75.  
  76. }
  77. //sprawdzenie czy istnieją zmienne
  78. elseif (isset($_GET['co']) && $_GET['co'] == 'edytuj') {
  79. $edycja = mysql_query("SELECT * FROM instrukcje WHERE id = '".$_GET['id']."';");
  80. $rekord = mysql_fetch_assoc($edycja);
  81. $nrid = $rekord['id'];
  82. $tytul = $rekord['tytul'];
  83. $opis = $rekord['opis'];
  84. $wykladowca = $rekord['wykladowca'];
  85. $plik = $rekord['plik'];
  86. echo "<table border=\"1\">
  87. <tr>
  88. <td width=\"120\"><form action=\"instrukcje.php\" method=\"post\">
  89. nr id: ".$nrid."<input type=\"hidden\" name=\"co\" value=\"popraw\">
  90. <input type=\"hidden\" name=\"id\" value=\"".$nrid."\"><br /></td>
  91. </tr><tr>
  92. Tytuł:<input type=\"text\" name=\"tytul\" value=\"".htmlspecialchars($tytul)."\"><br /></td>
  93. </tr><tr>
  94. <td width=\"120\">Treść wiadomości:<textarea name=\"text\" cols=\"50\" rows=\"10\">".htmlspecialchars($opis)."</textarea><br /></td>
  95. </tr><tr>
  96. <td width=\"120\">Autor:<input type=\"number\" name=\"autor\" min=\"0\" max=\"7\" value=\"".htmlspecialchars($wykladowca)."\"><br /></td>
  97. </tr><tr>
  98. <td>Nazwa pliku: ".$plik."</td>
  99. </tr><tr>
  100. <td align=\"center\"><input type=\"submit\" name =\"popraw\" value=\"popraw\"><br />
  101. </form></td>
  102. </tr>
  103. </table>";
  104. //sprawdza czy nie istnieje zmienna $_GET['co'], jeśli nie istnieje wtedy wyświetlany jest funkcja add_news(), czyli formularz
  105. } elseif (!isset($_GET['co'])) {
  106. add_file();
  107. }
  108.  
  109. $wynik = mysql_query("SELECT * FROM instrukcje ORDER BY id DESC;") or
  110. die ("zle polecenie");
  111. //liczba rekordów
  112.  
  113. $ile = mysql_num_rows($wynik);
  114. echo "Znaleziono: ".$ile." rekordów";
  115. echo "<table border=\"1\" width=\"750\"><tr><td width=\"30\">Nr. ID</td><td width=\"100\">Tytuł</td><td width=\"400\">Opis</td>
  116. <td width=\"10\">Wykladowca</td>
  117. <td>Plik</td>
  118. <td width=\"50\">Usuwanie
  119. </td><td>Edytowanie</td></tr>";
  120. //wyświetlanie danych z bazy komórka po komórce
  121.  
  122. WHILE ($rekord = mysql_fetch_assoc ($wynik)) {
  123. $nrid = $rekord['id'];
  124. $tytul = $rekord['tytul'];
  125. $opis = $rekord['opis'];
  126. $wykladowca = $rekord['wykladowca'];
  127. $plik = $rekord['plik'];
  128.  
  129. echo "<tr><td width=\"30\">".$nrid."</td><td width=\"100\">".stripslashes($tytul)."</td>
  130. <td width=\"40\">".stripslashes($opis)."</td>
  131. <td width=\"10\">".stripslashes($wykladowca)."</td>
  132. <td width=\"120\">".$plik."</td>
  133. <td><a href=\"instrukcje.php?co=skasuj&amp;id=$nrid\">usuń</a></td><td>
  134. <a href=\"instrukcje.php?co=edytuj&amp;id=$nrid\">edytuj</a></td></tr>";
  135. }
  136. echo "</table>
  137. </tr>
  138. </table>";
  139.  
  140. include ('../stopka.php');
  141. echo "</body>
  142. </html>";
  143. ?>
daros17
W jednym pliku trzymasz kod html, a w drugim kod php Następnie w pliku gdzie masz html dajesz include('nazwapliku.php'); i kod staje się o wiele czytelniejszy winksmiley.jpg
CuteOne
daros17: chyba na odwrót ;p

  1.  
  2. <?php
  3.  
  4. if(isset($_POST['submit']) {
  5. // jakiś kod
  6. include 'templates/plik_html_po_submicie.php';
  7. }
  8. else {
  9.  
  10. include 'templates/plik_html_przed_submitem.php';
  11. }
  12. ?>


To najprostszy sposób na oddzielenie html od php [bardziej wyrafinowane to np. szablony SMARTY]
daros17
@CuteOne

fakt na odwrót powinno być tongue.gif, późna godzina można się pomylić winksmiley.jpg
radziowie
Może toś pokazać chociaż jeden przykład pliku html, bo dokładnie nie wiem co tam umieścić np. w funkcji warunkowej "submit". Tak jest ledwo kilka linijek html'a, więc nie wiem czy jest potrzeba umieszczania tego w osobnym pliku.
Nie mam pojęcia co w tym kodzie jest nie tak.
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.