Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z edycją - przekazywanie z PHP do mysql
Forum PHP.pl > Forum > Przedszkole
-Marcin-
Witam wszystkich,
jestem początkujący w php, mam nadziję, że nie będzie dla Was problemem to co mnie męczy już parę dni sad.gif

piszę sobie (a właściwię dopiero się uczę) mały skrypcik, chcę móc dodawać pojazdy do bazy danych, usuwać, edytować, w miarę czasu i nauki będe go rozbudowywał ale to już przyszłość

dodawanie, usuwanie, wypisywanie danych z tabeli działa bez problemu, jednak z edycją jest pewien problem, podejrzewam, że błąd jest w zapytaniu, ale nie dostaję żadnego błedu - nie dokonuję się też aktualizacja sad.gif

plik pojazdy.php - zarządzanie pojazdami, czyli dodawanie, edycja, usuwanie - część pliku jest w komentarzu, bo tak sobie kombinuję na różne sposoby i nie chcę pisać od nowa

  1. <?php
  2. include ('naglowek.php');
  3. include ('form_trucks_add.php');
  4.  
  5. echo '<hr width="610px">';
  6.  
  7. if(isset($_GET['akcja']))
  8. {
  9. // kasowanie pojazdu
  10. if ($_GET['akcja']=='delete')
  11. {
  12. $id_do_usuniecia = $_GET['id'];
  13. $zapytanie ="DELETE FROM trucks WHERE id=$id_do_usuniecia";
  14. $wynik2=mysql_query ($zapytanie) or die(mysql_error());
  15.  
  16. if ($wynik2)
  17. echo "<center><p> Ilość usuniętych rekordów: ". mysql_affected_rows($polaczenie) ."</p></center>";
  18.  
  19. }
  20. // edytowanie pojazdu
  21. if ($_GET['akcja']=='edit')
  22. {
  23. include ('form_trucks_edit.php'); // dołączenie formularza edycji pojazdu
  24.  
  25. /*
  26. {
  27.  
  28. $id_ed = 'id';
  29. $nr_rej_ed = 'nr_rej';
  30. $marka_ed = 'marka';
  31. $data_prod_ed = 'data_prod';
  32. $nr_nadw_ed = 'nr_nadw';
  33.  
  34. $zapytanie5 = "UPDATE trucks SET nr_rej='$nr_rej_ed', marka='$marka_ed', data_prod='$data_prod_ed', nr_nadw='$nr_nadw_ed' WHERE id='$id_ed'";
  35. $wynik5=mysql_query ($zapytanie5) or die(mysql_error());
  36.  
  37. if ($wynik5)
  38. include ('form_trucks_edit.php');
  39.  
  40.  
  41. else
  42. echo "<p>Aktualizacja nie powiodła się!</p>";
  43.  
  44. }*/
  45. }
  46. }
  47. $zapytanie = 'SELECT id, nr_rej, marka, data_prod, nr_nadw FROM trucks';
  48. $wynik = mysql_query($zapytanie, $polaczenie) or die(mysql_error());
  49. ?>
  50.  
  51. <center>
  52. <br>
  53. <table border="0" cellpadding="3" cellspacing="3" width="610px">
  54. <tr>
  55. <th colspan="4">Pojazdy aktualnie znajdujące się w bazie:</th>
  56. </tr>
  57. <tr style="background-color: #eaeaea;">
  58. <th width="160px">Numer rejestracyjny</th>
  59. <th width="160px">Marka</th>
  60. <th width="110px">Data produkcji</th>
  61. <th width="140px">Numer nadwozia</th>
  62. <!--<th width="25px"></th>
  63. <th width="25px"></th>-->
  64. </tr>
  65.  
  66.  
  67. <?php
  68.  
  69.  
  70. //wybieranie z tabeli wszystkich pojazdów
  71.  
  72. while ($rekord = mysql_fetch_assoc($wynik)) {
  73.  
  74. echo "<tr style=\"background-color: #eaeaea;\">";
  75.  
  76. echo "<td>" . $rekord['nr_rej'] . "</td><td>" . $rekord['marka'] . "</td><td>" . $rekord['data_prod'] . "</td><td>" . $rekord['nr_nadw'] . "</td>";
  77. ?>
  78. <th width="20px">
  79. <a href="<?php echo $_SERVER['PHP_SELF'];?>?akcja=delete&id=<?php echo $rekord['id'];?>" onclick="return (confirm('Jesteś pewien, że chcesz usunąć pojazd ? \r\n \r\nOperacja jest nieodwracalna !!!'))"><img src="./img/drop.png" border="0"</a>
  80. </th>
  81. <th width="20px">
  82. <a href="<?php echo $_SERVER['PHP_SELF'];?>?akcja=edit&id=<?php echo $rekord['id'];?>" onclick="return (confirm('Jesteś pewien, że chcesz edytować dany pojazd ?'))"><img src="./img/edit.png" border="0"</a>
  83. </th>
  84.  
  85. <?php
  86. echo "</tr>\n";
  87.  
  88. }
  89. ?>
  90. </table>
  91.  
  92. </center>
  93.  
  94.  
  95. <?php include ('stopka.php') ?>


plik form_trucks_edit.php - czyli sama edycja pojazdów

  1. <?php
  2.  
  3. // formularz edycji poszczególnego rekordu
  4.  
  5. if (isset($_GET['akcja']) == 'edit')
  6. {
  7.  
  8.  
  9. $zapytanie = "SELECT * FROM trucks WHERE id=".$_GET['id'];
  10. $produkt = mysql_query($zapytanie);
  11. $rekord = mysql_fetch_assoc($produkt);
  12.  
  13.  
  14.  
  15. // edytowanie pojazdu w bazie
  16.  
  17. if (isset($_POST['zmien']))
  18. {
  19.  
  20. // odbieramy dane z formularza
  21.  
  22.  
  23. $nr_rej = $_POST['nr_rej'];
  24. $marka = $_POST['marka'];
  25. $data_prod = $_POST['data_prod'];
  26. $nr_nadw = $_POST['nr_nadw'];
  27. //sprawdzenie poprawności wpisanych danych, później zabezpieczyć !!!
  28. if (!empty($nr_rej) && !empty($marka) && is_numeric($data_prod) && !empty($nr_nadw))
  29. {
  30.  
  31. // uaktualniamy tabelę
  32.  
  33.  
  34. $zapytanie = "UPDATE trucks SET nr_rej='$nr_rej', marka='$marka', data_prod='$data_prod', nr_nadw='$nr_nadw' WHERE id='$id'";
  35.  
  36. $wynik = mysql_query($zapytanie) or die ('Nie dodano rekordu, błąd :'. mysql_error());
  37. echo "<p /> Poprawnie zedytowano w bazie ". mysql_affected_rows($polaczenie) ." pojazd";
  38.  
  39. }
  40. else
  41. {
  42. echo "Błednie podane dane";
  43. }
  44. }
  45. }
  46. ?>
  47.  
  48.  
  49. <center><form action="pojazdy.php" method="POST">
  50.  
  51. ID: <input readonly name="id" value="<?php echo $rekord['id'] ?>" size="2"/>
  52.  
  53. Nr rej: <input name="nr_rej" value="<?php echo $rekord['nr_rej'] ?>" size="10" maxlength="9"/>
  54.  
  55. Marka: <input name="marka" value="<?php echo $rekord['marka'] ?>" size="15" />
  56.  
  57. Data prod: <input name="data_prod" value="<?php echo $rekord['data_prod'] ?>" size="5" />
  58.  
  59. Nr nadw: <input name="nr_nadw" value="<?php echo $rekord['nr_nadw'] ?>" size="20" />
  60.  
  61. <input type="submit" name="zmien" value="Zapisz" />
  62.  
  63. </form></center>


będę wdzięczny za choćby naprowadzenie na błąd jaki zrobiłem smile.gif
Barcelona
Wyechuj te zmienne z tego zapytania UPDATE trucks SET nr_rej='$nr_rej', marka='$marka', data_prod='$data_prod', nr_nadw='$nr_nadw' WHERE id='$id i zobacz czy faktycznie pobiera Ci dane.
-Marcin-
zrobiłem tak, wklejam tylko fragment kodu

  1. $zapytanie = "UPDATE trucks SET nr_rej='$nr_rej', marka='$marka', data_prod='$data_prod', nr_nadw='$nr_nadw' WHERE id='$id'";
  2.  
  3.  
  4. echo $nr_rej;
  5. echo $marka;
  6. echo $data_prod;
  7. echo $nr_nadw;
  8. echo $id;
  9.  
  10.  
  11.  
  12. $wynik = mysql_query($zapytanie) or die ('Nie dodano rekordu, błąd :'. mysql_error());


nie wyświetliły się zmienne sad.gif
nospor
if (isset($_GET['akcja']) == 'edit')
Przecież wysyłając forma, nie masz ustawionego parametru akcja w get.
-Marcin-
to jak to powinno wyglądać, bo nie mogę zrozumieć sad.gif

coś kombinuję, ale nie wychodzi
nospor
No skoro warunkujesz to istnieniem akcja w get, no to dodaj to do forma.....

<form action="pojazdy.php?akcja=edit" method="POST">
Mysl troszke.

Poza tym, isset zwraca TRUE lub FALSE i nie możesz tego porównywać do tekstu edit...
nie:if (isset($_GET['akcja']) == 'edit')
a: if (isset($_GET['akcja']) && $_GET['akcja'] == 'edit')
Barcelona
Tudzież dla zwiększenia bezpieczeństwa użyj

  1. <form action="pojazdy.php" method="POST">
  2. <input type="hidden" name="akcja" value="edit" />
  3. ....
  4. </form>
-Marcin-
wielkie dzięki za pomoc, teraz działa, choć pokazały się dwa błędy, ale nimi powinienem dać sobie radę smile.gif
nospor
@Barcelona przecież to nie zwiększa żadnego bezpieczeństwa.
Barcelona
@Nospor, nie wiem, ja tam zawsze wolę nie pokazywać userom co się dzieje w skrypcie i daje wszystkie warunki postem. User nie będzie widział pojazdy.php?akcja=edit, tylko samo pojazdy.php
Jak ktoś jest dociekliwy to sobie spojrzy w source.
Ale i tak masz rację że to nie zwiększa bezpieczeństwa.
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.