Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z edycją danych w bazie
yoshinobi
post 19.04.2011, 19:12:31
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 19.04.2011

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


Witam!

Otóż mam problem z edycją danych w bazie. Mianowicie:
Mam formularz który dodaje rekordy do bazy, obok formularza wyświetlają się dodane rekordy wraz z przyciskami 'usuń' i 'edytuj'. Usuwać usuwa rekordy z bazy, jest natomiast problem z edycją. Zawartość edytowanego rekordu wczytuje się do nowego formularza prawidłowo, lecz kiedy wprowadzę nową nazwę i zatwierdzę wybór zmiana nie następuje. Rekord pozostaje taki jaki był - nie zmieniony.
Niżej zamieszczam mój kod:

  1. <?php
  2. include 'db.php'; // połączenie się z bazą danych
  3. $tabela = 'kategoria'; // zdefiniowanie tabeli MySQL
  4. include('header.php');
  5. echo '<div class="content">';
  6. if (isset($_SESSION['login'])) { // dostęp dla zalogowanego użytkownika
  7. $nazwa = $_POST['nazwa'];
  8. $a = trim($_GET['a']);
  9. $b = trim($_REQUEST['b']);
  10. $id = trim($_GET['id']);
  11. if (isset($_POST['send'])){
  12. $wynik = mysql_query("SELECT * FROM $tabela WHERE nazwa='$nazwa'");
  13. if (mysql_num_rows($wynik)) {
  14. echo '<div class="erroralert"><div class="alercik"><b>Podana kategoria juz istnieje!</b><br><br><br><a href="ekategoria.php"><img src="img/back2.gif"></a></div></div>';
  15. }
  16. elseif ($nazwa) {
  17. $ins = mysql_query("INSERT INTO $tabela VALUES ('', '$nazwa')");
  18. if($ins) echo '<div class="erroralert"><div class="alercik"><b>Kategoria została dodana prawidłowo!</b><br><br><br><a href="ekategoria.php"><img src="img/back2.gif"></a></div></div>';
  19. else echo '<div class="erroralert"><div class="alercik"><b>Błąd: nie udało się dodać nowego rekordu</b><br><br><br><a href="ekategoria.php"><img src="img/back2.gif"></a></div></div>';
  20. mysql_close($connection);
  21. }
  22. }
  23. ?>
  24. <table border="0" cellpadding="0" cellspacing="0" width="670">
  25. <tr>
  26. <td width="400" valign="top">
  27. <form action="ekategoria.php" method="post">
  28. <table border="0" cellpadding="1" cellspacing="1" width="400">
  29. <tr>
  30. <td width="150">Nazwa kategorii: </td>
  31. <td><input type="text" name="nazwa" class="kontakt"/></td>
  32. </tr>
  33. <tr>
  34. <td colspan="2" align="right"><input type="submit" name="send" value="Dodaj" class="przycisk"/></td>
  35. </tr>
  36. <tr>
  37. <td>
  38. <?php
  39. if($b == 'edit' and !empty($id)) {
  40. $wynik2 = mysql_query("SELECT * FROM $tabela WHERE idK='$id'") or die('Błąd zapytania'); /* zapytanie do tabeli */
  41. if(mysql_num_rows($wynik2) > 0) {
  42. $r = mysql_fetch_assoc($wynik2); # odczytujemy zawartość wiersza z tabeli
  43. echo '<form action="ekategoria.php" method="post">
  44. <input type="hidden" name="b" value="save" />
  45. <input type="hidden" name="id" value="'.$id.'" />
  46. Nazwa: </td><td><input type="text" name="nazwa" value="'.$r['nazwa'].'" class="kontakt"/></td><tr><td colspan="2" align="right">
  47. <input type="submit" value="Popraw" class="przycisk"/>
  48. </form>';
  49. }
  50. }
  51. elseif($b == 'save') { # odbieramy zmienne z formularza
  52. $id = $_POST['idK'];
  53. $nazwa = trim($_POST['nazwa']);
  54. mysql_query("UPDATE $tabela SET nazwa='$nazwa' WHERE idK='$id'") or die('Błąd zapytania');
  55. }
  56.  
  57. ?>
  58. </td>
  59. </tr>
  60. </table>
  61. </form><br><br>
  62. </td>
  63. <td width="270" align="right" valign="top">
  64. <table border="0" cellpadding="0" cellspacing="0" width="250">
  65. <tr>
  66. <td width="30" align="center" style="color: #777777">Id.</td><td width="100" align="left" style="color: #777777">Nazwa kat.</td><td width="140" align="center" style="color: #777777">Opcje:</td>
  67. </tr>
  68. <?php
  69. $wynik = mysql_query("SELECT * FROM $tabela");
  70. $i = 1;
  71. while ($r=mysql_fetch_assoc($wynik)) {
  72. ?>
  73. <tr>
  74. <td width="30" align="center"><?php echo $i++; echo '.'; ?></td>
  75. <td width="100" align="left"><?php echo $r['nazwa']; ?> </td>
  76. <td width="140" align="center">
  77. <?php
  78. if($a == 'del' and !empty($id)) {
  79. mysql_query("DELETE FROM $tabela WHERE idK='$id'") or die('Błąd zapytania: '.mysql_error());
  80. echo '<div class="erroralert"><div class="alercik"><b>Rekord został usunięty!</b><br><br><br><a href="ekategoria.php"><img src="img/back2.gif"></a></div></div>';
  81. }
  82. echo "<a href=\"ekategoria.php?a=del&id={$r['idK']}\"><img src=\"img/del.gif\"></a><a href=\"ekategoria.php?b=edit&amp;id={$r['idK']}\"><img src=\"img/edit.gif\"></a>";
  83. }
  84. ?>
  85. </td>
  86. </tr>
  87. </table>
  88. </td>
  89. </tr>
  90. </table>
  91. <?php
  92. echo '';
  93. }
  94. else echo '<div class="erroralert"><div class="alercik"><b>Nie masz dostępu do tej części strony!</b><br><br><br><a href="index.php"><img src="img/back2.gif"></a></div></div>';
  95. echo '</div>';
  96. include('footer.php');
  97. ?>


Jeśli ktoś miałby pomysł jak to rozwiązać - proszę o pomoc.
Go to the top of the page
+Quote Post
cim
post 19.04.2011, 20:01:14
Post #2





Grupa: Zarejestrowani
Postów: 208
Pomógł: 28
Dołączył: 9.08.2004
Skąd: Stargard

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


Witam,

może chodzi o to, że w formularzu masz takie pole:
  1. <input type="hidden" name="id" value="'.$id.'" />

a w PHP odbierasz zawartość tak:
  1. $id = $_POST['idK'];


Albo zmień nazwę pola na formularzu, albo przy odbieraniu.

Pozdrawiam

PS takie problemy warto sprawdzać wypisując zapytanie na ekran - jeżeli będzie w nim czegoś brakowało od razu będziesz to widział.


--------------------
errare humanum est
Go to the top of the page
+Quote Post
yoshinobi
post 19.04.2011, 20:35:39
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 19.04.2011

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


Cytat
Albo zmień nazwę pola na formularzu, albo przy odbieraniu.


Bravo =]
problem tkwił w nazwie pola na formularzu.
zamiast tego:
  1. <input type="hidden" name="id" value="'.$id.'" />

powinno być tak:
  1. <input type="hidden" name="idK" value="'.$id.'" />


Jedna literka potrafi narobić zamieszania...

Dziękuję za pomoc!

Ten post edytował yoshinobi 19.04.2011, 20:42:06
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: 20.05.2024 - 19:08