Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Błędne adytowanie wpisów
radziowie
post 6.11.2010, 22:26:17
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 1.11.2010

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


Zrobiłem sobie skrypt dodawania wiadomości. Teraz zwróciłem uwagę, że dodająć np. tytuł z cudzysłowiem czyli " tytuł " to podczas edycji to pole mam puste. Jednakże gdy zapisze dane z owym pustym polem to w tabeli nadal mam " tytuł ".
Drugie co zauważyłem to to, że nie mogę edytować wyłącznie tylko tych rekordów gdzie się znajduje owy tytuł z cudzysłowami.

  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_news () {
  13. echo "<h1>NEWSY - DODAWANIE I WYŚWIETLANIE</H1>";
  14. echo '<form action="wiadomosci.php" method="post">
  15. Tytuł wiadomości: <input type="text" name="tytul" /><br />
  16. Treść wiadomości: <textarea name="text" cols="50" rows="10"></textarea><br />
  17. Autor: <input type="text" name="autor" /><br />
  18.  
  19. <input type="submit" name="submit" value="wyślij" />
  20. </form>';
  21. } ?>
  22. <table bgcolor="white" width="900" cellspacing="0" cellpadding="10" border="1" align="center">
  23. <tr>
  24. <td colspan="2" align="center" valign="middle">
  25.  
  26. <?php
  27.  
  28. //sprawdzenie czy istnieją zmienne
  29. if (isset($_POST['tytul']) && isset($_POST['text']) && isset($_POST['autor'])) {
  30. //mysql_real_escape_string Dodaje znaki unikowe w łańcuchu znaków do użycia w instrukcji SQL, trim wycina spacje
  31. $tytul = mysql_real_escape_string(trim($_POST['tytul']));
  32. $text = mysql_real_escape_string(trim($_POST['text']));
  33. $autor = mysql_real_escape_string(trim($_POST['autor']));
  34. }
  35. //sprawdza czy istnieje zmienna$_POST['submit'], czyli czy nastąpiło wysłanie danych
  36. if (isset($_POST['submit'])) {
  37. //dodawanie danych do bazy
  38. $zapytanie = "INSERT INTO newsy VALUES (NULL, '".$tytul."', '".$text."', '".$autor."', '".$data."')";
  39. $result = mysql_query($zapytanie);
  40. }
  41. //sprawdzenie czy istnieją zmienne
  42. if (isset($_GET['co']) && isset($_GET['id']) && $_GET['co'] == 'skasuj') {
  43. $wynik = mysql_query("DELETE FROM newsy WHERE id = '".$_GET['id']."'");
  44. add_news();
  45. //sprawdzenie czy istnieją zmienne
  46. } elseif (isset($_POST['co']) && $_POST['co'] == 'popraw') {
  47. if ($_POST['tytul'] && $_POST['text'] && $_POST['autor']) {
  48. $popraw = mysql_query("UPDATE newsy SET tytul = '".$_POST['tytul']."', text = '".$_POST['text']."', autor = '".$_POST['autor']."'
  49. WHERE id = '".$_POST['id']."';")
  50. $wynik = mysql_query($popraw);
  51. add_news();
  52.  
  53. }
  54. }
  55. //sprawdzenie czy istnieją zmienne
  56. elseif (isset($_GET['co']) && $_GET['co'] == 'edytuj') {
  57. $edycja = mysql_query("SELECT * FROM newsy WHERE id = '".$_GET['id']."';");
  58. $rekord = mysql_fetch_assoc($edycja);
  59. $nrid = $rekord['id'];
  60. $tytul = $rekord['tytul'];
  61. $text = $rekord['text'];
  62. $autor = $rekord['autor'];
  63. $data = $rekord['data'];
  64. echo "<table border=\"1\">
  65. <tr>
  66. <td width=\"120\"><form action=\"wiadomosci.php\" method=\"post\">
  67. nr id: ".$nrid."<input type=\"hidden\" name=\"co\" value=\"popraw\">
  68. <input type=\"hidden\" name=\"id\" value=\"".$nrid."\"><br /></td>
  69. </tr><tr>
  70. Tytuł:<input type=\"text\" name=\"tytul\" value=\"".stripslashes($tytul)."\"><br /></td>
  71. </tr><tr>
  72. <td width=\"120\">Treść wiadomości:<textarea name=\"text\" cols=\"50\" rows=\"10\">".stripslashes($text)."</textarea><br /></td>
  73. </tr><tr>
  74. <td width=\"120\">Autor:<input type=\"number\" name=\"autor\" min=\"0\" max=\"7\" value=\"".stripslashes($autor)."\"><br /></td>
  75. </tr><tr>
  76. <td>Data: ".$data."</td>
  77. </tr><tr>
  78. <td align=\"center\"><input type=\"submit\" name =\"popraw\" value=\"popraw\"><br />
  79. </form></td>
  80. </tr>
  81. </table>";
  82. //sprawdza czy nie istnieje zmienna $_GET['co'], jeśli nie istnieje wtedy wyświetlany jest funkcja add_news(), czyli formularz
  83. } elseif (!isset($_GET['co'])) {
  84. add_news();
  85. }
  86.  
  87.  
  88.  
  89.  
  90.  
  91. $wynik = mysql_query("SELECT * FROM newsy ORDER BY id DESC;") or
  92. die ("zle polecenie");
  93. //liczba rekordów
  94. $ile = mysql_num_rows($wynik);
  95. echo "Znaleziono: ".$ile." rekordów";
  96. echo "<table border=\"1\" width=\"750\"><tr><td width=\"30\">Nr. ID</td><td width=\"100\">Tytuł</td><td width=\"400\">Text</td>
  97. <td width=\"10\">autor</td>
  98. <td>data</td>
  99. <td width=\"50\">Usuwanie
  100. </td><td>Edytowanie</td></tr>";
  101. //wyświetlanie danych z bazy komórka po komórce
  102. WHILE ($rekord = mysql_fetch_assoc ($wynik)) {
  103. $nrid = $rekord['id'];
  104. $tytul = $rekord['tytul'];
  105. $text = $rekord['text'];
  106. $autor = $rekord['autor'];
  107. $data = $rekord['data'];
  108.  
  109. echo "<tr><td width=\"30\">".$nrid."</td><td width=\"100\">".stripslashes($tytul)."</td>
  110. <td width=\"40\">".stripslashes($text)."</td>
  111. <td width=\"10\">".stripslashes($autor)."</td>
  112. <td width=\"120\">".$data."</td>
  113. <td><a href=\"wiadomosci.php?co=skasuj&amp;id=$nrid\">usuń</a></td><td>
  114. <a href=\"wiadomosci.php?co=edytuj&amp;id=$nrid\">edytuj</a></td></tr>";
  115. }
  116. echo "</table>";
  117.  
  118.  
  119. ?>
  120. </tr>
  121. </table>
  122. <?php
  123. include ('../stopka.php');
  124. ?>
  125. </body>
  126. </html>
Go to the top of the page
+Quote Post
outsider
post 6.11.2010, 23:22:15
Post #2





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

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


Tak wygląda Twój input przy edycji:
<input type="text" name="tytul" value=""tytul"" />
czyli value="" - pusty ciąg, dlatego nic nie widzisz, a UPDATE bazy się nie robi, bo nie jest spełniony warunek, że 'tytul' musi mieć wartość smile.gif Użyj htmlspecialchars dla każdej zmiennej przy wyświetlaniu.

Ten post edytował *OuTSideR* 6.11.2010, 23:27:07
Go to the top of the page
+Quote Post
radziowie
post 7.11.2010, 11:41:44
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 1.11.2010

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


Dzięki pomogło to, tylko mam teraz jeden problem. Można owszem edytować dane, jednak nie mogą istnieć pola puste a chciałbym aby np pole $autor mogło być puste. Poprawiony kod to:

  1. //sprawdzenie czy istnieją zmienne
  2. elseif (isset($_GET['co']) && $_GET['co'] == 'edytuj') {
  3. $edycja = mysql_query("SELECT * FROM newsy WHERE id = '".$_GET['id']."';");
  4. $rekord = mysql_fetch_assoc($edycja);
  5. $nrid = $rekord['id'];
  6. $tytul = $rekord['tytul'];
  7. $text = $rekord['text'];
  8. $autor = $rekord['autor'];
  9. $data = $rekord['data'];
  10. echo "<table border=\"1\">
  11. <tr>
  12. <td width=\"120\"><form action=\"wiadomosci.php\" method=\"post\">
  13. nr id: ".$nrid."<input type=\"hidden\" name=\"co\" value=\"popraw\">
  14. <input type=\"hidden\" name=\"id\" value=\"".$nrid."\"><br /></td>
  15. </tr><tr>
  16. Tytuł:<input type=\"text\" name=\"tytul\" value=\"".htmlspecialchars($tytul)."\"><br /></td>
  17. </tr><tr>
  18. <td width=\"120\">Treść wiadomości:<textarea name=\"text\" cols=\"50\" rows=\"10\">".htmlspecialchars($text)."</textarea><br /></td>
  19. </tr><tr>
  20. <td width=\"120\">Autor:<input type=\"number\" name=\"autor\" min=\"0\" max=\"7\" value=\"".htmlspecialchars($autor)."\"><br /></td>
  21. </tr><tr>
  22. <td>Data: ".$data."</td>
  23. </tr><tr>
  24. <td align=\"center\"><input type=\"submit\" name =\"popraw\" value=\"popraw\"><br />
  25. </form></td>
  26. </tr>
  27. </table>";


Ten post edytował radziowie 7.11.2010, 16:21:12
Go to the top of the page
+Quote Post
outsider
post 7.11.2010, 16:48:39
Post #4





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

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


30 i 48 linijka z Twojego pierwszego listingu to
  1. if ($_POST['tytul'] && $_POST['text'] && $_POST['autor']) {

żeby dopuścić puste pole autora wywal && $_POST['autor'] z warunków(z 30 i 48 linijki)
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:18