Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
 
Start new topic
Odpowiedzi
Turson
post
Post #2





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

Posty w temacie


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: 28.12.2025 - 04:16