meer verwijderen met checkbox
Hoi hoi,
Ik heb eens zitten neuzen tussen de code om een makkelijke manier te vinden om met checkboxes meerdere rows te deleten uit een database.
Wat is een makkelijke manier om meerdere records te verwijderen dmv checkboxes?
Ik heb dan zeg maar een while loop die alle records uit de databse haalt en dan achter elk resultaat een checkbox zet met het id nr als value die bij die record hoort.
Dus bij bericht id1 zit een checkbox met als value php echo $rij['id']; zodat de checkboxes dus dezelfde id krijgen als het bericht.
Maar hoe kan ik het beste het delete.php bestand in elkaar zetten om ervoor te zorgen dat hij multiple deletes aankan dmv de aangevinkte checkboxes die vervolgens ge-post worden naar delete.php via een verwijder knop?
^_^
Ik heb eens zitten neuzen tussen de code om een makkelijke manier te vinden om met checkboxes meerdere rows te deleten uit een database.
Wat is een makkelijke manier om meerdere records te verwijderen dmv checkboxes?
Ik heb dan zeg maar een while loop die alle records uit de databse haalt en dan achter elk resultaat een checkbox zet met het id nr als value die bij die record hoort.
Dus bij bericht id1 zit een checkbox met als value php echo $rij['id']; zodat de checkboxes dus dezelfde id krijgen als het bericht.
Maar hoe kan ik het beste het delete.php bestand in elkaar zetten om ervoor te zorgen dat hij multiple deletes aankan dmv de aangevinkte checkboxes die vervolgens ge-post worden naar delete.php via een verwijder knop?
^_^
ik denk dat je dan met iets van <input name="array[]">
moet werken, ik zag arjan hier laatst iets over zeggen, ik weet er zelf weinig van af maar volgens mij krijg je dan je results terug in een array wat het veel makkelijker maakt om ze eruit te halen,
en dan denk ik iets van:
moet werken, ik zag arjan hier laatst iets over zeggen, ik weet er zelf weinig van af maar volgens mij krijg je dan je results terug in een array wat het veel makkelijker maakt om ze eruit te halen,
en dan denk ik iets van:
Zoiets heb ik inderdaad gelezen maar ik kwam er niet zo 1,2,3 uit.
Ik zal nog wel even wat gaan puzzelen.
Thx 4 your phphulp... :)
Ik zal nog wel even wat gaan puzzelen.
Thx 4 your phphulp... :)
Ja idd en is nog professioneler ook :-)
precies ja ik had dit:
hey cool, ik heb hem aan de praat.... !
Ik krijg die error alleen wel als ik geen checkbox heb aangevinkt.
Dan moet ik er iets in schrijven dat als er geen checkboxes zijn aangevinkt dat hij dan echoéd dat er niets is geselecteerd.
Ik krijg die error alleen wel als ik geen checkbox heb aangevinkt.
Dan moet ik er iets in schrijven dat als er geen checkboxes zijn aangevinkt dat hij dan echoéd dat er niets is geselecteerd.
doe
dan checktie, staat er een waarde in(of meerdere) en is dat een getal. ook je query beetje aangepast btw
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<? if(!empty($_POST['delete']) && is_numeric($_POST['delete']))
{
foreach($_POST['delete'] as $id)
{
$sql = "DELETE FROM $tbl WHERE id=".$id;
}
}
?>
{
foreach($_POST['delete'] as $id)
{
$sql = "DELETE FROM $tbl WHERE id=".$id;
}
}
?>
dan checktie, staat er een waarde in(of meerdere) en is dat een getal. ook je query beetje aangepast btw
Ok ik heb je advies opgevolgd en de code ziet er als volgt uit:
Nu is de error die ik kreeg als ik niets heb aangevinkt weg, maar nu delete hij geen records meer als ik wel wat heb aangevinkt. (?) ^_^
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
if(!empty($_POST['delete']) && is_numeric($_POST['delete']))
{
foreach ($_POST['delete'] as $id)
{
$sql = "DELETE FROM $tbl WHERE id=".$id;
mysql_query($sql);
}
}
?>
if(!empty($_POST['delete']) && is_numeric($_POST['delete']))
{
foreach ($_POST['delete'] as $id)
{
$sql = "DELETE FROM $tbl WHERE id=".$id;
mysql_query($sql);
}
}
?>
Nu is de error die ik kreeg als ik niets heb aangevinkt weg, maar nu delete hij geen records meer als ik wel wat heb aangevinkt. (?) ^_^
Ik heb de puzzel af!
De code is nu al volgt en hij doet het nu helemaal.
Iedereen many thx voor jullie hulp! :)
De code is nu al volgt en hij doet het nu helemaal.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
if(empty($_POST['delete']) && !is_numeric($_POST['delete']))
{
echo "Geen berichten geselecteerd";
} else {
foreach ($_POST['delete'] as $id)
{
$sql = "DELETE FROM $tbl WHERE id=".$id;
mysql_query($sql);
}
}
?>
if(empty($_POST['delete']) && !is_numeric($_POST['delete']))
{
echo "Geen berichten geselecteerd";
} else {
foreach ($_POST['delete'] as $id)
{
$sql = "DELETE FROM $tbl WHERE id=".$id;
mysql_query($sql);
}
}
?>
Iedereen many thx voor jullie hulp! :)
haal numeric check es weg
Ik heb je manier omgedraaid, dus de check of $_POST['delete'] WEL empty is ipv niet en NIET numeric ipv wel, dan echo dat er niets is geselecteerd en na die check een else met daarin de opdracht de waarden van de aangevinkte records te deleten.
:)
:)
Ja zonder de numeric check doet hij het idd ook nu.
Thx again!
Thx again!
np hvefun :)
Dat komt omdat in $_POST['delete'] als het goed is een array zit met aangevinkte checkboxen.
Je zou dus kunnen volstaan met:
if (isset ($_POST['delete'])) {
als er namelijk geen één checkbox is aangevinkt, wordt de array $_POST['delete'] niet aangemaakt.
Je zou dus kunnen volstaan met:
if (isset ($_POST['delete'])) {
als er namelijk geen één checkbox is aangevinkt, wordt de array $_POST['delete'] niet aangemaakt.
Iedere checkbox vertegenwoordigt een nummer, maar een html-formulier is vrij eenvoudig aan te passen. Een gebruiker kan dus andere nummers opgeven dan de nummers die in het formulier staan. Wanneer je dan de query gaat uitvoeren, worden er andere records verwijderd. Hier kan dus een veiligheidsrisico in zitten.
Wanneer een user alleen zijn eigen records mag verwijderen, neem deze voorwaarde dan ook op in de query. Verder kun je bij het aanmaken van de pagina alle id's in een sessie zetten en bij het verwerken van het formulier controleren of de id die vanaf het formulier worden aangeleverd voorkomen in de array met id's die in de sessie staat. Daarmee spijker je de boel aardig dicht.
Succes!
Edit: typo
Wanneer een user alleen zijn eigen records mag verwijderen, neem deze voorwaarde dan ook op in de query. Verder kun je bij het aanmaken van de pagina alle id's in een sessie zetten en bij het verwerken van het formulier controleren of de id die vanaf het formulier worden aangeleverd voorkomen in de array met id's die in de sessie staat. Daarmee spijker je de boel aardig dicht.
Succes!
Edit: typo
Gewijzigd op 09/03/2006 22:42:00 door Frank -




