Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Nie działa edycja rekordów
Forum PHP.pl > Forum > Przedszkole
zaworek
Witam,

czy mógłby ktoś wskazać błąd w poniższym kodzie? Męczę się z tym już jakiś czas i nie wiem co robię źle.
Dane z bazy wyświetlają się poprawnie, obok nich wyświetlam linki edytuj i usuń. Problem polega na tym ,że po kliknięciu w edycję pojawiają mi się pobrane dane ale po kliknięciu edytuj nie są wprowadzane zmiany w bazie.

  1. <?
  2. $uchwyt=mysql_connect('host','nazwa bazy','haslo') //dane do polaczenie z baza
  3. or die('Błąd połączenia');
  4. mysql_select_db('ber') //wybieram baze
  5. or die('Nie można wybrać bazy');
  6.  
  7. echo '<strong>Wpisy z bazy</strong><br /><br />';
  8. $link=mysql_query('SELECT * FROM scrap ORDER BY id desc'); //wyswietlanie danych w odwrotnej kolejnosci
  9. while($wiersz=mysql_fetch_array($link))
  10. {
  11. echo 'dodano: <b>'.$wiersz['dodano'].'</b>';
  12. echo ',nr.sprawy: <b>'.$wiersz['sprawa'].'</b>';
  13. echo ' : <a href="index.php?wpisy=edytuj&id='.$wiersz['id'].'"><span style="color:green">edytuj</span></a>';
  14. echo ' / <a href="index.php?wpisy=usun&id='.$wiersz['id'].'"><span style="color:red">usuń</span></a>';
  15. echo "<br />\n";
  16. }
  17.  
  18. if(isset($_GET['wpisy']) && $_GET['wpisy']=='edytuj' && isset($_GET['id'])) //wyswietlenie danych do edycji
  19. {
  20. $id=$_GET['id'];
  21. $link=mysql_query("SELECT * FROM scrap WHERE id='$id'");
  22. $wiersz=mysql_fetch_array($link);
  23.  
  24. echo '<b>Edytuj wpis:</b><br />';
  25. echo '<form method="POST" action="index.php?wpisy=edytuj&id='.$wiersz['id'].'">
  26. Napisał:<br />
  27. <input type="text" name="autor" size="24" value="'.$wiersz['technik'].'"><br />
  28. Tytuł:<br />
  29. <input type="text" name="tytul" size="64" value="'.$wiersz['sprawa'].'"><br />
  30. Treść:<br />
  31. <textarea rows="5" name="tresc" cols="42">'.$wiersz['opis'].'</textarea><br />
  32. <input type="submit" value="Edit">
  33. </form>';
  34. }
  35. elseif(isset($_GET['wpisy']) && $_GET['wpisy']=='edytuj' && isset($_GET['id'])) //nadpisanie danych
  36. {
  37. $autor=$_POST['technik'];
  38. $tytul=$_POST['sprawa'];
  39. $tresc=$_POST['opis'];
  40. $id=$_GET['id'];
  41. mysql_query("UPDATE scrap SET technik='$autor', sprawa='$tytul', opis='$tresc' WHERE id='$id'");
  42. echo 'Pomyślnie edytowałem sprawę! <br /><br /><strong>Technik:</strong><br />'.$autor.',<br /><strong>Nowa sprawa:</strong><br />'.$tytul.',<br /><strong>Nowy opis:</strong><br />'.$tresc.'<br /><br />';
  43. }
  44. elseif(isset($_GET['wpisy']) && $_GET['wpisy']=='usun' && isset($_GET['id'])) //usuniecie rekordow
  45. {
  46. $id=$_GET['id'];
  47. mysql_query("DELETE FROM scrap WHERE id='$id'");
  48. echo 'Pomyślnie usunąłem sprawę numer '.$id.'<br />';
  49. }
  50. ?>
nospor
NIe sprawdzasz zadnych, zadnych bledow - nic.
Tu masz wskazowki o wyswietlaniu bledow PHP, o wyswietlaniu bledow mysql, o debugowaniu. Zastosuj sie do nich
Temat: Jak poprawnie zada pytanie
zaworek
Nie wiem czy to poprawne ale sprawdzenia czy baza wyświetla błędy wykonałem w ten sposób:

  1. $sql= mysql_query("UPDATE scrap SET technik='$autor', sprawa='$tytul', opis='$tresc' WHERE id='$id'");
  2. echo 'ZAPYTANIE:'.$sql;
  3. mysql_query($sql) or die('BŁĄD:'.mysql_error());


Po kliknięciu na edycję nie mam żadnego komunikatu zwrotnego. Tak jakby ten fragment kodu w ogóle się nie wykonywał.
nospor
1)
Nie: $sql= mysql_query("UPDATE scrap SET technik='$autor', sprawa='$tytul', opis='$tresc' WHERE id='$id'");
a: $sql= "UPDATE scrap SET technik='$autor', sprawa='$tytul', opis='$tresc' WHERE id='$id'";
Nie kopiuj bezmyslnie smile.gif

2) Miales zastosowac sie do wszystkich podanych tam porad, wlacznie z wyswietlaniem wszystkich bledow oraz patrzeniem co dostajesz (print_r i spolka)
3) Skoro nie masz komunikatu, znaczy ze tam nie dochodzi. Skoro tam nie dochodzi znaczy ze warunek:
elseif(isset($_GET['wpisy']) && $_GET['wpisy']=='edytuj' && isset($_GET['id']))
nie jest spelniony

edit:
zobacz co natworzyles:
if(isset($_GET['wpisy']) && $_GET['wpisy']=='edytuj' && isset($_GET['id']))
...
elseif(isset($_GET['wpisy']) && $_GET['wpisy']=='edytuj' && isset($_GET['id']))

Dla ELSEIF dales identyczny warunek co dla IF. No i niby jakim cudem do tego ELSEIF ma ci dojsc?
zaworek
Dziękuję za konstruktywne uwagi. Poprawiony i działający kod poniżej.

  1. <?
  2. $uchwyt=mysql_connect('host','nazwa bazy','haslo') //dane do polaczenie z baza
  3. or die('Błąd połączenia');
  4. mysql_select_db('ber') //wybieram baze
  5. or die('Nie można wybrać bazy');
  6. mysql_set_charset('utf8');
  7. echo '<strong>Wpisy z bazy</strong><br /><br />';
  8. $link=mysql_query('SELECT * FROM scrap ORDER BY id desc'); //wyswietlam dane z bazy w kolejnosci
  9. while($wiersz=mysql_fetch_array($link))
  10. {
  11. echo 'dodano: <b>'.$wiersz['dodano'].'</b>';
  12. echo ',nr.sprawy: <b>'.$wiersz['sprawa'].'</b>';
  13. echo ' : <a href="index.php?wpisy=edytuj&id='.$wiersz['id'].'"><span style="color:green">edytuj</span></a>';
  14. echo ' / <a href="index.php?wpisy=usun&id='.$wiersz['id'].'"><span style="color:red">usuń</span></a>';
  15. echo "<br />\n";
  16. }
  17.  
  18. if(isset($_GET['wpisy']) && $_GET['wpisy']=='edytuj' && isset($_GET['id']))
  19. {
  20. $id=$_GET['id'];
  21. $link=mysql_query("SELECT * FROM scrap WHERE id='$id'");
  22. $wiersz=mysql_fetch_array($link);
  23.  
  24. echo '<b>Edytuj wpis:</b><br />';
  25. echo '<form method="POST" action="index.php?wpisy=wyedytuj&id='.$wiersz['id'].'">
  26. Napisał:<br />
  27. <input type="text" name="technik" size="24" value="'.$wiersz['technik'].'"><br />
  28. Tytuł:<br />
  29. <input type="text" name="sprawa" size="64" value="'.$wiersz['sprawa'].'"><br />
  30. Treść:<br />
  31. <textarea rows="5" name="opis" cols="42">'.$wiersz['opis'].'</textarea><br />
  32. <input type="submit" value="Edit">
  33. </form>';
  34. }
  35. elseif(isset($_GET['wpisy']) && $_GET['wpisy']=='wyedytuj' && isset($_GET['id']))
  36. {
  37.  
  38. $autor=$_POST['technik'];
  39. $tytul=$_POST['sprawa'];
  40. $tresc=$_POST['opis'];
  41. $id=$_GET['id'];
  42.  
  43. mysql_query("UPDATE scrap SET technik='$autor', sprawa='$tytul', opis='$tresc' WHERE id='$id'");
  44. echo 'Pomyślnie edytowałem sprawę! <br /><br /><strong>Technik:</strong><br />'.$autor.',<br /><strong>Nowa sprawa:</strong><br />'.$tytul.',<br /><strong>Nowy opis:</strong><br />'.$tresc.'<br /><br />';
  45. }
  46. elseif(isset($_GET['wpisy']) && $_GET['wpisy']=='usun' && isset($_GET['id']))
  47. {
  48. $id=$_GET['id'];
  49. mysql_query("DELETE FROM scrap WHERE id='$id'");
  50. echo 'Pomyślnie usunąłem sprawę numer '.$id.'<br />';
  51. }
  52. ?>
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.