Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP+MySQL]Usuwanie użytkowników...
Forum PHP.pl > Forum > PHP
Heweljusz
Witam
Chciałem napisać skrypt usuwający wybranych userów, poprzez formularz
Kod formularza jest generowany automatycznie w pętli while(Skrypt ma usuwać tylko zaznaczonych - pole checkbox).
Podam kawałek z tym polem:
  1. <input class='textbox' type='checkbox' name='' value='' />

Nie wiem jak wypełnić pola name i value, i jaki kod php napisać, żeby aktualizowało rekordy dla zaznaczonych użytkowników. Każdy user ma swój unikalny ID.
Nie mogę wymyślić jak to zrobić, ponieważ tablica $_POST zawiera jeszcze kilka wartości i w żaden sposób to nie wychodzi.
W razie braku jakiejś informacji proszę napisać, na pewno się zrehabilituje.
Zapytanie sql:
  1. UPDATE ".$db_prefix."users SET user_clan_id='0', user_clan_rank='0' WHERE user_id='".$_POST["$i"]."'"
NoiseMc
Daj tak (to tylko zarys kodu):
  1. foreach ($users as $user)
  2. {
  3. ?> <input type="checkbox" name="user[<?=$user['UserID'] ?>]" value="" /> <?
  4. }

Dostaniesz na przyklad:
  1. <input type="checkbox" name="user[1]" value="1" />
  2. <input type="checkbox" name="user[8]" value="1" />
  3. <input type="checkbox" name="user[15]" value="1" />

a zapytanie:
  1. <?php
  2. foreach ($_POST['user'] as $userID => $value)
  3. {
  4.  $db->execute ('UPDATE ' . $db_prefix . 'users SET user_clan_id = 0, user_clan_rank = 0 WHERE user_id = ' . $userID);
  5. }
  6. ?>
Heweljusz
Jest problem: jest jeszcze wyswietlanie listy userów, zrobiono w pętli while.
  1. <?php
  2. while($row = mysql_fetch_array($result)) {
  3.  
  4. echo "
  5. <tr>
  6. <td class='tbl1' width='2' align='center'>
  7. <input class='textbox' type='checkbox' name='".$x."' value='".$row['user_id']."' />
  8. </td>
  9. <td class='tbl1' width='1'>".$x."</td>
  10. <td class='tbl1' align='center'>".$row['user_id']."</td>
  11. <td class='tbl1' align='center'>".$row['user_name']."</td>
  12. <td class='tbl1' align='center'>".rank($row['user_clan_rank'])."</td>
  13. </tr>
  14. ";
  15. ?>

To jest wtyczka do php-fusion, więc trzeba wykluczyć obiektowe programowanie
Gdyby przemianować ją na foreach, to może by się udało
Fixus
po prostu nazwij checkbox`y numerami od 1 w górę. Potem jak będziesz sprawdzał które checkbox`y są zaznaczone zrób tak:
Kod
$query="SELECT * FROM user";
$result = mysql_query($query);
$ilosc = mysql_num_rows($result);
for($i=1; $i<=$ilosc; $i++) {
if(isset($_POST[$i])) {
//zapytanie sql
} else {}

i po sprawie smile.gif
Heweljusz
Nie ma sensu sprawdzać ID dla wszystkich userów.
Problem nadal nie jest rozwiązany sad.gif
Edit: No i musze wysyłać dwa zapytania, a kod i tak już za dużo obciąża bazę.
Fixus
słuchaj to może tak...kiedy wyciągasz dane twórz zawsze dwa pola
checkbox i input type='hidden'...oba nazywaj wg. zmiennej $i jak podałem we wcześniejszym poście tylko, że do inputa o typie hidden wrzucaj jeszcze atrybut value który będzie przechowywał albo id użytkownika albo jego unikalny login...
następnie wystarczy, że bedzięsz sprawdzał które pola są zaznaczone za pomocą pętli jak napisałem wcześniej
jeżeli checkbox jest ustawiony dajesz zapytanie któe kasuje wg. ID czy loginu...to nie obciąża bardzo serwa
Heweljusz
Spox, narazie zostawię jak jest, ale będę kombinował.
Dzięki za pomoc smile.gif
Edit:
Wymyśliłem jeszcze coś takiego:
  1. <?php
  2. $i = 1;
  3. foreach($_POST as $user => $i) {
  4. if(isset($_POST[$i])) {
  5. dbquery("UPDATE ".$db_prefix."users SET user_clan_id='0', user_clan_rank='0' WHERE user_id='".$_POST[$i]."'");
  6. $i++;
  7. }
  8. }
  9. ?>

W input name i value ustawiłem na id użytkownika z bazy, kod narazie działa tongue.gif
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.