Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][php] Formularz nie spełnia swojego zadania
Forum PHP.pl > Forum > Przedszkole
puz219
Witam.

Zrobiłem formularz edycji rekordów w bazie mysql i formularz wcale nic w niej nie zmienia.

Czy ktoś wie dlaczego??

  1. <?php
  2. //Nawiazujemy polaczenie z baza, podajac adres hosta, login oraz haslo.
  3. $baza=mysql_connect("localhost", "user", "user");
  4.  
  5. //wybieramy interesujaca nas baze
  6. mysql_select_db("filmypuz", $baza);
  7.  
  8. ?>
  9. <html>
  10. <head>
  11. <title>Zmiana statusu</title>
  12. </head>
  13. <body bgcolor="#777777" leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0">
  14. <table width="100%" height="100%" border="0">
  15. <tr>
  16. <td width="100%" height="100%" align="center">
  17. <table width="600" height="200" style='border: solid 1px black'>
  18. <tr>
  19. <td width="600" height="200" bgcolor="white" align="center">
  20. <?php
  21.  
  22. //status oglądania
  23. if ($_POST[status]== 0) 
  24. {
  25.  $result=mysql_query("UPDATE filmy set checked='0' where filmID='$id'", $baza);
  26. }
  27.  
  28. if ($_POST[status]== 1) 
  29. {
  30.  $result=mysql_query("UPDATE filmy set checked='1' where filmID='$id'", $baza);
  31. }
  32.  
  33. //status pożyczania
  34. if ($_POST[pozyczony]== 1) 
  35. {
  36.  $result=mysql_query("UPDATE filmy set pozycz='1' where filmID='$id'", $baza);
  37. }
  38. else
  39. {
  40.  $result=mysql_query("UPDATE filmy set pozycz='0' where filmID='$id'", $baza);
  41. }
  42.  
  43. //osoba, której pożyczono film
  44. if ($_POST[pozycz_komu]== NULL) 
  45. {
  46.  $result=mysql_query("UPDATE filmy set pozycz_komu='NULL' where filmID='$id'", $baza);
  47. }
  48. else
  49. {
  50.  $result=mysql_query("UPDATE filmy set pozycz='$pozycz_komu' where filmID='$id'", $baza);
  51. }
  52.  
  53. //ocena
  54. if ($_POST[ocena]== NULL) 
  55. {
  56.  $result=mysql_query("UPDATE filmy set ocena='NULL' where filmID='$id'", $baza);
  57. }
  58. else
  59. {
  60. /*
  61. $sprawdz_ocene=$ocena;
  62. if(0<$sprawdz_ocene<=10)
  63. {
  64. echo "<font face=Arial size=3 color=#FF0000><b>Ocena musi byc liczbą większą od 0 i mniejszą lub równą 10!<b><br><br><a href=change_status.php?filmID=".$id."><font size=2 color="#FF0000">[ Powrót, w celu poprawy danych ]</font></a></font>";
  65. }
  66. else
  67. {
  68. */
  69. $result=mysql_query("UPDATE filmy set ocena='$ocena' where filmID='$id'", $baza);
  70. /*
  71. }
  72. */
  73. }
  74. /*
  75. //potwierdzenie
  76. $potwierdz=$sprawdz_ocene;
  77. if(0<$potwierdz<=10)
  78. {
  79. */
  80. $potwierdz="<font face=Arial size=3 color=#009900><b>Dziękuję! Dane są właśnie aktualizowane.</b><br><small></font color=black>(Zamknij to okno i odśwież stronę filmu, aby zobaczyć wyniki.)</font></small></font>";
  81. /*
  82. }
  83. else
  84. {
  85. $potwierdz="";
  86. }
  87. */
  88.  
  89. echo $potwierdz;
  90.  
  91. ?>
  92. </td></tr></table>
  93. </td></tr></table>
  94. </body>
  95. </html>


To plik change_status2.php, który jest odpowiedzialny za uaktualnienie bazy danych.

Proszę o pomoc..
Ziels
Wybacz ale coś mi telepator nawala i nie mogę wyczytać struktury twojej bazy danych.

mysql_error" title="Zobacz w manualu PHP" target="_manual Wstaw gdzie trzeba i wszystko jasne.
mrjozo
A skąd pobierasz $id ?

Pokaż kod formularza....

używaj apostrofów przy pobieraniu z tablicy

  1. <?php
  2. $_POST['pozyczony']
  3. ?>
puz219
Oto kod formularza:

  1. <?php
  2. include_once("funkcje.php");
  3. $sql="select * from filmy where filmID=".$_GET["filmID"] ;
  4. lacz_bd();
  5. $wynik=mysql_query($sql);
  6. if(!$wynik){
  7. echo "Błąd. Połączenie nie powiodło się!";
  8. }
  9. $wiersz=mysql_fetch_array($wynik);
  10.  
  11. //polski tytuł
  12. $title=$wiersz["polski_tytul"];
  13. if($title == "")
  14. {
  15. $title=$wiersz["tytul"];
  16. }
  17. else
  18. {
  19. $title=$wiersz["polski_tytul"];
  20. }
  21.  
  22. //status
  23. $stat=$wiersz["checked"];
  24. if($stat == 0)
  25. {
  26. $stat="Nie oglądnięty";
  27. }
  28. else
  29. {
  30. $stat="Oglądnięty";
  31. }
  32.  
  33.  
  34. //status pożyczania
  35. $pozycz=$wiersz["pozycz"];
  36. if($pozycz == 0)
  37. {
  38. $pozycz="NIE";
  39. }
  40. else
  41. {
  42. $pozycz="TAK";
  43. }
  44.  
  45.  
  46. //status widoczny na stronie filmu
  47. $widoczny=$wiersz["pozycz"];
  48. if($widoczny == 0)
  49. {
  50. $widoczny=$wiersz["checked"];
  51. if($widoczny == 0)
  52. {
  53. $widoczny="<font color=#FF0000>Nie oglądnięty</font>";
  54. }
  55. else
  56. {
  57. $widoczny="<font color=#009900>Oglądnięty</font>";
  58. }
  59. }
  60. else
  61. {
  62. $widoczny="<font color=#666666>Pożyczony&nbsp;(".$wiersz["pozycz_komu"].")</font>";
  63. }
  64.  
  65. //osoba której pożyczono film
  66. $pozycz_komu=$wiersz["pozycz_komu"];
  67. if($pozycz_komu == NULL)
  68. {
  69. $pozycz_komu="Nikomu nie pożyczono";
  70. }
  71. else
  72. {
  73. $pozycz_komu=$wiersz["pozycz_komu"];
  74. }
  75.  
  76. //ocena
  77. $ocena=$wiersz["checked"];
  78. if($ocena == 0)
  79. {
  80. $ocena="<font color=#660000><b>Brak oceny!</b></font>";
  81. }
  82. else
  83. {
  84. $ocena=$wiersz["ocena"]."/10";
  85. }
  86.  
  87. ?>
  88. <html>
  89. <head>
  90. <title><?php echo "Zmiana statusu - ".$title; ?></title>
  91. </head>
  92. <body bgcolor="#777777" leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" link="#000000" vlink="#000000" alink="#000000">
  93. <center>
  94. <form name="zmiana_statusu" method="post" action="change_status2.php">
  95. <table width="600" height="170" border="1" bordercolor="black" cellpadding="0" cellspacing="0">
  96. <tr>
  97. <td width="600" colspan="2" height="100" bgcolor="#DDDDDD" align="center"><font face="Arial" size="4"><b><?php echo $title." - Zmiana statusu"; ?></b></font></td>
  98. </tr>
  99. <tr>
  100. <td width="300" height="30" bgcolor="#BBBBBB" align="center"><font face="Arial" size="2"><b>&nbsp;&nbsp;ID:</b></font></td>
  101. <td width="300" height="30" bgcolor="#EEEEEE" align="center"><input name="id" type="text" size="10" value="<?php echo $wiersz["filmID"]; ?>" disabled="disabled"></td>
  102. </tr>
  103. <tr>
  104. <td width="600" colspan="2" height="30" bgcolor="#BBBBBB" align="center">&nbsp;&nbsp;<font face="Arial" size="2"><b>Aktualny status:</b>&nbsp;<?php echo $widoczny; ?></font></td>
  105. </tr>
  106. <tr>
  107. <td width="300" height="50" bgcolor="#BBBBBB" align="center"><font face="Arial" size="2"><b>Status oglądania:</b><br><?php echo $stat; ?></font></td>
  108. <td width="300" height="50" bgcolor="#EEEEEE" align="center"><font face="Arial" size="2"><b>Zmień na:</b><br><input type="radio" name="status" value="1" />Oglądnięty&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="status" value="0" />Nie oglądnięty</font></td>
  109. </tr>
  110. <tr>
  111. <td width="300" height="50" bgcolor="#BBBBBB" align="center"><font face="Arial" size="2">&nbsp;&nbsp;<b>Pożyczony:</b>&nbsp;<?php echo $pozycz; ?></font></td>
  112. <td width="300" height="50" bgcolor="#EEEEEE" align="center"><font face="Arial" size="2"><input type="checkbox" name="pozyczony" value="1" />Pożycz komuś</font></td>
  113. </tr>
  114. <tr>
  115. <td width="300" height="80" bgcolor="#BBBBBB" align="center"><font face="Arial" size="2"><b>Pożyczony osobie:</b><br><?php echo $pozycz_komu; ?></font></td>
  116. <td width="300" height="80" bgcolor="#EEEEEE" align="center"><font face="Arial" size="2"><b>Imię, nazwisko lub ksywka osoby, której pożyczono film:</b><br><small>(Jezeli filmu nie pożyczono, zostaw to pole puste)</small><br><input name="pozycz_komu" type="text" size="30"></font></td>
  117. </tr>
  118. <tr>
  119. <td width="300" height="100" bgcolor="#BBBBBB" align="center"><font face="Arial" size="2"><b>Aktualna ocena:</b><br><?php echo $ocena; ?></font></td>
  120. <td width="300" height="100" bgcolor="#EEEEEE" align="center"><font face="Arial" size="2"><b>Oceń film:</b><br><small>(Pamiętaj, że status filmu musi być <b>Oglądnięty</b>, inaczej ocena nie będzie widoczna na stronie filmu)</small></br><input name="ocena" type="text" size="5">&nbsp;<b>/10</b><br><small><i>(Ocena musi być liczbą większą od 0 i mniejszą lub równą 10)</i></small></font></td>
  121. </tr>
  122. <tr>
  123. <td width="600" colspan="2" height="50" bgcolor="#EEEEEE" align="center"><font face="Arial" size="2"><input type="submit" name="Submit" value="Zmień dane"></font></td>
  124. </tr>
  125. </table>
  126. </form>
  127. </center>
  128. </body>
  129. </html>


Może to coś z formularzem, bo jak pododawałem apostrofy to też nic nie zmieniało
mrjozo
Apostrofy niech będą... dalej się zastanawiam skąd masz $id

  1. <?php
  2. $result=mysql_query("UPDATE filmy set checked='0' where filmID='$id'", $baza);
  3. ?>


?

Czy nie powinieneś czasem na poczatku przypisać mu wartości:

  1. <?php
  2. $id = $_POST['id'];
  3. ?>


Pozatym pole id z formularza nie będzie się przesyłało gdzyż jest "disabled"

Zamiast disabled zmień na readonly="readonly"

albo zmień kod na:

  1. <td width="300" height="30" bgcolor="#EEEEEE" align="center"><input name="id" type="hidden" value="<?php echo $wiersz["filmID"]; ?>"> <?php echo $wiersz["filmID"]; ?></td>
puz219
zamiana disabled na readonly pomogła. Dzięki

Jeszcze mam jeden problem.

Chodzi o pole wybory (type="checkbox"). Jak zrobić, tak, że jak zaznaczę to pole, to mi zmieni wartośc pola na 1, a jak nie zaznaczę, to zmieni na 0.
Napisałem coś takiego.

w formularzu
  1. <td width="300" height="50" bgcolor="#EEEEEE" align="center"><font face="Arial" size="2"><input type="checkbox" name="pozyczony" value="1" />Pożycz komuś</font></td>


a to częśc pliku php.
  1. <?php
  2. //status pożyczania
  3. if ($_POST['pozyczony']== 1) 
  4. {
  5.  $result=mysql_query("UPDATE filmy set pozycz='1' where filmID='$id'", $baza);
  6. }
  7. else
  8. {
  9.  $result=mysql_query("UPDATE filmy set pozycz='0' where filmID='$id'", $baza);
  10. }
  11. ?>


Jak by ktoś mógł mi coś doradzić, to byłbym bardzo wdzięczny.
maziak
według mnie kod php który podałeś(apropo checkboxa powyżej) jest OK i powinien dzialac.
Możesz ewentualnie zamiast else postawić warunek :
  1. <?php
  2. // wykrzyknik czyli negacja
  3. if (! $_POST['pozyczony'])
  4. {
  5. $result=mysql_query("UPDATE filmy set pozycz='0' where filmID='$id'", $baza);
  6. }
  7. ?>

Jezeli nadal nie bedzie dzialac sprawdź za pomoca echo czy wartosc $_POST['pozyczony'] jest OK.
puz219
Zrobiłem tak jak kazałeś. Zamiast else wstawiłem twój kod.

Niestety nie dało to żadnych rezultatów.

Jak sprawdzam przy użyciu funkcji echo:
  1. <?php
  2. echo $_POST['pozyczony'];
  3. ?>

to wyświetla 1, więc chyba wszystko powinno być OK, ale nie jest sad.gif

czy ktoś zna tego przyczynę?
mrjozo
  1. <?php
  2. if ($_POST[pozyczony] == '1') 
  3. {
  4.  $result=mysql_query("UPDATE filmy set pozycz=1 where filmID='$id'", $baza);
  5. echo "pozyczony";
  6. }
  7. else
  8. {
  9.  $result=mysql_query("UPDATE filmy set pozycz=0 where filmID='$id'", $baza);
  10. echo "jest";
  11. }
  12. ?>


wklej powyzszy kod i sprawdz cos sie wyswietla, oraz czy sie zmienia w zaleznosci od zaznaczenia
maziak
No jezeli za pomoca echo wyswietla "1", to znaczy ze pierwszy warunek jest prawdziwy ( == '1'), a wtedy else jest pomijany, a zanegowanie(to co ja napisalem) jest nieprawdziwe, a wiec nie wykonywane. Czyli wsio teoretycznie OK. Sprawdz czy warunek drugi wykona sie, gdy przekazesz wartość "0" - powinien winksmiley.jpg

Jezeli jakims cudem,w wyniku jakichś błędów z tego checkboxa zawsze wychodzi "1", przekaz "na sile" wartosc "0" polem danych ukrytych (wywalasz checkboxa, wstawiasz hidden'a o nazwie checkboxa, i value=0). Powinno wszystko brykać - a to bedzie oznaczac ze cos nie tak z tym checkboxem. Sprawdz na innej przegladarce, choc wg. mnie to nieprawdopodobne, żeby cos bylo z tym nie tak.
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.