Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MysQl] Edycja ocen w dzienniku
macko123
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.05.2013

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


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! (IMG:style_emoticons/default/smile.gif)

Ten post edytował macko123 14.01.2014, 18:20:29
Go to the top of the page
+Quote Post
ctom
post
Post #2





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


szukaj: edytuj.php -> linia 13

ale zabezpieczysz to troszkę ? ;-)
Go to the top of the page
+Quote Post
macko123
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.05.2013

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


Dzięki za odpowiedź, ale nie bardzo zrozumiałem co jest nie tak w tej linijce (IMG:style_emoticons/default/sad.gif)


Ten post edytował macko123 14.01.2014, 19:01:17
Go to the top of the page
+Quote Post
modern-web
post
Post #4





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


linia 14 w pliku edytuj.php, spróbuj

  1. if(isset($_POST['action']))
Go to the top of the page
+Quote Post
macko123
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.05.2013

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


Nieee... To też nie pomaga
Go to the top of the page
+Quote Post
ctom
post
Post #6





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


pewnie, że nie pomaga bo tam jest BŁĄD !

analizuje linię 13 w edytuj.php i szukaj czego się "tyczy" w edit.php
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




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ć?
Go to the top of the page
+Quote Post
Turson
post
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


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
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #9





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A nie, jest jeszcze sprytniej...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 15:39