-3

当我删除它工作正常。当我取消它也可以正常工作。但是当我编辑并在编辑后单击保存时,我收到消息“未定义的索引:搜索”。数据得到保存。我该如何解决。

代码是:

<html>
    <head>
    </head>
<body>  
<?php
    $page='search.php';
    mysql_connect("localhost","root","") or die (mysql_error());
    mysql_select_db("list") or die (mysql_error());

    if(empty($_POST) === false)
    {

        if ($_POST['search'] == 'search')
        {

            $data=$_POST['criteria']; 
            if (empty($data) === true)
            {
                echo 'Please enter some text!!<br/>';
            } 
            else
            {
                $get=mysql_query("SELECT SRNO, fname, lname, phone, email, address, comments from names where fname='" . mysql_real_escape_string($data) . "'");
                if (mysql_num_rows($get)==0) 
                    {
                        echo 'There are no search results!!';
                    }
                        else
                    {
                        echo '<table border=0 cellspacing=25 cellpadding=1>';
                        echo'<tr><th>Sr. No</th><th>First Name</th><th>Last Name</th><th>Phone No</th><th>E-mail</th><th>Address</th><th>Comments!!</th><th>Modify</th><th>Delete!</th></tr>';      
                        while($get_row=mysql_fetch_assoc($get))
                            {
                                echo '<tr><td>'.$get_row['SRNO'].'</td><td>'.$get_row['fname'].'</td><td>'.$get_row['lname'].'</td><td>'.$get_row['phone'].'</td><td>'.$get_row['email'].'</td><td>'.$get_row['address'].'</td><td>'.$get_row['comments'].'</td><td><a href="search.php?edit='.$get_row['SRNO'].'">Edit</a></td><td><a href="search.php?delete='.$get_row['SRNO'].'">Delete</a></td></tr>';

                            }
                        echo '</table>';

                    }
            }
        }

        else if ($_POST['save']== 'save')
        {

            $count=0;
            $fname= $_POST['fname'];
            $lname= $_POST['lname'];
            $srno=  $_POST['SRNO'];
            $address=$_POST['address'];
            $comments=$_POST['comments'];
            $email=$_POST['email'];
            $phone=$_POST['phone'];

                if (empty($lname) === true || empty($fname) === true || empty($address) === true || empty($comments) === true || empty($email) === true || empty($phone) === true) 
                {
                    echo '<h3>All fields are mandatory</h3>';

                }
                else
                {
                        if (filter_var($email,FILTER_VALIDATE_EMAIL) === false)
                        {
                            echo '<h3>This is not a valid e-mail address.</h3><br />';
                            $count=$count+1;
                        }
                        if (ctype_alpha($fname) === false || ctype_alpha($lname) === false)
                        {
                            echo '<h3>Name should contain character only!</h3><br />';
                            $count=$count+1;
                        }
                        if( !is_numeric($phone) ) 
                        {
                                echo '<h3>Please enter a valid phone number</h3><br />';
                                $count=$count+1;
                        }
                        if ($count==0)
                        {
                            if(isset($_GET['edit']))
                                {
                                    mysql_query('update names set fname="'.$fname.'", lname="'.$lname.'", address="'.$address.'", comments="'.$comments.'", email="'.$email.'", phone="'.$phone.'"  where SRNO="'.$srno.'"');   

                                } 
                                else if(isset($_GET['add']))
                                    {
                                        mysql_query("INSERT INTO names (fname,lname,phone,email,comments,address) VALUES ('$fname', '$lname','$phone','$email','$comments','$address')");
                                    }

                            //header('Location:'.$page);
                        }

                }
        }
    }   
            //else if
        /*
        if(mysql_num_rows($getf) == 0)
        {
            $getel=mysql_query('SELECT SRNO, fname, lname, phone, email, address, comments from names where lname='.$_GET['$data']));

        }*/



        if(isset($_GET['delete']))
        {
            mysql_query('DELETE from names where SRNO='.mysql_real_escape_string((int)$_GET['delete']));

        }

        if(isset($_GET['edit']))
        {
            $getedit=mysql_query('SELECT SRNO, fname, lname, phone, email, address, comments from names where SRNO='.mysql_real_escape_string((int)$_GET['edit']));

            echo '<table border=0>';
            while ($get_row=mysql_fetch_assoc($getedit))
                {
                    echo '<form method="POST" action="">';

                    echo '<tr><td>Sr.No:</td><td><input type="text" value='.$get_row['SRNO'].' name="SRNO" readonly="readonly"></td></tr>';
                    echo '<tr><td>First Name:</td><td><input type="text" value='.$get_row['fname'].' name="fname"></td></tr>';
                    echo '<tr><td>Last Name:</td><td><input type="text" value='.$get_row['lname'].' name="lname"></td></tr>';
                    echo '<tr><td>Phone No:</td><td><input type="text" value='.$get_row['phone'].' name="phone"></td></tr>';
                    echo '<tr><td>E-mail address:</td><td><input type="text" value='.$get_row['email'].' name="email"</td></tr>';
                    echo '<tr><td>Address:</td><td><textarea name="address" rows=4>'.$get_row['address'].'</textarea></td></tr>';
                    echo '<tr><td>Comments:</td><td><textarea name="comments" rows=4>'.$get_row['comments'].'</textarea></td></tr>';
                    echo '<tr><td><input type="submit" name="save" value="save"></td><td><a href="search.php">Cancel</a></td></tr>';
                    echo '</form>';                                 
                }
            echo '</table>';

        }

            echo '<form action="" method="post">';  
            echo '<input type="text" name="criteria">';
            //echo '<input type="hidden" name="form" value="search">';
            echo '<input type="submit" value="search" name="search">';
            echo '</form>';

 echo '<br /><a href="index.php">Home</a>';
?>
</body>
</html>
4

3 回答 3

4

这是因为这次search没有以表格形式发送变量。如果您首先检查它是否已设置,那么您将不会收到该警告。

更改此行

if ($_POST['search'] == 'search')

对于这个:

if (isset($_POST['search']) && $_POST['search'] == 'search')
于 2013-03-13T10:03:50.413 回答
0

我认为你必须像这样检查你的状况

if (isset($_POST['search']) && $_POST['search'] == 'search')
{
   // code here
}
else if(isset($_POST['save']) && $_POST['save']== 'save')
{
   // code here
}
于 2013-03-13T10:08:28.177 回答
0

是的,一切正常,首先它会在您发布保存表单时检查您 $_POST['search'] 。其中不包含任何搜索表单字段。

只需将所有$_POST['save'],$_POST['search'] 替换为(isset($_POST['save']) && $_POST['save']=='save')and(isset($_POST['search']) && $_POST['search']=='search')

你需要记住的事情是

  1. 如果您的查询返回单个结果,则不要在那里使用 while 循环。只是影响结果。
  2. 总是尝试将表单标签放在表格之外/之前。
  3. 在您的结构上方,您在 while 循环内的表单中重复相同的名称。
  4. 用isset检查你在php中的变量。

尝试上述建议,然后尝试。

于 2013-03-13T10:11:09.307 回答