保存已编辑表单时在PHP中未定义索引
当我删除它的作品很好。 当我取消时,它也可以正常工作。 但当我编辑并在编辑后单击save时,我会收到一条消息“Undefined index:search in”。 不过数据还是保存了下来。 我该如何解决这个问题 代码是:保存已编辑表单时在PHP中未定义索引,php,warnings,undefined,Php,Warnings,Undefined,当我删除它的作品很好。 当我取消时,它也可以正常工作。 但当我编辑并在编辑后单击save时,我会收到一条消息“Undefined index:search in”。 不过数据还是保存了下来。 我该如何解决这个问题 代码是: <html> <head> </head> <body> <?php $page='search.php'; mysql_connect("localhost","root","") o
<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>
这是因为search
变量这次没有以表单形式发送。
如果您首先检查它是否已设置,则不会收到该警告
换行
if ($_POST['search'] == 'search')
对于这一个:
if (isset($_POST['search']) && $_POST['search'] == 'search')
我想你必须像这样检查你的身体状况
if (isset($_POST['search']) && $_POST['search'] == 'search')
{
// code here
}
else if(isset($_POST['save']) && $_POST['save']== 'save')
{
// code here
}
是的,一切正常。首先,当您发布保存表单时,它会检查您的$\u POST['search']。其中不包含任何搜索表单字段
jst将所有$\u POST['save']
,$\u POST['search']
替换为(isset($\u POST['save'])和&$\u POST['save']='save')
和(isset($\u POST['search'])&$\u POST['search']='search')
你需要记住的是
如果查询返回单个结果,则不要使用while循环
那里简单地说就是费斯·雷苏特
始终尝试将表单标签放在表外/表前
在上面的结构中,您在while循环内的表单中重复相同的名称李>
使用isset检查php中的变量
尝试上述建议,然后再试。查看相关信息,这个问题一天会被问多次。请注意,检查是否是POST请求(而不是GET)的最佳/正确方法;是通过以下方式进行检查的:如果($\u SERVER['REQUEST\u METHOD']=='POST')在编辑的情况下,实际的可能重复。您的表单没有名为“搜索”的字段。因此,根据您的条件代码检查搜索,但它不存在。试试这个。