Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd w kodzie
Forum PHP.pl > Forum > Przedszkole
tommy4
Witam, mam pewien problem, mianowicie jestem w trakcie robienia systemu newsów i gdy dodawałem edycję, coś się zepsuło, a patrzę na to od 5h i nic nie umiem znaleźć, to pomyślałem, że może doświadczeni użytkownicy coś będą o tym wiedzieć.

  1. <?php
  2. require_once "../main.php";
  3. require_once "../naglowek.php";
  4.  
  5. if(isset($_POST['nid']))
  6. {
  7. $nid = $_POST['nid'];
  8. echo '<tr><td class="border">';
  9. if($nid == '') 
  10. {
  11. echo '<div class="main">Musisz wybrać newsa!</div>';
  12. }
  13. $nedit = $nid;
  14. $edycja = 1;
  15. echo "</td></tr>";
  16. }
  17.  
  18.  
  19.  
  20. if (isset($_POST['tresc']) && isset($_POST['temat']))
  21. {
  22. echo '<tr><td class="border" style="border-top:none;">';
  23. $trescnewsa = $_POST['tresc'];
  24. $tematnewsa = $_POST['temat'];
  25. $tematnewsa = htmlspecialchars($tematnewsa);
  26. $czas = time();
  27. if ($edycja == 1)
  28. {
  29. $sql = "UPDATE newsy SET temat=$tematnewsa, tresc=$trescnewsa WHERE id=$nedit";
  30. if(@mysql_query($sql))
  31. {
  32. echo '<div class="main">Twój news został zmieniony.</div>';
  33. }
  34. else 
  35. {
  36. echo '<div class="main">Błąd podczas edycji newsa.</div>';
  37. }
  38.  
  39. } 
  40. else
  41. {
  42. if ($edycja == 0)
  43. {
  44. $sql2 = "INSERT INTO newsy (temat,tresc,data) VALUES ('$tematnewsa','$trescnewsa', '$czas')";
  45. if(@mysql_query($sql2))
  46. {
  47. echo '<div class="main">Twój news został dodany.</div>';
  48. }
  49. else
  50. {
  51. echo '<div class="main">Błąd podczas dodawania newsa.</div>';
  52. }
  53. }
  54. }
  55. echo '</td></tr>';
  56. }
  57.  
  58.  
  59.  
  60.  
  61. echo'<tr><td class="border" style="border-bottom:none">';
  62. $sql = @mysql_query("SELECT temat,id FROM newsy ORDER BY id DESC");
  63. if (!sql)
  64. {
  65. exit('<div class="main">Problem podczas pobierania newsów z bazy danych!</div>');
  66. }
  67. echo '</td></tr><tr><td class="border" style="border-top:none;border-bottom:none;">';
  68. ?>
  69. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"><div class="main">Newsy: <select name="nid" size="1">
  70. <option selected value="">Wybierz newsa</option>
  71. <option value="">------------------</option>
  72. <?php
  73. $sql = @mysql_query('SELECT id, temat, data FROM newsy ORDER BY data DESC');
  74. if (!$sql)
  75. {
  76. exit ('<div class="main">Nie można pobrać listy newsów!</div>');
  77. }
  78.  
  79. while($newsl = mysql_fetch_array($sql))
  80. {
  81. $nid = $newsl['id'];
  82. $ntemat = $newsl['temat'];
  83. echo "<option value='$nid'>$ntemat</option>";
  84. }
  85. ?>
  86. </select><input type="submit" value="Edytuj"></div></form>
  87. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"><table border="0"><tr><td><div class="main">Temat:</div></td><td>
  88. <input type="text" name="temat" 
  89. <?php 
  90. if ($edycja == 1)
  91. { 
  92. echo 'value="';
  93. $sql = @mysql_query('SELECT temat FROM newsy WHERE id='.$nedit);
  94. $row = @mysql_fetch_array($sql);
  95. echo $row['temat'];
  96. }
  97. ?>" size="30"></td></tr><tr>
  98. <td valign="top"><div class="main">Treść:</div></td><td>
  99. <textarea name="tresc" rows="15" cols="40">
  100. <?php 
  101. if ($edycja == 1)
  102. {
  103. $sql = @mysql_query('SELECT tresc FROM newsy WHERE id='.$nedit);
  104. $row = @mysql_fetch_array($sql);
  105. echo $row['tresc'];
  106. } 
  107. ?>
  108. </textarea></td></tr><tr><td colspan=2>
  109. <div style="text-align:center;"><input type="submit" name="zapisz" value="Zapisz"></div></td></tr></table>
  110. </form>
  111. <?php
  112. echo'</td></tr>';
  113. require_once "../stopka.php";
  114.  
  115. ?>


Jak to wygląda i jak działa możecie zobaczyć tutaj. Z góry dziękuję.
r0m4n
Jak byś mógł pokazać jakiegoś loga, było by może lepiej znaleźć usterkę...

Pozdrawiam party.gif
nospor
nie wiem czy wiesz, ale lista wyboru oprócz znacznikow <option> musi tez miec <select. u ciebie jest tylko znacznik zamykajacy </select> nie ma otweirajacego. nadaj mu tez wlasciwa nazwe
siutek
qrcze no... ja nie widze zadnego bledu w dzialaniu, opisz dokladniej co i jak :/
Guest
nospor:

  1. <select name="nid" size="1">
Jest, tylko musisz przesunąć suwak w prawo.

siutek:

Jak chcę edytować, to po zapisie dodaje mi nowy news, a nie edytuje istniejący.

r0m4n:

O co chodzi z logiem?
tommy4
Przepraszam, że napisałem jako guest, ale nie zauważyłem, że nie jestem zalogowany. Jeszcze raz proszę o pomoc, ponieważ nie umiem nadal znaleźć nigdzie błędu.
Hacker
"Wyechuj" może przed if-em edytuj i zobacz co i jak albo po każdym if-ie jakiś komunikat

A błąd jest taki gdzie dodajesz nid-a w tym drugim formularzu?? snitch.gif
tommy4
  1. <?php
  2. require_once "../main.php";
  3. require_once "../naglowek.php";
  4.  
  5. if(isset($_POST['nid']))
  6. {
  7.     $nid = $_POST['nid'];
  8.     echo '<tr><td class="border">';
  9.     if($nid == '') 
  10.     {
  11.         echo '<div class="main">Musisz wybrać newsa!</div>';
  12.     }
  13.     $nedit = $nid;
  14.     echo 'if(isset($_POST[nid])) - wartość edycji:'.$edycja.'!';
  15.     $edycja = 1;
  16.     echo 'if(isset($_POST[nid])) - wartość edycji(2):'.$edycja.'!';
  17.     echo "</td></tr>";
  18. }
  19.  
  20. if (isset($_POST['tresc']) && isset($_POST['temat']))
  21. {
  22.     echo '<tr><td class="border" style="border-top:none;">';
  23.     $trescnewsa = $_POST['tresc'];
  24.     $tematnewsa = $_POST['temat'];
  25.     $tematnewsa = htmlspecialchars($tematnewsa);
  26.     $czas = time();
  27.     echo 'if($edycja == 1) w isset POST(tresc i temat): '.$edycja.'!';
  28.     if ($edycja == 1)
  29.     {
  30.         $sql = "UPDATE newsy SET temat=$tematnewsa, tresc=$trescnewsa WHERE id=$nedit";
  31.         if(@mysql_query($sql))
  32.         {
  33.             echo '<div class="main">Twój news został zmieniony.</div>';
  34.         }
  35.         else 
  36.         {
  37.             echo '<div class="main">Błąd podczas edycji newsa.</div>';
  38.         }
  39.  
  40.     } 
  41.     else
  42.     {
  43.         echo 'if($edycja == 2) w isset POST(tresc i temat): '.$edycja.'!';
  44.         if ($edycja == 0)
  45. {
  46.         $sql2 = "INSERT INTO newsy (temat,tresc,data) VALUES ('$tematnewsa','$trescnewsa', '$czas')";
  47.         if(@mysql_query($sql2))
  48.         {
  49.             echo '<div class="main">Twój news został dodany.</div>';
  50.         }
  51.         else
  52.         {
  53.             echo '<div class="main">Błąd podczas dodawania newsa.</div>';
  54.         }
  55. }
  56.     }
  57.     echo '</td></tr>';
  58. }
  59.  
  60.  
  61.  
  62.  
  63. echo'<tr><td class="border" style="border-bottom:none">';
  64. $sql = @mysql_query("SELECT temat,id FROM newsy ORDER BY id DESC");
  65. if (!sql)
  66. {
  67.     exit('<div class="main">Problem podczas pobierania newsów z bazy danych!</div>');
  68. }
  69. echo '</td></tr><tr><td class="border" style="border-top:none;border-bottom:none;">';
  70. ?>
  71. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"><div class="main">Newsy: <select name="nid" size="1">
  72. <option selected value="">Wybierz newsa</option>
  73. <option value="">------------------</option>
  74. <?php
  75. $sql = @mysql_query('SELECT id, temat, data FROM newsy ORDER BY data DESC');
  76. if (!$sql)
  77. {
  78.     exit ('<div class="main">Nie można pobrać listy newsów!</div>');
  79. }
  80.  
  81. while($newsl = mysql_fetch_array($sql))
  82. {
  83.     $nid = $newsl['id'];
  84.     $ntemat = $newsl['temat'];
  85.     echo "<option value='$nid'>$ntemat</option>";
  86. }  
  87. ?>
  88. </select><input type="submit" value="Edytuj"></div></form>
  89. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"><table border="0"><tr><td><div class="main">Temat:</div></td><td>
  90. <input type="text" name="temat" 
  91. <?php 
  92. echo 'if($edycja == 1) w formularzu: '.$edycja.'!';
  93. if ($edycja == 1)
  94. { 
  95.     echo 'value="';
  96.     $sql = @mysql_query('SELECT temat FROM newsy WHERE id='.$nedit);
  97.     $row = @mysql_fetch_array($sql);
  98.     echo $row['temat'];
  99. }
  100. ?>" size="30"></td></tr><tr>
  101. <td valign="top"><div class="main">Treść:</div></td><td>
  102. <textarea name="tresc" rows="15" cols="40">
  103. <?php 
  104. echo 'if($edycja == 1) w formularzu (2): '.$edycja.'!';
  105. if ($edycja == 1)
  106. {
  107.     $sql = @mysql_query('SELECT tresc FROM newsy WHERE id='.$nedit);
  108.     $row = @mysql_fetch_array($sql);
  109.     echo $row['tresc'];
  110. } 
  111. ?>
  112. </textarea></td></tr><tr><td colspan=2>
  113. <div style="text-align:center;"><input type="submit" name="zapisz" value="Zapisz"></div></td></tr></table>
  114. </form>
  115. <?php
  116. echo'</td></tr>';
  117. require_once "../stopka.php";
  118.  
  119. ?>


TO JEST NOWY KOD... Kliknijcie tutaj żeby sprawdzić jak działa.

EDIT: no i widocznie nie ma tej zmiennej, po załadowaniu strony po raz drugi:/
Ociu
Proponuje tak:
  1. <?php
  2. function editForm($id) {
  3. $sql = 'SELECT * FROM news WHERE id='.$id.'';
  4.  
  5. print '<form action="newsy.php?edit='.$id.'&formed=true" method="POST"> etc...';
  6. }
  7.  
  8. function edit($id, $temat, $tresc) {
  9. mysql_query('UPDATE news SET temat="'.$temat.'", tresc="'.$tresc.'" WHERE id="'.$id.'"');
  10. }
  11.  
  12. if(isset($_GET['edit']) && isset($_GET['formed'])) {
  13. edit($_GET['edit'], $_POST['temat'], $_POST['tresc']);
  14. } else {
  15. editForm($_GET['edit']);
  16. }
  17. ?>
tommy4
OK, jeszcze raz tą edycję spróbuję zrobić od początku.

EDIT: JEEEEEEEEEESSSSSSSSSSTTTTT!!!!!!!!! Ludzie dzięki Wam bardzo, jak będę miał jeszcze jakieś problemy to napiszę. smile.gif Swoją drogą ciekawe newsy napisaliście. tongue.gif Teraz się zajmę usuwaniem newsów, a Wam jeszcze raz dziękuję!
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.