Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [mysql] Uwuwanie za pomocą dynamicznej listy CHECKBOX'ÓW
Forum PHP.pl > Forum > Przedszkole
jsz
Przetrząsnąłem forum i google... Problem który opisze niżej zatrzymał mnie na 5 dni i mam już tego powyżej uszu.

Mianowicie, mam dynamicznie generującą się listę checkbox'ów

CODE
while($linia=mysql_fetch_array($query)) /* Pętla dopóki istnieją dane */

echo "<tr><td align=\"center\" width=\"30px\">
<input type=\"checkbox\" name=\"usun[]\" value=\"", $linia["id"], "\">
</td>
<td class=\"tabela\">", $linia["id"], "</td><td class=\"tabela\">", $linia["email"], "</td><td class=\"tabela\">",$linia["imie"],"</td><td class=\"tabela\">", $linia["nazwisko"],"</td><td class=\"tabela\">", $linia["wiek"],"</td><td class=\"tabela\">", $linia["plec"],"</td><td class=\"tabela\">", $linia["grupa"],"</td><td class=\"tabela\">", $linia["stanowisko"],"</td></tr>";
echo"</table>";
echo "<table cellspacing=\"1\" cellpadding=\"1\" align=\"center\"><tr><td style=\"border-top: 1px solid silver\">";
for($i=0;$i<ceil($numrows/$ile);$i++) {
echo '<a href="'.$PHP_SELF.'?p='.($i*$ile).'">'.($i+1).'</a> ';
}
echo"</td></tr></table>";
?>


do tego plik delete.php

CODE
require_once('db_connect.inc.php');
if($_POST["usun"])
{
for ($i = 0; $i < count($_POST['usun']); $i++)
{
$id= ($_POST['usun'][$i]);
mysql_query("DELETE FROM ".$user_name." WHERE `id`=".$id." LIMIT 1");
}
}
header("Location: index.php");


Serwer nie zwraca żadnych błędów ani ostrzeżeń, nie mam pojęcia gdzie jest błąd...
Baaardzo proszę o pomoc! sciana.gif
Grzyw
Ale co się dzieje?
Nie usuwa rekordów z bazy, nie wyświetla checkboxów?

Pierwsza literówka to brak otwarcia pętli, ale pewnie tylko źle wkleiłeś i nie o to Ci chodzi

Masz:
  1. <?php
  2. while($linia=mysql_fetch_array($query)) /* Pętla dopóki istnieją dane */
  3.  
  4. echo "<tr><td align=\"center\" width=\"30px\">
  5. <input type=\"checkbox\" name=\"usun[]\" value=\"", $linia["id"], "\">
  6. ?>


Powinieneś mieć:
  1. <?php
  2. while($linia=mysql_fetch_array($query)) /* Pętla dopóki istnieją dane */
  3. {
  4. echo "<tr><td align=\"center\" width=\"30px\">
  5. <input type=\"checkbox\" name=\"usun[]\" value=\"", $linia["id"], "\">
  6. ?>
phpion
Moim zdaniem powinno być tak:
  1. <?php
  2. while($linia=mysql_fetch_array($query)) { /* Pętla dopóki istnieją dane */
  3.  
  4. echo '<tr><td align="center" width="30px"><input type="checkbox" name="usun[]" value="'.$linia['id'].'"></td><td class="tabela">'.$linia['id'].'</td><td class="tabela">"'.$linia['email'].'"</td><td class="tabela">'.$linia['imie'].'</td><td class="tabela">"'.$linia['nazwisko'].'</td><td class="tabela">'.$linia['wiek'].'</td><td class="tabela">'.$linia['plec'].'</td><td class="tabela">'.$linia['grupa'].'</td><td class="tabela">'.$linia['stanowisko'].'</td></tr>';
  5. echo '</table>';
  6. echo '<table cellspacing="1" cellpadding="1" align="center"><tr><td style="border-top: 1px solid silver;">';
  7.  
  8. for($i=0;$i<ceil($numrows/$ile);$i++) {
  9. echo '<a href="'.$PHP_SELF.'?p='.($i*$ile).'">'.($i+1).'</a>';
  10. }
  11.  
  12. echo '</td></tr></table>';
  13. }
  14. ?>

Ogólnie miałeś namieszane z ", \" oraz z przecinkami (np. do pola usun[] ładowałeś id otoczone przecinkami).
Samo usuwanie można zrealizować za pomocą jednego zapytania:
  1. <?php
  2. require_once('db_connect.inc.php');
  3. if(isset($_POST['usun']) && isset($_POST['usun'][0]))
  4. {
  5. mysql_query('DELETE FROM '.$user_name.' WHERE id IN ('.implode(', ', $_POST['usun'].')');
  6. }
  7. header("Location: index.php");
  8. ?>
jsz
Grzyw: Tak, niestety nie usuwa rekordów sadsmiley02.gif checkboxy wyświetlają się dobrze
oto kod źródłowy z przeglądarki:

  1. ...
  2. <tr>
  3. <td><input type="checkbox" name="usun[]" value="2"></td>
  4. <td class="tabela">2</td>
  5. <td class="tabela">Ania@wp.pl</td>
  6. <td class="tabela">cghjkl</td>
  7. <td class="tabela">vbhjkm</td>
  8. <td class="tabela">23</td>
  9. <td class="tabela">kobieta</td>
  10. <td class="tabela">klient</td>
  11. <td class="tabela">PR</td>
  12. </tr>
  13. ...

jak widać wszystko z wyświetlaniem ok, ale niestety nie usuwa rekordów.

---

phpion: Nadal nie usuwa rekordow
  1. <?php
  2. if(isset($_POST['usun']) && isset($_POST['usun'][0]))
  3. {
  4. mysql_query('DELETE FROM '.$user_name.' WHERE id IN ('.implode(', ', $_POST['usun'].')');  // linia 9
  5. }
  6. ?>

powyższy kod nie pomógł mi..
Parse error: parse error in ...\delete.php on line 9
linię 9 zaznaczyłem w kodzie
nowotny
Cytat(jsz @ 6.02.2008, 19:32:03 ) *
phpion: Nadal nie usuwa rekordow
  1. <?php
  2. if(isset($_POST['usun']) && isset($_POST['usun'][0]))
  3. {
  4. mysql_query('DELETE FROM '.$user_name.' WHERE id IN ('.implode(', ', $_POST['usun'].')');  // linia 9
  5. }
  6. ?>

powyższy kod nie pomógł mi..
Parse error: parse error in ...\delete.php on line 9
linię 9 zaznaczyłem w kodzie

Zrób sobie tak:
  1. <?php
  2. if(isset($_POST['usun']) && isset($_POST['usun'][0]))
  3. {
  4.  
  5. $query='DELETE FROM '.$user_name.' WHERE id IN ('.implode(', ', $_POST['usun']).')';
  6. echo $query."r\n";
  7. mysql_query($query);
  8. }
  9. ?>


I wklej tutaj zapytania jakie ci wyświetliło...
jsz
Taką odpowiedź dostałem z serwera :/

Warning: implode(): Bad arguments. in c:\...\delete.php on line 9
DELETE FROM paula WHERE id IN ()r
nowotny
zmienna $_POST['usun'] jest pusta... cos naknociłeś... :/

Poza tym jak chcesz robić odzielną tablicę dla każdego użytkownika, to już ci mówię że to złe podejście...
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.