Reputation: 3864
I have the code below which loops through selected checkboxes and executes and sql statement.
if (isset($_POST['delete']))
{
for($i=0;$i<$recordcount;$i++)
{
$deleteid = isset($_POST['checkbox'][$i]);
echo "ID = ".$deleteid."<br />"; //Error checking
$sqldelete = "DELETE FROM customer WHERE cus_ID = ".$deleteid."";
echo $sqldelete."<br />"; //Error checking
$deleters = $conn->Execute($sqldelete);
}
}
This runs the sql query but it tries it run it once more than required, i.e I check two check boxes, the sql runs 3times. So this casues an error as the ID is empty. I also get an undefined offset 1.
Any advice? Thanks.
Upvotes: 0
Views: 2267
Reputation: 3785
try this
if(isset($_POST['delete']))
{
$i=0;
foreach($_POST['checkbox'] as $user)
{
$sqldelete = "DELETE FROM customer WHERE cus_ID = ".$user."";
echo $sqldelete."<br />"; //Error checking
$deleters = $conn->Execute($sqldelete);
$i++;
}
}
Upvotes: 0
Reputation: 212412
if (isset($_POST['delete']))
{
for($i=0;$i<$recordcount;$i++)
{
$deleteid = isset($_POST['checkbox'][$i]);
if ($deleteid) {
$sqldelete = "DELETE FROM customer WHERE cus_ID = ".$_POST['checkbox'][$i];
echo $sqldelete."<br />"; //Error checking
$deleters = $conn->Execute($sqldelete);
}
}
}
And escape your input for safety
Upvotes: 2
Reputation: 437404
This line is definitely wrong:
$deleteid = isset($_POST['checkbox'][$i]);
Maybe you meant it like this?
$deleteid = isset($_POST['checkbox'][$i])
? intval($_POST['checkbox'][$i]) : false;
if ($deleteid === false) {
continue;
}
// rest of the code follows
Also, you could probably get rid of $recordcount
and do a foreach
over $_POST['checkbox']
.
Upvotes: 3