Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]jak zrobić usuwanie kilku komentarzy z bazy jednocześnie?
lamcpp
post
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 2
Dołączył: 10.05.2009

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


System komentarzy na mojej stronie działa w ten sposob ze komentarz najpierw przesyłany jest do mnie do weryfikacji i ja albo go publikuję albo usuwam. Kod:
  1. <?php
  2. $wynik = mysqli_query($dbc,"SELECT * FROM komentarz WHERE pokaz=0");
  3. while($rezult = mysqli_fetch_array($wynik)){
  4. echo '<input type="checkbox" value="{$rezult[\'id\']}" />&nbsp;&nbsp;';
  5. echo $rezult['id'].'&nbsp;&nbsp;'.$rezult['tresc'].'&nbsp;&nbsp;<a href="index.php?publikuj='.$rezult['id'].'">';
  6. echo 'Publikuj</a>&nbsp;&nbsp;<a href="index.php?usun_komentarz='.$rezult['id'].'">Usuń</a><br />';
  7. }
  8. ?>
Chciałbym go przekształcić abym mógł jednocześnie usuwać np. 10 komentarzy. W tym celu dodałem linikę: echo '<input type="checkbox" value="{$rezult[\'id\']}" />&nbsp;&nbsp;';
tak by można było klikać checkboxy z artykułami, które mają być usunięte. Następnie dodałem formularz z listą rozwijalną, tak by użytkownik wybrał czy chce usunąć czy dodać komentarz do bazy.

  1. <div id="komentarz-wyk-akcje">
  2. <form action="" method="post">
  3. <select name="wyk-masowa-akcje">
  4. <option selected="selected">Wykonaj jedną z akcji:</option>
  5. <option value="dodaj">Dodaj komentarz</option>
  6. <option value="usun">Usuń komentarz</option>
  7. </select>
  8. <input type="submit" value="Zastosuj" name="Zastosuj" />
  9. </form>
  10. </div>


I teraz zastanawiam się jak to zakodować, by "po wybraniu przeze mnie jakiejś liczny np. 4 komentarzy (poprzez zaznaczenie obok nich "ptaszka" w checkboxie) by dokładnie te komentarze zostały usunięte z bazy.
Stanęło na tym, że nie wiem jak zakodować takiego IFa,
czyli: JEŚLI zaznaczyłeś komentarze i wybrałeś z listy rozwijalnej "usun" to USUŃ dokładnie te zaznaczone komentarze.
Prośba o pomoc w tej zagwozdce

Ten post edytował lamcpp 22.10.2012, 21:17:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
modern-web
post
Post #2





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Generując formularz przypisujesz im ID to samo co w bazie, przy usuwaniu zbierasz te ID i usuwasz każdy po kolei.
Podstawy PHP znasz?


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Checkboxy oprócz value muszą mieć jeszcze name. Ale to strzał w dziesiątkę by value zwracało id komentarza.

  1. echo '<input type="checkbox" name="jakas_nazwa[]" value="{$rezult['id']}" />';


Co robisz dalej? Wczytujesz w pętli wartości id, które zostały przesłane z formularza oraz w zależności od wyboru generujesz zapytanie:

  1.  
  2. foreach ($_POST['jakas_nazwa'] as $value) {
  3. if ($_POST['wyk_masowa_akcje'] == 'usun') $query = 'costam'; else if ($_POST['wyk_masowa_akcje'] == 'dodaj') $query = 'costam1';
  4. $query .= "WHERE id='";
  5. $query .= $value . "'";
  6. // wykonaj zapytanie
  7. }


To tak schematycznie i w uproszczeniu. Każdy obrót pętli to nowe zapytanie. A możesz też wygenerować jedno długie zapytanie, np z IN i wykonać je już po pętli.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
modern-web
post
Post #4





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Wszystko ok, ale zapytanie może wykonać po prostu używając ... WHERE `id` = 'coś' OR `id` = 'coś' OR `id` = 'coś' ... także robienie kilku zapytań jest zbędne smile.gif

Ten post edytował modern-web 22.10.2012, 22:12:34


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #5





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Cytat(modern-web @ 22.10.2012, 22:34:51 ) *
Wszystko ok, ale zapytanie może wykonać po prostu używając ... WHERE `id` = 'coś' AND `id` = 'coś' AND `id` = 'coś' ... także robienie kilku zapytań jest zbędne smile.gif


Że zacytuję sam siebie:

Cytat
To tak schematycznie i w uproszczeniu. Każdy obrót pętli to nowe zapytanie. A możesz też wygenerować jedno długie zapytanie, np z IN i wykonać je już po pętli.


Jeśli jest to UPDATE czy DELETE to tak, ale jeśli już INSERT to nie zrobi tego w ten sposób. Albo pojedynczo, albo się bawić w zapytanie w rodzaju INSERT INTO VALUES (val1,val1,val1...), (val2,val2,val2...).

Także to już kwestia wyboru i rodzaju zapytania. Przedstawiłem rozwiązanie najprostsze i nieco schematyczne, dla rozważenia dla autora.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Greg0
post
Post #6





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


Można jeszcze użyć formuły
Kod
WHERE id IN (1,2,3,4)

Gdzie cyfry to ID komentarzy.
Dzięki czemu wystarczy zrobić implode tablicy po przecinku i wstawić string w nawiasy do jednego zapytania.

Ten post edytował Greg0 22.10.2012, 21:52:28
Go to the top of the page
+Quote Post
markonix
post
Post #7





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(modern-web @ 22.10.2012, 22:34:51 ) *
Wszystko ok, ale zapytanie może wykonać po prostu używając ... WHERE `id` = 'coś' AND `id` = 'coś' AND `id` = 'coś' ... także robienie kilku zapytań jest zbędne smile.gif

Jak już to OR wink.gif


--------------------
Go to the top of the page
+Quote Post
modern-web
post
Post #8





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Faktycznie, mój błąd. Rozgarnięcie dziś sięga zenitu! smile.gif
Poprawiłem, a przykład podałem jako banał bo taki najłatwiej będzie mu pojąć.

Pozdrawiam.


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
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 Aktualny czas: 22.08.2025 - 09:16