Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Usuwanie + modyfikacja rekordów
Forum PHP.pl > Forum > Przedszkole
pedro84
Witka!

Utworzyłem sobie formularz, nie będe ukrywał, że korzystałem z neta. Programista PHP ze mnie żaden, a potrzebuję to zrobić.

Mianowicie, cały plik form.php wygląda tak:
  1. <?php
  2.  require("db.php");
  3. // odbieramy dane z formularza
  4. $band = $_POST['band'];
  5. $date = $_POST['date'];
  6.  
  7. if($band and $date) {
  8.  
  9. // dodajemy rekord do bazy
  10. $ins = @mysql_query("INSERT INTO audio SET band='$band', date='$date'");
  11.  
  12. if($ins) echo "Rekord został dodany poprawnie";
  13. else echo "Błąd nie udało się dodać nowego rekordu";
  14.  
  15.  
  16.  
  17. }
  18.  
  19. ?> 
  20. <br><br><br><br><br>
  21.  
  22. Twoja lista:<br>
  23. <?php
  24. $wynik = mysql_query("SELECT * FROM audio")
  25. or die('Błąd zapytania'); 
  26.  
  27. /*
  28. wyświetlamy wyniki, sprawdzamy,
  29. czy zapytanie zwróciło wartość większą od 0
  30. */
  31. if(mysql_num_rows($wynik) > 0) {
  32. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  33. echo "<table cellpadding=\"2\" border=1>";
  34. while($r = mysql_fetch_assoc($wynik)) {
  35. echo "<tr>";
  36. echo "<td>".$r['band']."</td>";
  37. echo "<td>".$r['date']."</td>";
  38. echo "<td>
  39.  <a href=\"index.php?action=del&id={$r['id']}\">DEL</a>
  40.  <a href=\"index.php?action=edit&id={$r['id']}\">EDIT</a>
  41.  </td>";
  42. echo "</tr>";
  43. }
  44. echo "</table>";
  45. }
  46. ?>
  47. <?php
  48.  
  49. if (isset($_GET['action'])){
  50. switch ($_GET['action']) {
  51.  
  52. case "del":
  53. $query = "DELETE FROM audio WHERE id='id'";
  54. $result = mysql_query($query);
  55.  break;
  56.  
  57. case "edit":
  58. break;
  59. }
  60. }
  61. ?>


Co musze zrobić, żeby usuwał bądź edytował mi rekordy w tabeli?

Cheers!
Pedro
user123
Nie wiem czy o to Ci chodzi ale najlepiej pobierze sobie z tablii liczbę porządkową albo jakąś niepowtarzalną daną i zrób:

  1. $log = $row['login'];
  2. $query = "UPDATE ludzie_z_listy SET pas='moje_nowe_tajne_haslo' WHERE login='$log'";
  3. @mysql_query($query);
pedro84
Cytat(user123 @ 29.01.2008, 23:23:59 ) *
Nie wiem czy o to Ci chodzi ale najlepiej pobierze sobie z tablii liczbę porządkową albo jakąś niepowtarzalną daną i zrób:

  1. $log = $row['login'];
  2. $query = "UPDATE ludzie_z_listy SET pas='moje_nowe_tajne_haslo' WHERE login='$log'";
  3. @mysql_query($query);


Próbowałem coś z tego sklecić, ale mi nie idzie:(

Zrobiłem coś takiego, ale jak kliknę EDIT to mi wtedy kasuje wszystkie wpisy z pola BAND. Oto kod:
  1. <?php
  2. require("db.php");
  3.  
  4. if (isset($_GET['action'])){
  5. switch ($_GET['action']) {
  6.  
  7. case "del":
  8. $id = $_GET['id'];
  9. $query = "DELETE FROM audio WHERE id = '$id'";
  10. $result = mysql_query($query);
  11.  break;
  12.  
  13.  
  14. case "edit":
  15. $id = $_GET['id'];
  16. echo '<form action="index.php?action=edit&id=$id" method="post">
  17. Band:<br />
  18. <input type="text" name="band" /><br />
  19. Date:<br />
  20. <input type="text" name="date" /><br />
  21. <input type="submit" value="dodaj" />
  22. </form>';
  23. $band = $_GET['band'];
  24. $query = "UPDATE audio SET band='$band' WHERE id = '$id'";
  25. $result = mysql_query($query);
  26. break;
  27.  
  28. }
  29. }
  30. ?>


Co namotałem? wstydnis.gif
potreb
Edytujesz wszystkie pola przed edytowaniem, przy okazji czyści ci wszystkie pola bo nie wysyłasz zmiennej band i id, dlatego ci nie działało, pisane z palca więc może coś nie działać :/

  1. <?php
  2. case "edit":
  3. $id = $_GET['id'];
  4. $wynik = mysql_query("SELECT * FROM audio WHERE id='$id'") or die('Błąd zapytania'); 
  5. while($r = mysql_fetch_assoc($wynik)) {
  6. echo '<form action="index.php?action=edit&id=$id" method="post">
  7. Band:<br />
  8. <input type="text" name="band" value="'.$r['band'].'" /><br />
  9. Date:<br />
  10. <input type="text" name="date" /><br />
  11. <input type="submit" value="dodaj" name="edit" />
  12. </form>';
  13. }
  14.  
  15. if ($_POST['edit']) {
  16. $id = $_GET['id'];
  17. $band = $_POST['band'];
  18. $query = "UPDATE audio SET band='$band' WHERE id = '$id'";
  19. $result = mysql_query($query);
  20. echo "Dane zostały zmodyfikowane";
  21. }
  22. break;
  23.  
  24. }
  25. ?>
pedro84
Dzięki za odpowiedź! Wszystko generalnie działa, wyświetla tekst o pomyślnej modyfikacji danych, ale nie zmienia ich w bazie. Kombinuję, ale coś mi nie idzie:)

Edit:
Dostaję teraz komunikat
Kod
Notice: Undefined index: edit in D:\EasyPHP 2.0b1\www\bootleg_new\funcs.php on line 20
puz219
pokaż kod pliku funcs.php

chyba powinno być:
  1. <?php
  2. if ($_GET['edit'])
  3. ?>
potreb
  1. <?php
  2. if (isset($_POST['edit'])) {
  3. ?>


Masz włączone pokazywanie wszystkich błędów na stronie error_reporting(E_ALL)
pedro84
@potreb: Tak własnie mam, przez isset. ładnie wywala tekst, że Modyfikacja zakońcozna pomyslnie, ale nie zmienia danych w bazie. Raportowanie błedów mam właczone.

Edit
Nie wiem czy to ważne...ale kiedy na liście rekordów klikam Edit link ma postać
Kod
http://127.0.0.1/bootleg_new/index.php?action=edit&id=62
kiedy kliknę dodaj na formularzu edycji skrypt przechodzi do listy, ale link wtedy wygląda
Kod
http://127.0.0.1/bootleg_new/index.php?action=edit&id=$id
potreb
  1. <?php
  2. <form action="index.php?action=edit&id='.$id.' " method="post">
  3. ?>


Ma być, po prostu nie przekazywało ci zmiennej dlatego nie mogłeś z edytować rekordu, niby nic a błąd jest.

Jeżeli masz jakąś zmienną w echo ' '; to ci nie wyświetli, musisz zmienną oprawić w dodatkowe apostrofy:
echo ' '.$zmienna.' ';

Edit: popełniłem przedtem literówkę, a raczej forum
pedro84
Generalnie...nic nie dało:)

Zmieniłem nawet we wszystkich plikach, także rekord band i date w ten sam sposób mi podaję. Nic się nie dzieje:(
potreb
Pokaż kod
pedro84
Już mam! Dzięki wielkie!

Teraz ciuteczkę z innej beczki. A co mam zrobić, żeby po edycji bądź usunięciu przechodził do strony głównej?
potreb
Dodajesz po miejscu gdzie aktualizuje kod:
  1. <?php
  2. header ('location: index.php');
  3. ?>


a jak wyskoczy ci błąd header coś tam:
dodaj na sam początek skryptu:
  1. <?php
  2.  
  3. //a na koncu skryptu
  4. ?>
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.