Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]edytuje ostatni rekord z tabeli - zamisst tego wybranego :/
Forum PHP.pl > Forum > Przedszkole
mattii
  1.  
  2. <?php
  3.  
  4.  
  5.  
  6. // sprawdzenie zmiennej sesji
  7.  
  8. if(isset($_SESSION['prawid_uzyt']))
  9. {
  10.  
  11.  
  12.  
  13.  
  14.  
  15. require_once "pliki/php/db_connect.php";
  16. // wywoluje funkcje db_connect()
  17. db_connect();
  18.  
  19.  
  20.  
  21.  
  22.  
  23. if(isset($_POST['usun']) )
  24. {
  25. $zapytanie2="DELETE FROM kategoria WHERE
  26. id_kategorii= '".$_POST['katid']."'" ;
  27.  
  28.  
  29. $wynik2 = $bd_lacz->query($zapytanie2);
  30. }
  31.  
  32.  
  33.  
  34. $zapytanie = "SELECT * FROM kategoria ";
  35.  
  36. $wynik = $bd_lacz->query($zapytanie);
  37. $ile=$wynik->num_rows;
  38.  
  39.  
  40. //$wynik=mysqli_query($bd_lacz, $zapytanie);
  41. //$ile=mysqli_num_rows($wynik);
  42.  
  43. if ($ile==0) {
  44. echo "Baza danych nie zawiera jeszcze żadej kategorii towarów.";
  45. } else {
  46.  
  47.  
  48.  
  49. ?>
  50.  
  51.  
  52. <table id="rounded-corner" >
  53. <thead>
  54. <tr>
  55. <th scope="col" class="rounded-login">Id Kategorii</th>
  56. <th scope="col" class="rounded-q1">Nazwa Kategorii</th>
  57. <th scope="col" class="rounded-q9"></th>
  58. <th scope="col" class="rounded-q10"></th>
  59. </tr>
  60. </thead>
  61.  
  62. <tbody>
  63.  
  64. <?php
  65.  
  66. for ($i=0;$i<$ile;$i++) {
  67. $wiersz=$wynik->fetch_assoc();
  68.  
  69.  
  70.  
  71. echo '<form method="post">';
  72. echo '<tr>';
  73. echo '<td>';
  74. echo $wiersz['id_kategorii'];
  75. echo'</td>';
  76. echo '<td>';
  77. echo $wiersz['nazwa_kategorii'];
  78.  
  79. echo '</td>';
  80. echo '<td>';
  81. echo '<input type="submit" name="edycja" value="Edycja" > <input type="hidden" name="kat_edit" value="'.$wiersz['id_kategorii'].'"';
  82. echo'</td>';
  83. echo '<td>';
  84. echo '<input name="usun" type="submit" value="Usuń"><input type="hidden" name="katid" value="'.$wiersz['id_kategorii'].'"';
  85. echo'</td>';
  86.  
  87. echo'</tr></tbody>';
  88. echo '</form>';
  89.  
  90.  
  91.  
  92.  
  93. }
  94. echo '<tfoot>
  95. <tr>
  96. <td colspan="3" class="rounded-foot-left"><em>Tabela przedstawia kategorie towarów</em></td>
  97. <td class="rounded-foot-right">&nbsp;</td>
  98. </tr>
  99. </tfoot>
  100. </table>';
  101.  
  102.  
  103.  
  104. }
  105.  
  106.  
  107.  
  108. if(isset($_POST['edycja'])){
  109.  
  110.  
  111.  
  112.  
  113. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".$_POST['kat_edit']."' ";
  114.  
  115. $wynik = $bd_lacz->query($zapytanie3);
  116. $ile=$wynik->num_rows;
  117. for ($i=0;$i<$ile;$i++) {
  118. $wiersz=$wynik->fetch_assoc();
  119.  
  120.  
  121. echo '<form method="post">';
  122. echo '<table id="rounded-corner" >';
  123.  
  124.  
  125. <thead>
  126. <tr>
  127. <th scope="col" class="rounded-login">Id Kategorii</th>
  128. <th scope="col" class="rounded-q1">Nazwa Kategorii</th>
  129.  
  130. <th scope="col" class="rounded-q9"></th>
  131. <th scope="col" class="rounded-q10"></th>
  132. </tr>
  133. </thead>
  134.  
  135. <tbody>
  136.  
  137. ';
  138.  
  139.  
  140. echo '<tr>';
  141. echo '<td>';
  142. echo $wiersz['id_kategorii'];
  143. echo'</td>';
  144. echo '<td>';
  145. echo '<input type="text" name="nazwa_kategorii" size="14" VALUE="'.$wiersz['nazwa_kategorii'].'">';
  146. echo'</td>';
  147. echo '<td></td>';
  148. echo '<td >';
  149. echo '<a href="index.php?strona=kategoria" title="kategoria"><input name="edytowano" type="submit" value="Zmień"></a>';
  150.  
  151.  
  152. echo'</td >';
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159. echo'</tbody>';
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166. echo '<tfoot>
  167. <tr>
  168. <td colspan="3" class="rounded-foot-left"><em>Edycja kategorii towaru</em></td>
  169. <td class="rounded-foot-right">&nbsp;</td>
  170. </tr>
  171. </tfoot>';
  172.  
  173.  
  174. echo '</table> ';
  175.  
  176.  
  177.  
  178.  
  179. echo'</form>';
  180. }
  181.  
  182.  
  183.  
  184.  
  185. }
  186. if (isset($_POST["edytowano"]))
  187. {
  188.  
  189. $zapytanie4="UPDATE kategoria
  190. SET
  191. kategoria.nazwa_kategorii='".$_POST["nazwa_kategorii"]."' WHERE
  192. kategoria.id_kategorii='".$wiersz['id_kategorii']."' ";
  193. $wynik4 = $bd_lacz->query($zapytanie4);
  194.  
  195. }
  196.  
  197.  
  198.  
  199.  
  200.  
  201. }
  202.  
  203.  
  204. else
  205. {
  206. echo '<p>Użytkownik niezalogowany.</p>';
  207. echo '<p>Tylko zalogowani użytkownicy mogą oglądać tę stronę.</p>';
  208. }
  209.  
  210.  
  211.  
  212. ?>
  213.  



Tutaj po na cisnieciu przycisku edytuj - wiersz gdzie nacisniety został przycisk edytuj pod tabela wyswietla sie do edycji - i tu dziala wszystko tak jak chce, natomiast jak klikam zatwierdź - to edytuje się ale wiersz ostatni - a nie ten wywolany :/ - w czym tu jest problem questionmark.gif
kipero
  1. print_r($wiersz);

Zobacz, czy pole do którego się odwołujesz rzeczywiście zawiera to czego się spodziewasz.
mattii
więc w momencie otwierania do edycji jest wszystko jak trzeba

ale w momencie dokonywania edycji - już jest tak ze zmienna zawiera zawsze id ostatniego wiersza :/ sciana.gif

blooregard
  1. if (isset($_POST["edytowano"]))
  2. {
  3.  
  4. $zapytanie4="UPDATE kategoria
  5. SET
  6. kategoria.nazwa_kategorii='".$_POST["nazwa_kategorii"]."' WHERE
  7. kategoria.id_kategorii='".$wiersz['id_kategorii']."' ";
  8. $wynik4 = $bd_lacz->query($zapytanie4);
  9.  
  10. }


Nie powinno być:
  1. ...
  2. WHERE
  3. kategoria.id_kategorii='".$_POST['kat_edit']."' ";
  4. ...

questionmark.gif?
mattii
zmieniłem, ale teraz nic się nie zmienia - tzn nie edytuje nic.
blooregard
  1. echo '<input type="submit" name="edycja" value="Edycja" > <input type="hidden" name="kat_edit" value="'.$wiersz['id_kategorii'].'"';
  2. echo'</td>';
  3. echo '<td>';
  4. echo '<input name="usun" type="submit" value="Usuń"><input type="hidden" name="katid" value="'.$wiersz['id_kategorii'].'"';
  5. echo'</td>';


Zobacz, jaki tu masz dom publiczny.
Po co przypisujesz tę samą wartość ($wiersz['id_kategori']) do różnie nazwanych hiddenów?

Aby prawidłowo sobie to obsłużyć, form powinien wysyłać jedynie nazwę podejmowanej akcji oraz ID obiektu, an któym akcja jest wykonywana. A Ty walisz raz jako 'katid', raz jako 'kat_edit'.
Nic dziwnego, że potem nie możesz się połapać, co przechwytujesz z $_POST i gdzie i dlaczego nie działa.

Zrób tak:
  1. echo '<form method="post" action="?catid='.$wartosc['id_kategorii'].'">';

A wszędzie, gdzie potrzebujesz ten parametr odczytasz go porzez $catid = (integer)$_GET['catid'];

mattii
nie wiem czy dobrze kombinuje - bo jak zauwazyles mam dom publiczxny w tym kodzie - to dla tego ze to moje pierwsze kroki - przynajmniej tak sobie to tlumacze

zrobilem to tak:

  1. echo '<form method="post" action="?catid='.$wartosc['id_kategorii'].'">';
  2. echo '<tr>';
  3. echo '<td>';
  4. echo $wiersz['id_kategorii'];
  5. echo'</td>';
  6. echo '<td>';
  7. echo $wiersz['nazwa_kategorii'];
  8.  
  9. echo '</td>';
  10. echo '<td>';
  11. echo '<input type="submit" name="edycja" value="Edycja" > <input type="hidden" name="kat_edit" value="'.$catid = (integer)$_GET['catid'].'">';
  12. echo'</td>';
  13. echo '<td>';
  14. echo '<input name="usun" type="submit" value="Usuń"><input type="hidden" name="kat_edit" value="'.$catid = (integer)$_GET['catid'].'">';
  15. echo'</td>';
  16.  
  17. echo'</tr></tbody>';
  18. echo '</form>';
  19.  


jak naciskam edytuj lub usun to znika mi wszystko i nic sie nie dzieje sad.gif - wiec cos pomieszlaem
blooregard
Te hiddeny z ID kategorii są już niepotrzebne, bo przekazujesz ten parametr w url-u (patrz action w znaczniku <form>).
mattii
czyli

  1. if(isset($_POST['edycja'])){
  2.  
  3.  
  4.  
  5.  
  6. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".$catid = (integer)$_GET['catid']."' ";
  7.  




zamiast


  1.  
  2. if(isset($_POST['edycja'])){
  3.  
  4.  
  5.  
  6.  
  7. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".$_POST['kat_edit']."' ";
  8.  


i te hiddenu usunalem - tylko dlaej nic sad.gif - naciskam a tu wszystko znika:/
blooregard
Nieee.

Nic nie kumasz:
  1. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".$catid = (integer)$_GET['catid']."' ";

Co to ma być?
za id_kategorii podstawiasz to, co dostałeś getem:
  1. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".(integer)$_GET['catid']."' ";

po cholerę jeszzce to przypisujesz do jakiejś zmiennej...

No a tu:
  1. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".$_POST['kat_edit']."' ";

Skąd wytrzasnąłeś to $_POST['kat_edit'] ?

Przecież id edytowanej kategorii przekazujesz do skryptu w url-u (?catid=123 na przykład) i STAMTĄD to id kategorii odczytujesz wszędzie, gdzie potrzebujesz:
  1. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".(integer)$_GET['catid']."' ";


Może zacznij od podstaw: przekazywanie i odczytywanie parametrów z $_GET, $_POST, tworzenie formularzy itp.
mattii
to:


  1.  
  2. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".$_POST['kat_edit']."' ";


było jak były te hiddeny - po ich usunięciu miałem:

  1.  
  2. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".$catid = (integer)$_GET['catid']."' ";


po sugestiach mam:
  1.  
  2. $zapytanie3 = "SELECT * FROM kategoria WHERE id_kategorii='".(integer)$_GET['catid']."' ";
  3.  



dalej nic się nie wyświetla :/ -gdzie robie błąd ?

prosze o oswiecenie - co jest nie tak questionmark.gif
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.