undefined index and invalid foreach() argument php

2019-08-07 02:03发布

I have a page which shows items which users have saved to a MYSQL database, and echos it out along with a a check box. I would like when a user clicks this check box and clicks the save button that the record will be deleted but i am met with the errors in my title.

Show holidays form.

        <form action="deleteProcess.php">
<?php
        foreach($db->query($sql) as $row)
        {
            echo "<p>" . $row['title'] . "<br \>" . 
                         $row['description'] . "<br \>" . 
                         $row['link'] . "<br \>" .
                         $row['pubDate'] . 
                         "<input type='checkbox' name='del[]' value='$row/['title'/]'/>" . 
                         "</p>";    
        }
?>
        <input type="submit" name="delete" value="submit" />
        </form>

delete process.php

foreach($_POST['del'] as $check_value)
        {
            //takes session value and assigns it to a variable so that when a holiday is saved it can be distinguished by user
            $user = $_SESSION['name'];
            //assign the value of previous checkbox to $check
            $check = $check_value;
            //assign xpath query to variable $fav
            $fav = "channel/item [title = \"$check\"]";
            //loads instance of xml file as $holidayDoc
            $holidayDoc = simplexml_load_file('holidays.xml');
            //executes xpath search within holidays.xml and results stored in $favourites
            $favourites = $holidayDoc->xpath($fav);

        //for each element of the associative array $favourites, key will be referred to as $currentFav. 
        foreach($favourites as $currentFav)
        {
            echo "{$currentFav->link}". "<br \>";
            echo "{$currentFav->title}". "<br \>";
            echo "{$currentFav->description}". "<br \>";
            echo "{$currentFav->pubDate} ". "<br \>";
            //sql statement that states which values will be inserted into which column
            $sql = "DELETE FROM `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
        VALUES ('$user', '$currentFav->link', '$currentFav->pubDate', '$currentFav->title', '$currentFav->description')";

            //connect to database then execute the sql statement.
            $db->exec($sql);
            //close connection to the database
            $db = null;

The error is showing at the foreach($_POST['del'] as $check_value) line and i cant understand why its not working, any help would be appreciated.

Notice: Undefined index: del in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_w11026991/public_html/Ass/deleteProcess.php on line 14

Warning: Invalid argument supplied for foreach() in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_w11026991/public_html/Ass/deleteProcess.php on line 14

6条回答
霸刀☆藐视天下
2楼-- · 2019-08-07 02:13

You should first check if $_POST['del'] is set because if no checkboxes are checked it won't be.

if(isset($_POST['del'])){
    foreach($_POST['del'] as $del){}
}
查看更多
老娘就宠你
3楼-- · 2019-08-07 02:16

Your del checkboxes aren't being POSTed from the form at all. You need to add method="post" to your form.

<form action="deleteProcess.php" method="post">

查看更多
Viruses.
4楼-- · 2019-08-07 02:16

method="post" is missing from <form action.

Also your SQL syntax for delete is incorrect. While deleting records from the database, you don't specify the columns. You delete the entire record.

The delete syntax is:

DELETE FROM table_name WHERE condition
查看更多
狗以群分
5楼-- · 2019-08-07 02:17

You are missing method="post" from your form so nothing is being posted, this is your problem.

查看更多
欢心
6楼-- · 2019-08-07 02:21

You access your checkbox values via $_POST, but your Form-Tag has no method defined! you have to set <form method="POST">, otherwise you have to use $_GET['del']

查看更多
ら.Afraid
7楼-- · 2019-08-07 02:29

This error is pretty clear.

$_POST['del']

doesn't exists since del isn't a valid field into the posted form.

If del is the name of checkboxes, you have first of all to retrive them by adding post action to your form

查看更多
登录 后发表回答