Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edytowanie i usuwanie z bazy. !
Forum PHP.pl > Forum > PHP
pajdakks
Witam,
napisałem taki kod który wyświetla mi rekordy z bazy. Wszystko super działa. Ale jak teraz zrobić, żeby przy każdym rekordzie mógł go edytować i usuwać.
Tutaj kod do wyświetlania:
  1. <?
  2. $username="xxx";
  3. $password="xxx";
  4. $database="xx";
  5.  
  6. mysql_connect('xxxxl',$username,$password);
  7. @mysql_select_db($database) or die("Nie odnaleziono bazy danych");
  8.  
  9. $query = "SELECT imie, nazw, urodz, dziennik, zwiazek, gg, mail, zainter FROM ankieta";
  10.  
  11. $result = mysql_query($query);
  12.  
  13. echo '<table border="1">';
  14.  
  15. while ($row = mysql_fetch_assoc($result)){
  16.  
  17. echo '<tr>';
  18.  
  19. echo '<td>'.$row['imie'].'</td>';
  20.  
  21. echo '<td>'.$row['nazw'].'</td>';
  22. echo '<td>'.$row['urodz'].'</td>';
  23. echo '<td>'.$row['dziennik'].'</td>';
  24. echo '<td>'.$row['zwiazek'].'</td>';
  25. echo '<td>'.$row['gg'].'</td>';
  26. echo '<td>'.$row['mail'].'</td>';
  27. echo '<td>'.$row['zainter'].'</td>';
  28. echo '</tr>';
  29.  
  30. }
  31.  
  32. echo '</table>';
  33.  
  34.  
  35. ?>
  36.  

Pozdrawiam
darko
W najprostszym przypadku: dodajesz kolejną komórkę do tabeli
  1. echo '<td><a href="skrypt_edycji.php?id=' . $row['ID'] . '>edytuj</a></td>';

gdzie $row['ID'] to id rekordu (masz klucze primary na tabeli?)
następnie tworzysz skrypt skrypt_edycji.php w którym:

1) łączysz się z bazą
2) wyświetlasz formularz edycji, w którym uwzględniasz wszystkie możliwe pola które można edytować
3) sprawdzasz czy przyszło ID i czy jest numeryczne (is_numeric($_GET['id'])) i wymuszasz typ na liczbę całkowitą
4) jeśli masz id to wysyłasz zmodyfikowane dane z formularza albo do tego samego skryptu, gdzie zapisujesz zmiany (polecenia mysql UPDATE) albo do zupełnie nowego

Analogicznie postępujesz w przypadku usuwania wpisów tylko już bez formularza, najlepiej na tej pierwszej liście (tabeli) dodać od razu obok linku edytuj:
  1. echo '<td><a href="skrypt_usuwania.php?id=' . $row['ID'] . ' >usuń</a></td>';


Na końcu poleceniem DELETE * from tabela where warunek usuwasz wybrany rekord.
pajdakks
Nie mam właśnie tego ustawione. A jak przydzielić do każdego rekordu ID ?
Bo tak nie zbyt wiem jak to zrobić
Pozdrawiam.
greycoffey
Stwórz takie pole:
  1. id int(11) AUTO_INCREMENT PRIMARY KEY,


pajdakks
Coś takiego ?


I jak teraz ma wyglądać ten formularz ?
emajl22
tak, coś takiego

darko dokładnie Ci opisał co i jak.
greycoffey
Darko Ci już napisał. Tylko jak zmodyfikowałeś tablicę, to prawdopodobnie pola 'id' będą puste.
pajdakks
Mam coś takiego:
admin.php ( tutaj wyświetla rekordy)
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  4.  
  5. </head>
  6. <body>
  7. <?
  8. include('connect.php');
  9.  
  10. $query = "SELECT imie, nazwisko FROM test";
  11.  
  12. $result = mysql_query($query);
  13.  
  14. echo '<table border="1">';
  15.  
  16. while ($row = mysql_fetch_assoc($result)){
  17.  
  18. echo '<tr>';
  19.  
  20. echo '<td>'.$row['imie'].'</td>';
  21.  
  22. echo '<td>'.$row['nazwisko'].'</td>';
  23.  
  24.  
  25. echo '</tr>';
  26.  
  27.  
  28. }
  29. echo '<td><a href="skrypt_edycji.php?id=' . $row['id'] . '>edytuj</a></td>';
  30.  
  31.  
  32. echo '</table>';
  33.  
  34.  
  35. ?>
  36. </body>
  37. </html>
  38.  


I plik skrypt_edycja.php

  1. <?
  2. include('connect.php');
  3. if(isset($_GET['skrypt_edycji'])) {
  4. if(isset($_GET['ok'])){
  5. $id = $_GET['id'];
  6. $imie = $_POST['imie'];
  7. $nazwisko = $_POST['nazwisko'];
  8. mysql_query("UPDATE `test` SET `nazwisko`='".$nazwisko."', `imie`='".$imie."' WHERE `id`='".$_GET['id']."'");
  9. echo "ZEDYTOWANO!";
  10. ?>
  11. <head>
  12. <meta HTTP-EQUIV="Refresh" CONTENT="2;URL=skrypt_edycji.php">
  13. </head>
  14. <?php
  15. } else {
  16. $result9 = mysql_query("SELECT * FROM `test` WHERE id='".$_GET['id']."'");
  17. $data9 = mysql_fetch_array($result9);?>
  18. <form method="post" action="skrypt_edycji=1&id=<?php echo $_GET['id']; ?>&ok=1">
  19.  
  20. tytul: <input name="imie" value="<?php echo $data9['imie']; ?>"><br>
  21. treść: <textarea id="nazwisko" name="nazwisko" rows="15" cols="80" style="width: 80%" class="textarea">
  22. <?php echo $data9['nazwisko']; ?>
  23. </textarea>
  24. </div>
  25.  
  26. <!-- Some integration calls -->
  27.  
  28. <br />
  29. <input type="submit" name="save" value="Submit" />
  30. <input type="reset" name="reset" value="Reset" />
  31. </div>
  32. </form>
  33. <?php
  34. }
  35. }


I niestety nie działa.. Tzn. po naciśnięciu edytuj nic się nie pojawia ale i tez zaden blad nie wyskakuje.
darko
Zwróć uwagę na dane, które wyciągasz z bazy aktualnie pobierasz:
SELECT imie, nazwisko FROM test
brakuje id
cp1250 to nie jest poprawne kodowanie pól
pajdakks
id jest jako zmienna. I nie wyświetla sie.
osl
jaka zmienna? darko dokładnie napisał, gdzie leży problem. Jeśli nie pobierasz "id" z bazy, jak chcesz żeby się wyświetliło?
pajdakks
edytowalem to:
  1. "SELECT imie, nazwisko, id FROM test";
  2.  


I dalej nic. jak dam edytuj to tworzy się taki link adres bazowy+ skrypt_edycji.php?id=

I za id= nic sie nie wyswietla
trucksweb
wejdz do bazy i zobacz czy masz tam jakies rekordy i iczy pola : id, imie, nazwisko sa wypelnione
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.