Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP i mysql usuwanie rekordów z bazy
kamil1114
post 17.10.2009, 13:35:09
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Proszę Was o pomoc , ponieważ nie umiem zrobić poprawnie skryptu , który usuwałby podane rekordy z bazy danych. Robię tak:
  1. $przypisanie=mysql_query('select id from newsy ORDER BY id DESC');
  2.  
  3. while($i=mysql_fetch_assoc($wyswietl)){
  4.  
  5. $id=$i['id'];
  6.  
  7. }
  8.  
  9.  
  10. echo "<b>Usuwanie newsów:</b></br</br>";
  11. echo "<form method='post'>";
  12. echo "<select name='kasowanie'>";
  13. echo "<option value='$id'>";
  14. echo "</select>";
  15. echo "<input type='submit' value='Kasuj'>";
  16. echo "</form>";
  17.  
  18. if($_POST['kasowanie'] == ' '){
  19. }
  20. else {
  21.  
  22. mysql_query("DELETE FROM newsy where id='$id'");
  23.  
  24.  
  25. }


Co robię źle ? W bazie danych jest tabela o nazwie newsy i 3 kolumny: id, tytul, tresc. Kolumna id ma auto_increment i jest kluczem podstawowym. Nie umiem sobie z tym poradzić.
Go to the top of the page
+Quote Post
Quantum
post 17.10.2009, 14:11:43
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


  1. $przypisanie=mysql_query('select id from newsy ORDER BY id DESC');
  2.  
  3. while($i=mysql_fetch_assoc($wyswietl)){
  4. $id=$i['id'];
  5. }


$id=$i['id'];

.... gdzie zmienna $wyswietl ? pomyłka w nazwie. BTW. w ten sposób do zmiennej $id przypiszesz ostatni pobrany identyfikator z bazy.

chyba chciałeś tak ? :

  1.  
  2. $wyniki=mysql_query('select id from newsy ORDER BY id DESC');
  3. echo '<b>Usuwanie newsów:</b></br></br>';
  4. echo '<form method="post">';
  5. echo '<select name="kasowanie">';
  6.  
  7. while($i=mysql_fetch_row($wyniki))
  8. {
  9. echo '<option value="' . $i[0] .'">News ' .$i[0]. ' (' . $i[1] . ')</option>';
  10. }
  11.  
  12. echo '</select>';
  13.  
  14. echo '<input type="submit" name="delete_news" value="Kasuj">';
  15. echo '</form>';
  16.  
  17. if(isset($_POST['delete_news']))
  18. {
  19. mysql_query('DELETE FROM newsy where id=' . intval($_POST['kasowanie']));
  20. }


poczytaj jeszcze jakieś kursy php, poćwicz z formularzami, musisz zrozumieć ogólną zasade działania.
Zawsze gdy tworzysz jakikolwiek skrypt zaplanuj jego etapy, tutaj sprowadzają się one do : "pobierz wszystkie id z tabeli news, posortuj je malejąco, wyświetl opcje, jeśli formularz został wysłany skasuj news o id z $_POST['kasowanie']."

Ten post edytował sniffer32 17.10.2009, 14:22:25
Go to the top of the page
+Quote Post
kamil1114
post 17.10.2009, 14:28:08
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Bardzo dziękuję Ci za pomoc. Zaraz przeanalizuję Twój kod i zobaczę co robiłem źle.

Nie rozumiem tylko tej linii:
  1. echo '<option value="' . $i[0] .'">News ' .$i[0]. ' (' . $i[1] . ')</option>';



Ten post edytował kamil1114 17.10.2009, 14:37:02
Go to the top of the page
+Quote Post
thek
post 18.10.2009, 00:16:45
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zrobił tak, ponieważ funkcja do wyciągania danych to mysql_fetch_row, a nie jak zazwyczaj mysql_fetch_assoc lub zdanie się na domyslne zachowanie mysql_fetch_array smile.gif Odwołuje się wiec do danych poprzez offset 0 -> pierwsza kolumna wyniku, 1 -> druga kolumna itd...


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 18:45