Ik heb een scriptje geschreven om records uit een database te verwijderen. Deze records worden aangevinkt in een lijst.

in het formulier
<?php
echo '<input type="checkbox" name="delu[$row[id]]">';
?>

later om te verwijderen

<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){

foreach ($delu as $key => $value) {

if(is_numeric($key)){

$sql_ud = "DELETE FROM users WHERE id = '$key'";
$res_ud = mysql_query($sql_ud) or die(mysql_error());

if($res_ud = true){
echo '<p>' . $key . ' is verwijderd</p>';
}
else{
echo '<p>' . $key . ' is niet verwijderd</p>';
echo $sql_ud;
}
}
else{
//geen numerieke waarde
echo 'De users worden niet verwijderd omdat het geen numerieke waarden zijn';
}

}

echo '<a href="javascript:window.history.go(-1)">Terug</a>';
}
?>

Dit werkt prima, alleen ik heb het idee dat ik wat meer aan foutafhandeling/controle moet doen.

Kan iemand me hier bij helpen? Heeft iemand nog tips o.i.d.?

Alvast bedankt!

Groetjes!

edit:

haakje vergeten
Het zal werken, maar ik zou voor de netheid toch
<?php
$sql_ud = "DELETE FROM users WHERE id = '$key'";
?>
veranderen in
<?php
$sql_ud = "DELETE FROM users WHERE id = " . $key;
?>
aangezien id hoogstwaarschijnlijk een veld type INT is.
Dat is helemaal correct Jan, nu wordt gecontroleerd of het id ook echt wel INT is? Of wat is precies het voordeel hiervan?
Omdat je id veld in de MySQL tabel een INT is, is het niet nodig om $key tussen enkele quotes te zetten. Bij een logische vergelijking gaat dat toevallig goed (bijv: WHERE id = '23') maar zodra je zou gaan sorteren gaat het fout. Sorteren op numerieke waarden gaat anders dan op strings.
Oke, goed dat je 't zegt... zo leer je elke keer weer bij :)

tnx

Reageren