Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP - błąd w edycji
Forum PHP.pl > Forum > PHP
qwert5
Witam,
Razem z kolegą wykorzystaliśmy PHP do napisania programu, który odnosi się do bazy danych MySQL. Problem w tym, że PHP za bardzo nie znamy i postanowiliśmy posiłkować się forum, Google i książką. Jakoś połączyliśmy całość i faktycznie wszystko działa. Problem w tym, że po kliknięciu edytuj, otwiera się formularz, wprowadzamy zmienione dane i... zamiast edytować rekord, zostaje dodany nowy z wprowadzonymi zmianami, a stary jak bym tak jest.

Oto fragment kodu, czy ktoś może nam powiedzieć gdzie jest błąd?

  1. <head>
  2.  
  3. <style type="text/css">
  4. #lista1, #lista2, #lista3, #lista4, #lista5
  5. {
  6. display: none;
  7. }
  8. </style>
  9.  
  10.  
  11. <script type="text/javascript">
  12. <!--
  13. function pokazAlboUkryj(co) {
  14. var obiekt = document.getElementById(co);
  15. if (obiekt.style.display == 'block') {
  16. obiekt.style.display = 'none';
  17. } else {
  18. obiekt.style.display = 'block';
  19. }
  20. }
  21. -->
  22. </script>
  23. </head>
  24.  
  25.  
  26. <a href="#lista1" onclick="pokazAlboUkryj('lista1'); return false;">Dodaj wpis</a> <br><br>
  27.  
  28. <form action="reklamacje.php" method="post">
  29.  
  30.  
  31. <div id="lista1">
  32. id_klienta:<br />
  33. <input type="text" name="id_klienta" /><br />
  34. opis_usterki:<br />
  35. <input type="text" name="opis_usterki" /><br />
  36. model:<br />
  37. <input type="text" name="model" /><br />
  38. imei:<br />
  39. <input type="text" name="imei" /><br />
  40. data:<br />
  41. <input type="text" name="data" /><br />
  42. <input type="submit" value="dodaj" />
  43. </form><br><br>
  44. <?php
  45. $id_klienta = $_POST['id_klienta'];
  46. $opis_usterki = $_POST['opis_usterki'];
  47. $model = $_POST['model'];
  48. $imei = $_POST['imei'];
  49. $data = $_POST['data'];
  50.  
  51. if($id_klienta and $opis_usterki and $model and $imei and $data) {
  52.  
  53. // łączymy się z bazą danych
  54. $connection = @mysql_connect(xxx)
  55. or die('Brak połączenia z serwerem MySQL');
  56. $db = @mysql_select_db('xxx', $connection)
  57. or die('Nie mogę połączyć się z bazą danych');
  58.  
  59. // dodajemy rekord do bazy
  60. $ins = @mysql_query("INSERT INTO REKLAMACJE SET id_klienta='$id_klienta', opis_usterki='$opis_usterki', model='$model', imei='$imei', data='$data'");
  61.  
  62. if($ins) echo "Rekord został dodany poprawnie<br>Wracam do strony glownej! <meta http-equiv='refresh' content='0;url=http://aplikacjaphp.yoyo.pl/reklamacje.php'>";
  63. else echo "Błąd nie udało się dodać nowego rekordu<br>Wracam do strony glownej! <meta http-equiv='refresh' content='0;url=http://aplikacjaphp.yoyo.pl/reklamacje.php'>";
  64.  
  65. }
  66.  
  67.  
  68. ?>
  69. </div>
  70.  
  71.  
  72.  
  73.  
  74. <?php
  75. // łączymy się z bazą danych
  76. $connection = @mysql_connect('xxx')
  77. or die('Brak połączenia z serwerem MySQL');
  78. $db = @mysql_select_db('xxx', $connection)
  79. or die('Nie mogę połączyć się z bazą danych');
  80.  
  81.  
  82. $wynik = mysql_query("SELECT * FROM REKLAMACJE")
  83. or die('Błąd zapytania');
  84.  
  85. /*
  86. wyświetlamy wyniki, sprawdzamy,
  87. czy zapytanie zwróciło wartość większą od 0
  88. */
  89. if(mysql_num_rows($wynik) > 0) {
  90. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  91. echo "<table cellpadding=\"2\" border=1>";
  92. while($r = mysql_fetch_object($wynik)) {
  93. echo "<tr>";
  94. echo "<td>".$r->id_klienta."</td>";
  95. echo "<td>".$r->opis_usterki."</td>";
  96. echo "<td>".$r->model."</td>";
  97. echo "<td>".$r->imei."</td>";
  98. echo "<td>".$r->data."</td>";
  99. echo "<td>
  100. <a href=\"reklamacje.php?usun={$r->id}\">DEL</a>
  101. <a href=\"reklamacje.php?a=edit&id={$r->id}\">EDIT</a>
  102. </td>";
  103. echo "</tr>";
  104. }
  105. echo "</table>";
  106. }
  107.  
  108.  
  109.  
  110. ?>
  111.  
  112. <?php
  113. $a = trim($_REQUEST['a']);
  114. $id = trim($_GET['id']);
  115.  
  116. if($a == 'edit' and !empty($id)) {
  117. /* zapytanie do tabeli */
  118. $wynik = mysql_query("SELECT * FROM REKLAMACJE WHERE
  119. id='$id'")
  120. or die('Błąd zapytania');
  121. /*
  122. wyświetlamy wyniki, sprawdzamy,
  123. czy zapytanie zwróciło wartość większą od 0
  124. */
  125. if(mysql_num_rows($wynik) > 0) {
  126. /* odczytujemy zawartość wiersza z tabeli */
  127. $r = mysql_fetch_assoc($wynik);
  128. /* wczytujemy dane do formularza */
  129. /*
  130. w formularz znajdują się ukryte pola "a"
  131. z wartością "save" i pole "id" z wartością
  132. zmiennej id
  133. */
  134. echo '<form action="reklamacje.php" method="post">
  135. <input type="hidden" name="a" value="save" />
  136. <input type="hidden" name="id" value="'.$id.'" />
  137. id_klienta:<br />
  138. <input type="text" name="id_klienta"
  139. value="'.$r['id_klienta'].'" /><br />
  140. opis_usterki:<br />
  141. <input type="text" name="opis_usterki"
  142. value="'.$r['opis_usterki'].'" /><br />
  143. model:<br />
  144. <input type="text" name="model"
  145. value="'.$r['model'].'" /><br />
  146. imei:<br />
  147. <input type="text" name="imei"
  148. value="'.$r['imei'].'" /><br />
  149. data:<br />
  150. <input type="text" name="data"
  151. value="'.$r['data'].'" /><br />
  152. <input type="submit" value="popraw" />
  153. </form>';
  154. }
  155. }
  156. elseif($a == 'save') {
  157. /* odbieramy zmienne z formularza */
  158. $id = $_POST['id'];
  159. $id_klienta = trim($_POST['id_klienta']);
  160. $opis_usterki = trim($_POST['opis_usterki']);
  161. $model = trim($_POST['model']);
  162. $imei = trim($_POST['imei']);
  163. $data = trim($_POST['data']);
  164. /* uaktualniamy tabelę test */
  165. mysql_query("UPDATE REKLAMACJE SET id_klienta='$id_klienta',
  166. opis_usterki='$opis_usterki', model='$model', imei='$imei', data='$data' WHERE id='$id'")
  167. or die('Błąd zapytania');
  168.  
  169. }
  170. ?>
  171.  
  172.  
  173. <br><br>
  174.  
  175. <?php
  176. if(isset($_GET['usun']))
  177. $ok = @mysql_query("DELETE FROM `REKLAMACJE` WHERE `id` = '".$_GET['usun']."' LIMIT 1");
  178. //plus np. przekierowanie
  179.  
  180. if($ok) echo "Rekord został usunięty poprawnie<br>Wracam do strony glownej! <meta http-equiv='refresh' content='0;url=http://aplikacjaphp.yoyo.pl/reklamacje.php'>";
  181.  
  182.  
  183. $rezultat = mysql_query("SELECT * FROM `REKLAMACJE`") or die("Błąd 2");
  184. $i = 0;
  185. while ($record = mysql_fetch_array($rezultat, MYSQL_ASSOC))
  186. {
  187. echo "";
  188. $i++;
  189. }
  190. ?>
muk4
Linia 60:
  1. $ins = @mysql_query("INSERT INTO REKLAMACJE SET id_klienta='$id_klienta', opis_usterki='$opis_usterki', model='$model', imei='$imei', data='$data'");

Te zapytanie wykonuje się przy każdym odświeżeniu skrypt. Sprawdzaj if'em czy zmienna $_REQUEST['a'] jest ustalona - jeśli nie to wykonaj zapytanie.
qwert5
Hej,
Dzięki za odpowiedź. To cenna rada, jednak my zajmujemy się PHP od 2-3 tygodni. Nie za bardzo zrozumiałem co dokładnie zmienić. No może w 20% zrozumiałem sciana.gif

Pozdrawiam!
outsider
1. Jesli "edytujesz" to automatycznie wykona sie zapytanie INSERT, to zmieniona i poprawna linijka 51

Kod
if($id_klienta and $opis_usterki and $model and $imei and $data and $_REQUEST['a'] != 'edit' and $_REQUEST['a'] != 'save')


to chyba wszystko, napisz czy zadzialalo.

@edit

w zapytaniu uzyles apostrofow przy wrzucaniu ID, to jest zawsze INT i w ogole nie powinno zadzialac z apostrofami, wiec:
Kod
"UPDATE REKLAMACJE SET id_klienta=$id_klienta,
    opis_usterki='$opis_usterki', model='$model', imei='$imei', data='$data'  WHERE id=$id"
matthew089
napiszcie na gg: 11007506; mam sporo wolnego czasu, chętnie pomogę winksmiley.jpg
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.