Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]edytowanie danych z bazy
Forum PHP.pl > Forum > Przedszkole
gagatek
mam problem, mam bazę z filmami i chciałem zrobić edycję wybranego filmu, jestem początkujący. Od razu przyznaje się że trochę zamieszałem. Ale opisze o co chodzi. Klikając na link edytuj film, otwiera mi się skrypt php edytuj.php w którym mam:
  1. <?php session_start();
  2. include('config.php');
  3. include('function.php');
  4. top("Edytuj film");
  5. error_reporting(E_ALL ^ E_NOTICE);
  6.  
  7. menu();
  8.  
  9.  
  10. $id =$_POST['id'];
  11. $query=" SELECT * FROM filmy WHERE ID = $id";
  12. $result=mysql_query($query);
  13. $num=mysql_numrows($result);
  14.  
  15.  
  16. var_dump($query);
  17.  
  18. $i=0;
  19. while ($i < $num) {
  20. $tytul_polski=mysql_result($result,$i,"tytul_polski");
  21. $tytul_oryginalny=mysql_result($result,$i,"tytul_oryginalny");
  22. $REZYSER=mysql_result($result,$i,"REZYSER");
  23. $SCENARIUSZ=mysql_result($result,$i,"SCENARIUSZ");
  24. $ROK_PRODUKCJI=mysql_result($result,$i,"ROK_PRODUKCJI");
  25. $CZAS_TRWANIA=mysql_result($result,$i,"CZAS_TRWANIA");
  26. $CENA=mysql_result($result,$i,"CENA");
  27. $OPIS=mysql_result($result,$i,"OPIS");
  28.  
  29.  
  30. ++$i;
  31. }
  32. ?>
  33.  
  34. <div id="formularz">
  35. <form method="post" action="edytuj.php">
  36. <table>
  37. <tr class="tlo-b"><td>Podaj ID filmu:</td>
  38. <td> <input type="text" name="id" value="<? echo $id; ?>"></td></tr>
  39. <tr class="tlo-b"><td>Tytul oryginalny:</td>
  40. <td><input type="text" name="ud_tytul_oryginalny" value="<? echo $tytul_oryginalny; ?>"/></td></tr>
  41. <tr class="tlek"><td>Tytul polski:</td>
  42. <td><input type="text" name="ud_tytul_polski" value="<? echo $tytul_polski; ?>"/></td></tr>
  43. <tr class="tlo-b"><td>Reżyser:</td>
  44. <td><input type="text" name="ud_REZYSER" value="<? echo $REZYSER; ?>" /></td></tr>
  45. <tr class="tlo-b"><td>Wytwórnia:</td>
  46. <td><input type="text" name="ud_SCENARIUSZ" value="<? echo $SCENARIUSZ; ?>" /></td></tr>
  47. <tr class="tlek"><td>Rok produkcji:</td>
  48. <td><input type="text" name="ud_ROK_PRODUKCJI" value="<? echo $ROK_PRODUKCJI; ?>"/></span></td></tr>
  49. <tr class="tlo-b"><td>Czas trwania:</td>
  50. <td><input type="text" name="ud_CZAS_TRWANIA" value="<? echo $CZAS_TRWANIA; ?>"/></td></tr>
  51. <tr class="tlo-b"><td>Ilość sztuk:</td>
  52. <td><input type="text" name="ud_CENA" value="<? echo $CENA; ?>"/></td></tr>
  53. <tr class="tlo-b"><td>Gatunek:</td>
  54. <td><select name="gatunek">
  55. <?php pobierzGatunek(); ?>
  56. </select></td></tr>
  57. <tr class="tlo-b"><td>Opis:</td>
  58. <td><textarea cols="35" rows="10" name="ud_opis"><? echo $OPIS; ?></textarea> </td></tr>
  59. <tr><td colspan="2" align="center"><input type="submit" value="Zmień" /></td></tr>
  60. </table></form>
  61. </div>
  62. <?php
  63.  
  64. $id=$_POST['id'];
  65. $ud_tytul_polski=$_POST['ud_tytul_polski'];
  66. $ud_tytul_oryginalny=$_POST['ud_tytul_oryginalny'];
  67. $ud_REZYSER=$_POST['ud_REZYSER'];
  68. $ud_SCENARIUSZ=$_POST['ud_SCENARIUSZ'];
  69. $ud_ROK_PRODUKCJI=$_POST['ud_ROK_PRODUKCJI'];
  70. $ud_CZAS_TRWANIA=$_POST['ud_CZAS_TRWANIA'];
  71. $ud_CENA=$_POST['ud_CENA'];
  72.  
  73. $query="UPDATE filmy SET tytul_polski='$ud_tytul_polski', tytul_oryginalny='$ud_tytul_oryginalny', REZYSER='$ud_REZYSER', SCENARIUSZ='$ud_SCENARIUSZ', ROK_PRODUKCJI='$ud_ROK_PRODUKCJI', CZAS_TRWANIA='$ud_CZAS_TRWANIA', CENA='$ud_CENA' WHERE ID = '$id'";
  74. mysql_query($query);
  75.  
  76. var_dump($query);
  77. echo " Rekord zaktualizowany ";
  78.  
  79. down();
  80. ?>
  81.  

Po wejściu do edytuj film wyskakuje nad formularzem:
  1. Warning: mysql_numrows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\xxx\administrator\edytuj.php on line 13
  2. string(32) " SELECT * FROM filmy WHERE ID = "


Pluje się bo nie było podanego ID filmu do edycji. Po wpisaniu jakiegokolwiek ID do formularza są prawidłowo uzupełniane dane z bazy. I tu mam już mały problem, bo nie wiem za bardzo jak i co mam zmienić żeby ten błąd nie wyskakiwał.
I kolejnym problemem jest to ze jak już zmienię coś w tych inputach i kliknę "Zmień" to dane nie zostają zmodyfikowane, tylko są pobierane z bazy jeszce raz bez zmiany.

Bardzo prosze o Waszą pomoc....
nospor
Po pierwsze:
nie: error_reporting(E_ALL ^ E_NOTICE);
a: error_reporting(E_ALL);

Po drugie: skoro klikasz na link z id filmu, to
nie: $id =$_POST['id'];
a: $id =$_GET['id'];
A najlepiej
$id =$_REQUEST['id'];

Bo raz id pobierasz z get a raz z post
K0nio
a czy funkcja nie powinna się nazywać mysql_num_rows() zamiast mysql_numrows ? Bo chyba zadziałała widząc po błędzie , przepraszam, że wcinam się ale kto pyta nie błądzi


edit: google od razu poprawiało mysql_numrows więc sadziłem, że to literówka autora postu ale fakt manual przede wszystkim. Dzięki za wyjaśnienie
nospor
Cytat
ale kto pyta nie błądzi
Ale ten kto pyta mógłby od czasu do czasu też zaglądać do manuala zamiast pytac.
http://pl2.php.net/manual/en/function.mysql-num-rows.php
Cytat
For backward compatibility, the following deprecated alias may be used: mysql_numrows()
gagatek
nie klikam na link z filmu tylko w pole id podaje id filmu, to będzie zmienione bo będzie wybierane z listy rozwijanej, ale narazie chce się ogólnie uporać z tym żeby te dane zostały jednak zmienione w bazie. Przede wszystkim potrzebuje pomocy żeby po zmianie wartości w inputach były one zapisywane w bazie... Nie wiem co jest nie tak, bo jak cokolwiek zmienię i kliknę "zmień" to var_dump($query); wyswietla "UPDATE filmy SET ..." z wartościami zmienionymi, ale nie zostają one zapisane w bazie a do inputów ładują się spowrotem wartości które były pobrane przed kliknieciem "zmien"...

czy mógłby ktoś pomóc?
mfgmg
Witam, przepraszam, że podpinam się do tematu ale mam podobny problem jak kolega
gagatek
czy ktoś może pomóc?
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.