Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MysQl] Edycja ocen w dzienniku
Forum PHP.pl > Forum > Przedszkole
macko123
Hej,

Piszę dziennik ocen i mam problem z edycją ocen. Wyświetlają mi się uczniowie, ich oceny oraż przyciski do usunięcia lub edycji. Kiedy wchodzę w edycję wpisuję ocenę i zatwierdzam zmianę, to update w bazie danych się nie wykonuje. Oto fragment kodu:

edit.php
  1. $wynik3 = mysql_query("select * from oceny WHERE nazwa_uz='$nazw_uz'");
  2. while($r3 = mysql_fetch_array($wynik3)) {
  3. echo '<td>';
  4. echo '<form action="edytuj.php" method="post">';
  5. echo $r3['ocena'];
  6. echo '<input type="hidden" name="id_oc" value='.$r3["id_oc"].' />';
  7. echo '<input type="submit" name="edit" value="Edytuj" />';
  8. echo '<input type="submit" value="Usuń" name="usun" size="1" />';
  9. echo '&emsp;';
  10. echo '</form>';
  11. echo '</td>';
  12. }


edytuj.php
  1. $edit = $_POST['edit'];
  2. $id_oc = $_POST['id_oc'];
  3. if ($edit) {
  4. $result = mysql_query("SELECT * FROM oceny WHERE id_oc = '$id_oc'") or die(mysql_error());
  5. $dane = mysql_fetch_array($result);
  6.  
  7. echo'<form method="post" action="">
  8. Ocena: <input type="text" name="ocena" value="'.$dane["ocena"].'"><br>
  9. <input type="submit" name="action" value="zapisz_zmiany">';
  10. echo '</form>';
  11.  
  12. }
  13. $edyt = $_POST['action'];
  14. if($edyt)
  15. {
  16. $poprawiona_ocena = $_POST['ocena'];
  17. $zap = mysql_query("UPDATE oceny SET ocena='$poprawiona_ocena' WHERE id_oc='$id_oc'");
  18. echo "Ocena poprawiona";
  19. }


Nie mogę znaleźć błędu. Pomoże ktoś?
Z góry dzięki! smile.gif
ctom
szukaj: edytuj.php -> linia 13

ale zabezpieczysz to troszkę ? ;-)
macko123
Dzięki za odpowiedź, ale nie bardzo zrozumiałem co jest nie tak w tej linijce sad.gif
modern-web
linia 14 w pliku edytuj.php, spróbuj

  1. if(isset($_POST['action']))
macko123
Nieee... To też nie pomaga
ctom
pewnie, że nie pomaga bo tam jest BŁĄD !

analizuje linię 13 w edytuj.php i szukaj czego się "tyczy" w edit.php
Kshyhoo
Może prościej. Porównaj to:
  1. echo '<input type="submit" name="edit" value="Edytuj" />';

i to:
  1. $edyt = $_POST['action'];

I odpowiedz na zwariowane bądź co bądź pytanie: czy to może działać?
Turson
Problem leży gdzie indziej. Mianowicie w edytuj.php masz $id_oc = $_POST['id_oc'] na podstawie, którego robisz update WHERE id_oc='$id_oc'
Tylko, że w tym momencie $id_oc jest puste, ponieważ strona została przeładowana (po wysłaniu nowej oceny).

Zrobiłbym tak:
  1. if (isset($_POST['edit'])){
  2. $result = mysql_query("SELECT * FROM oceny WHERE id_oc = '$id_oc'") or die(mysql_error());
  3. $dane = mysql_fetch_array($result);
  4.  
  5. echo'<form method="post" action="">
  6. Ocena: <input type="text" name="ocena" value="'.$dane["ocena"].'"><br>
  7. <input type="hidden" name="id_oc" value="'.$_POST["id_oc"].'">
  8. <input type="submit" name="action" value="zapisz_zmiany">';
  9. echo '</form>';
  10.  
  11. }
  12.  
  13. if(isset($_POST['action'])){
  14. {
  15. $poprawiona_ocena = $_POST['ocena'];
  16. $id_oc = $_POST['id_oc'];
  17. $zap = mysql_query("UPDATE oceny SET ocena='$poprawiona_ocena' WHERE id_oc='$id_oc'");
  18. echo "Ocena poprawiona";
  19. }


Dodatkowo pamiętaj o zabezpieczeniu przed SQL Injection, bo masz kulawy skrypt
Kshyhoo
A nie, jest jeszcze sprytniej...
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.