meer verwijderen met checkbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeffrey

Jeffrey

09/03/2006 20:45:00
Quote Anchor link
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?

^_^
 
PHP hulp

PHP hulp

16/05/2024 23:12:35
 

09/03/2006 20:50:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$array
=$_POST['array'];
for($i=0; $i<count($array); $i++){
if(isset($array[$i])){
//delete
}
}

?>
 
Jeffrey

Jeffrey

09/03/2006 20:58:00
Quote Anchor link
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... :)
 
- wes  -

- wes -

09/03/2006 21:14:00
Quote Anchor link
kan korter

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?
foreach ($_POST['array'] as $variabele)
{

//delete
}
?>
 

09/03/2006 21:42:00
Quote Anchor link
Ja idd en is nog professioneler ook :-)
 
Jeffrey

Jeffrey

09/03/2006 21:49:00
Quote Anchor link
precies ja ik had dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php foreach($_POST['delete'] as $id)
{
$sql = ("DELETE FROM $tbl WHERE id='$id'");
}


maar dan geeft hij een error aan dat de argumenten voor de foreach niet correct zijn.
 
Jeffrey

Jeffrey

09/03/2006 21:58:00
Quote Anchor link
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.
 
- wes  -

- wes -

09/03/2006 22:08:00
Quote Anchor link
doe

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

}

?>


dan checktie, staat er een waarde in(of meerdere) en is dat een getal. ook je query beetje aangepast btw
 
Jeffrey

Jeffrey

09/03/2006 22:16:00
Quote Anchor link
Ok ik heb je advies opgevolgd en de code ziet er als volgt uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
    }
}

?>


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. (?) ^_^
 
Jeffrey

Jeffrey

09/03/2006 22:20:00
Quote Anchor link
Ik heb de puzzel af!

De code is nu al volgt en hij doet het nu helemaal.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
    }
}

?>


Iedereen many thx voor jullie hulp! :)
 
- wes  -

- wes -

09/03/2006 22:22:00
Quote Anchor link
haal numeric check es weg
 
Jeffrey

Jeffrey

09/03/2006 22:25:00
Quote Anchor link
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.

:)
 
Jeffrey

Jeffrey

09/03/2006 22:26:00
Quote Anchor link
Ja zonder de numeric check doet hij het idd ook nu.

Thx again!
 
- wes  -

- wes -

09/03/2006 22:28:00
Quote Anchor link
np hvefun :)
 
Jan Koehoorn

Jan Koehoorn

09/03/2006 22:31:00
Quote Anchor link
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.
 
Frank -

Frank -

09/03/2006 22:41:00
Quote Anchor link
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
Gewijzigd op 09/03/2006 22:42:00 door Frank -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.