Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie rekordów - checkbox'em ??
Forum PHP.pl > Forum > Bazy danych
Ned-Yoshi
Oki... problem mam taki. Jedną z tabel z bazy danych wyświetliłem sobie w formie tabelki na stronce. Na końcu każdego wiersza tabelki dałem formularzowy checkbox. I teraz... jaki skrypt powinien być na stronie docelowej formularza, żeby kasowło mi WSZYSTKIE ZAZNACZONE w tabeli rekordy?
stoprocent
1. wrucasz te odznaczone rekordy do tablicy
2. robisz petle ktora usuwa po kolei rekordy z bazy ktore byly w tablicy .
teraz mam obiad rodzinny jak skoncze to napisze to ,chyba ze sobie sam napiszesz:)
Ned-Yoshi
Hyhy... mógłbym popróbować, ale coś mi się nie chce więc jakbyś mógł... Bo chodzi tu o tablice ogłoszeń na stornie sieciowej, którą robię. W tej chwili wpis wygląda tak:

[php:1:3fbe95b532]
while ($row=mysql_fetch_assoc($result2))
{
echo ('
<div align="center">
<center>
<table border="1" cellspacing="0" width="450" bordercolor="#000000">
<tr>
<td width="100%" bgcolor="#000000"><font color="#FFFFFF"><b>'.$row["autor"].'</b>, '.$row["data"].', '.$row["czas"].'<input type="checkbox" name="'.$row["id"].'" value="usun"></font></td>
</tr>
<tr>
<td width="100%">'.$row["tresc"].'</td>
</tr>
</table>
</center>
</div><br>');
}
[/php:1:3fbe95b532]

Czyli każdy wpis to mała tabelka. Oczywiście wszystko jest objęte form'em i na koniec submit. Tak, że poszczególne chceckboxy przyjmują nazwę id rekordu. Teraz proszę o rozwinięcie smile.gif
zalew
Kod
<form method="POST">

<input type="checkbox" name="kasuj[]" value="1">

<input type="checkbox" name="kasuj[]" value="2">

<input type="checkbox" name="kasuj[]" value="3">

<input type="checkbox" name="kasuj[]" value="4">

....

<input type="submit">

</form>

[php:1:99dfc9ad61]<?php
for ($i = 0; $i < count($_POST['kasuj']); $i++) {
echo $_POST['kasuj'][$i]);
}
?>[/php:1:99dfc9ad61]
Ned-Yoshi
Hmm.. sorki, ale nie za bardzo czaje smile.gif Newbie smile.gif Czyli jaka wtedy by była komenda do bazy mysql?
BzikOS
[php:1:251a061885]<?php
$sql = 'DELETE FROM tabela WHERE id IN(' . implode( ',', $_POST['kasuj'] ) . ')';
?>[/php:1:251a061885]
stoprocent
Masz tu wszytko napisane ale zrobie tak jak prosziles
[php:1:9abfed701e]
<?
if($usun){
for ($i = 0; $i < count($_POST['usun']); $i++) {
$id= $_POST['usun'][$i]);
mysql_query("DELETE FROM $table WHERE id=$id",$db);
}
}
?>
<FORM ACTION=<?php echo $PHP_SELF?> METHOD=POST>
<?php

while ($row=mysql_fetch_assoc($result2))
{
echo ('
<div align=center>
<center>
<table border=1 cellspacing=0 width=450 bordercolor=#000000>
<tr>
<td width=100% bgcolor=#000000><font
color=#FFFFFF><b>'.$row["autor"].'</b>, '.$row["data"].',
'.$row["czas"].'<input type=checkbox name=usun[]
value='.$row["id"].'></font></td>
</tr>
<tr>
<td width=100%>'.$row["tresc"].'</td>
</tr>
</table>
</center>
</div><br>');
}

?>
<input type=Submit name=usun value=Zapisz >

</form>
[/php:1:9abfed701e]
jest dosc pozno ledwo widze na oczy mozliwe ze sa bledy tongue.gif pozdrawiam
spenalzo
[php:1:e1aa8fb0bf]<?php
if($_POST["usun"])
{
for ($i = 0; $i < count($_POST['usun']); $i++)
{
$id= $_POST['usun'][$i]);
mysql_query("DELETE FROM ".$table." WHERE id=".$id." LIMIT 1");
}
}
?>
<FORM ACTION="<?php echo $_SERVER["PHP_SELF"]; ?>"
METHOD="POST">
<?php

while ($row=mysql_fetch_assoc($result2))
{
?>
<div align=center>
<center>
<table border=1 cellspacing=0 width=450 bordercolor=#000000>
<tr>
<td width=100% bgcolor=#000000><font
color=#FFFFFF><b><?php echo $row["autor"]; ?></b>, <?php echo $row["data"]; ?>,
<?php echo $row["czas"]; ?><input type=checkbox name=usun[]
value="<?php echo $row["id"]; ?>"></font></td>
</tr>
<tr>
<td width=100%><?php echo $row["tresc"]; ?></td>
</tr>
</table>
</center>
</div><br>
<?php
}
?>
<input type="Submit" name="usun" value="Zapisz">
</form>
[/php:1:e1aa8fb0bf]

PS. Poprawione na prośbe autora
Ned-Yoshi
Hyhy... oki działa. Tylko teraz spsuło się coś innego.

[php:1:7acc6afba7]<?php
if($dostep==2)
{
$zprior='<input type="radio" value="0" checked name="priorytet">zwykły<br><input type="radio" name="priorytet" value="1">priorytetowy<br>';
}
if($dostep==1)
{
$zprior='';
}

echo('<center><b>Dodaj komentarz</b><br><form method="post" action="index.php?name=ogloszenia&action=dodaj">
<textarea rows="5" name="tresc" cols="30"></textarea><br>'.$zprior.'
<input type="submit" value="Dodaj ogłoszenie" name="submit"><input type="reset" value="Reset" name="Reset">
</form></center>');
?>[/php:1:7acc6afba7]

Chodzi o to ze na stronie są dwa poziomy dostepu... 1- dla zwyklych userow zalogowanych i 2 - dla admina. No i chcialem zrobic tak, ze tylko admin moze dodawac ogloszenia priorytetowe.

Tylko jak ktos sie zaloguje jak user i chce dodac ogloszenie w tej chwili to formularz wogolnie nie wykonuje polecenia i nie wysyla danych. Jak sie zaloguje jako admin to wtedy po zaakceptowaniu formularza, przechodzi do strony: index.php?name=ogloszenia&action=dodaj i faktycznie tam dodaje to ogloszenie do bazy, ale jak jako user to pozostaje na stronie index.php?name=ogloszenie i nawet jak klikne zeby mi wyswietlilo zmienną $tresc to nic sie nie wyswietla... (nawet blad ze takiej zmiennej nie ma).

Hyhy może jestem ślepy i coś rpzeoczylem i glupi ale prosze o pomoc smile.gif
Ned-Yoshi
PRzed chwilką sprawdziałem jeszcze coś... jak dam takie coś:

if(isset($tresc))
echo($tresc);

w całym name=ogloszenia ogolnie, to po zrobieniu ogloszenia ta tresc sie dodaje, ale jak zrobie tak:

if(isset($action)
{
if($action=="dodaj)
{
if(isset($tresc))
echo($tresc);
}
}

czyli po prostu w przypadku, gdy dostep=2 formularz przesyla dane do strony: index.php?name=ogloszenia&action=dodaj a jak dostep=1 to do strony index.php?name=ogloszenia ... jak rowiazac ten problem?
stoprocent
[php:1:aabde67d9e]<?php

if($dostep=="2"){
$zprior='<input type="radio" value="0" checked name="priorytet">zwykły<br><input
type="radio" name="priorytet" value="1">priorytetowy<br>';
}
else{
$zprior='';
}
echo('<center><b>Dodaj komentarz</b><br><form method="post"
action="index.php?name=ogloszenia&action=dodaj">
<textarea rows="5" name="tresc" cols="30"></textarea><br>'.$zprior.'
<input type="submit" value="Dodaj ogłoszenie" name="submit"><input type="reset"
value="Reset" name="Reset">
</form></center>');

?>[/php:1:aabde67d9e]

powinno byc ok biggrin.gif
itsme
Cytat
Pomożecie? smile.gif

zasada nr 1 forum.php.pl != chat.php.pl
prosze sie uzbroic w cierpliwosc

zbedne posty skasowalem


ps jezeli mamy cos robic profesjonalnie to zalecam rozwiazanie Bzikosa
[php:1:8e2c3aca4a]<?php
$sql = 'DELETE FROM tabela WHERE id IN(' . implode( ',', $_POST['kasuj'] ) . ')';

?>[/php:1:8e2c3aca4a]
Ned-Yoshi
Nasto... z "else" też nie działa smile.gif Kurde no to jest dziwne. Jak dostep=2 to otwiera sie strona index.php?name=ogloszenia&action=dodaj i wszytsko jest dobrze bo dodaje, a jak dostep=1 to otwiera index.php?name=ogloszenia i nie jest dobrze smile.gif chociaz dane są wyslane...

Ale gupie 8O biggrin.gif
stoprocent
ale nie wiem jak to moze nie dzialac jak forumularz jest ten sam rozni sie tylko tym ze dodaje sie to radio. wrzuc kody tych plikow co wykorzystywane sa . smile.gifsmile.gif
kicaj
wlasnie jestem w trakcie robienia tego samego, tzn usuwania chechboxami, a moj problem polega na tym, ze jak przesylam dane inpyt type=submit to wszystko dziala, ale ja chcicialbym zebym zamiast inputa mial link typu: usun zaznaczone

Jak to zrobic?
Ned-Yoshi
Nasto... cala stronka jest w jednym pliku w tej chwili index.php wiec jakbym wrzucil tu caly 370-linijkowy kod to by mnie admini wyklęli smile.gif, wiec może wrzuce samą tablice ogloszeń:

[php:1:756bc0854c]
//poczatek tablicy ogloszen
if($name=="ogloszenia")
{
if($dostep==1 || $dostep==2)
{
$conn=mysql_connect("192.168.1.7", "root", "password");
mysql_select_db('ironnet');



if(isset($action))
{
if($action=="dodaj")
{
$data=date("d.m.y");
$czas=date("G:i");
$past=time();
$autor=$ksywka;
$zapytanie="select * from logpass where log=$login;";
$result3=mysql_query("$zapytanie");

if($dostep==2)
{
$akcja=mysql_query("insert into ogloszenia values ('', '$autor', '$data', '$czas', '$tresc', '$dostep', '$priorytet', '$past');");
}
if($dostep==1)
{
$akcja=mysql_query("insert into ogloszenia values ('', '$autor', '$data', '$czas', '$tresc', '$dostep', '0', '$past');");
}
}
}


if(isset($usunogl))
{
if($_POST["usunogl"])
{
for ($i = 0; $i < count($_POST['usunogl']); $i++)
{
$id= $_POST['usunogl'][$i];
mysql_query("DELETE FROM ogloszenia WHERE id=".$id." LIMIT 1");
}
}
}
echo('<FORM ACTION="index.php?name=ogloszenia" METHOD="post">');

//admin
$data=time()-219600;
$result1=mysql_query("select * from ogloszenia where past>$data and pz=2 order by past desc limit 10;");

while ($row=mysql_fetch_assoc($result1))
{
if($row["priorytet"]==1)
{
$kolor="#EC97AC";
}
else
{
$kolor="#FFFFFF";
}

echo ('
<div align="center">
<center>
<table border="1" cellspacing="0" width="450" bordercolor="#000000">
<tr>
<td width="100%" bgcolor="#000000"><font color="#FFFFFF"><b>'.$row["autor"].'</b>, '.$row["data"].', '.$row["czas"].'</font>');

if($dostep==2)
{
echo('<input type=checkbox name=usunogl[]
value='.$row["id"].'>');
}

echo('</td>
</tr>
<tr>
<td width="100%" bgcolor="'.$kolor.'">'.$row["tresc"].'</td>
</tr>
</table>
</center>
</div><br>');
}

echo("<br><BR>");

//userzy
$data=time()-219600;
$result2=mysql_query("select * from ogloszenia where past>$data and pz=1 order by past desc limit 25;");

while ($row=mysql_fetch_assoc($result2))
{
echo ('
<div align="center">
<center>
<table border="1" cellspacing="0" width="450" bordercolor="#000000">
<tr>
<td width="100%" bgcolor="#000000"><font color="#FFFFFF"><b>'.$row["autor"].'</b>, '.$row["data"].', '.$row["czas"].'</font>');

if($dostep==2)
{
echo('<input type=checkbox name=usunogl[]
value='.$row["id"].'>');
}

echo('</td>
</tr>
<tr>
<td width="100%">'.$row["tresc"].'</td>
</tr>
</table>
</center>
</div><br>');
}

if($dostep==2)
{
echo('<p align="center"><input type="Submit" name="usun" value="Usuń zaznaczone ogłoszenia"></form></p>');
}

if($dostep==2)
{
$zprior='<input type="radio" value="0" checked name="priorytet">zwykły<br><input type="radio" name="priorytet" value="1">priorytetowy<br>';
}
else
{
$zprior='';
}

echo('<center><b>Dodaj komentarz</b><br><form method="post" action="index.php?name=ogloszenia&action=dodaj">
<textarea rows="5" name="tresc" cols="30"></textarea><br>'.$zprior.'
<input type="submit" value="Dodaj ogłoszenie" name="submit"><input type="reset" value="Reset" name="Reset">
</form></center>');

}
else
{
echo("Nie masz prawa wstępu na ta stronę");
}
}
//koniec tablicy ogloszen
[/php:1:756bc0854c]

Aha... a przy logowaniu są ustawiane następujące Cookies:
[php:1:756bc0854c]
setcookie("dostep", $logpass["poziom"], time()+3600);
setcookie("ksywka", $logpass["ksywka"], time()+3600);
setcookie("login", $logpass["log"], time()+3600);
[/php:1:756bc0854c]

No właśnie kurcze to jest dziwne, że przecież w dostep=1 nie ma tylko radio a caly formularz sie pieprzy :/ W sumie wyszedlem z tego problemu inaczej... dodając:

[php:1:756bc0854c]<?php
if(!isset($action))
{
if(isset($tresc))
{
$data=date("d.m.y");
$czas=date("G:i");
$past=time();
$autor=$ksywka;
$zapytanie="select * from logpass where log=$login;";
$result3=mysql_query("$zapytanie");

if($dostep==2)
{
$akcja=mysql_query("insert into ogloszenia values ('', '$autor', '$data', '$czas', '$tresc', '$dostep', '$priorytet', '$past');");
}
if($dostep==1)
{
$akcja=mysql_query("insert into ogloszenia values ('', '$autor', '$data', '$czas', '$tresc', '$dostep', '0', '$past');");
}
}
}
?>[/php:1:756bc0854c]

Ale mimo wszystko ten problem jest dziwny...

A co do stronki, to jestem raczje poczatkujacy, dlatego kod jest taki nieprofesjonalny smile.gif

Komentarz do kodu:
Wszystko wygląda tak, że najpierw wyswietla sie 10 ogloszen administratora, a potem 25 uzytkownikow. Tylko damin ma prawo dodawania ogloszen priorytetowych, ktore wyrozniaja sie tlem...
Ned-Yoshi
Ciągle próbuje rozwiązać ten głupi problem, ale mi cosik nie wychodzi smile.gif
lucek
Do kodu Spenzalo:
Jak jeszcze zrobic ze po zazanczeniu checkboxow i wcisnieciu przycisku Usun ->bedziemy miec potwierdzenie czyli: czy usunac wybrane rekordy TAK czy NIE questionmark.gif?
stoprocent
JavaScript sie klania : (przepraszam seth smile.gif dzieki za poprawke)

smile.gif
[xml:1:6558f6a572]<input type="Submit" name="usun" value="Zapisz" onClick="return confirm('Chcesz to usunac?')">[/xml:1:6558f6a572]
Seth
Cytat
Java sie klania

Java != JavaScript tongue.gif ehh do znudzenia mozna to powtarzac winksmiley.jpg
Paul
@kicaj_: mozesz zrobic tak,ze nadasz sobie jakis opdowiednie nazwy tym checkboxom - x1, x2 ... i potem bedziesz robic:

[php:1:00b8081211]
...
for($i=0; $i<$_POST["ilosc"]){;$i++){ // ilosc - wartosc pola hidden
$nazwa = "x".$i;
if($_POST[$nazwa]){
$zaznaczone .= $nazwa.'*';
}
}
$zaznaczone = explode('*',$zaznaczone);
...
[/php:1:00b8081211]
i masz tablice zaznaczonych smile.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.