用下拉菜单在PHP中搜索表单


searching form in php with drop down menu

大家好!我只是一个新手在php编程,所以我需要有人来帮助我这一个。我还是找不到这段代码有什么问题。我创建了一个带有下拉菜单的搜索表单来过滤结果。但是当我进行搜索时,什么也没发生。它要么刷新页面要么显示错误标准消息。任何答案将不胜感激!:)提前感谢!下面是代码:

   <html>
    <head>
<basefont face="Arial">
</head>
<body>
<?php
error_reporting(E_ALL); 
if (!isset($_POST['Submit'])) {
// form not submitted
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
search  
  <input type="text" name="search">
   <select size="1" name="dropdown">
    <option value="" selected>search By...</option>
    <option value="first">Company</option>
    <option value="last">Address</option>  
  </select>
  <input type="Submit" value="Submit" name="Submit"> 
</form>
<?php
}
else {
// Server Variables
$host = "localhost";
$user = "mdti";
$pass = "tnet";
$db = "ojt";
$search = empty($_POST['search'])? die ("ERROR: Enter search Criteria") : mysql_escape_string($_POST['search']);
$dropdown = empty($_POST['dropdown'])? die ("ERROR: Select from dropdown") : mysql_escape_string($_POST['dropdown']);

// Open Connection
$connect = mysql_connect($host, $user, $pass) or die ("Unable to connect to host");
//Select Database
mysql_select_db($db) or die ("Unable to connect to database");
//Create query
$query = "SELECT arCompanyname, arAddress FROM ar WHERE $dropdown like'$search'" or die (mysql_error());

$result = mysql_query($query) or die (mysql_error());
$num=mysql_numrows($result);
mysql_close($connect);
echo "<b><center>Database Output</center></b><br><br>";
$i=0;
while ($i < $num) {
$company=mysql_result($result,$i,"arCompanyname");
$address=mysql_result($result,$i,"arAddress");

echo "<br>Company: $company<br><br>Address: $address<hr><br>";
$i++;
}
}
?>
</body>
</html>

看着代码,最初的想法是:

change like'$search' with like '%$search%'
change mysql_numrows to mysql_num_rows
check the dropdwon option values 'arCompanyname' and 'arAddress' matching your field names.
change <?=$_SERVER['PHP_SELF']?> to <?php echo $_SERVER['PHP_SELF']; ?>

查看更新后的代码:

更新了搜索查询,mysql_numrows -> mysql_num_rows,增加了mysql_fetch_array用于循环。

尝试使用mysqli_*函数来编写脚本。因为mysql_ *函数将被弃用。

<html>
    <head>
<basefont face="Arial">
</head>
<body>
<?php
error_reporting(E_ALL); 
if (!isset($_POST['Submit'])) {
// form not submitted
?>
<form action="" method="post">
search  
  <input type="text" name="search">
   <select size="1" name="dropdown">
    <option value="" selected>search By...</option>
    <option value="first">Company</option>
    <option value="last">Address</option>  
  </select>
  <input type="Submit" value="Submit" name="Submit"> 
</form>
<?php
}
else {
    // Server Variables
    $host = "localhost";
    $user = "mdti";
    $pass = "tnet";
    $db = "ojt";
    // Open Connection
    $connect = mysql_connect($host, $user, $pass) or die ("Unable to connect to host");
    $search = empty($_POST['search'])? die ("ERROR: Enter search Criteria") : mysql_escape_string($_POST['search']);
    $dropdown = empty($_POST['dropdown'])? die ("ERROR: Select from dropdown") : mysql_escape_string($_POST['dropdown']);

    //Select Database
    mysql_select_db($db) or die ("Unable to connect to database");
    //Create query
    $query = "SELECT arCompanyname, arAddress FROM ar WHERE $dropdown like '%$search%'";

    $result = mysql_query($query) or die (mysql_error());
    $num=mysql_num_rows($result);
    if($num > 0) {

        echo "<b><center>Database Output</center></b><br><br>";

        while ($row = mysql_fetch_array($result)) {
            $company = $row['arCompanyname'];
            $address = $row['arAddress'];

            echo "<br>Company: $company<br><br>Address: $address<hr><br>";

        }

    } else {
        echo "No rows found";
    }
    mysql_close($connect);  
}
?>
</body>
</html>

use " mysql_real_escape_string"

$search = empty($_POST['search'])? die ("ERROR: Enter search Criteria") : mysql_real_escape_string($_POST['search']);
$dropdown = empty($_POST['dropdown'])? die ("ERROR: Select from dropdown") : mysql_real_escape_string($_POST['dropdown']);

将'$search'改为'%$search%'

$query = "SELECT arCompanyname, arAddress FROM ar WHERE $dropdown like'%$search%'" or die (mysql_error());

将mysql_numrows更改为mysql_num_rows

您正在呼叫mysql_real_escape_string而没有打开mysql_connect ..你需要调用mysql_real_escape_string代码

上面的连接代码
// Open Connection
$connect = mysql_connect($host, $user, $pass) or die ("Unable to connect to host");
$search = empty($_POST['search'])? die ("ERROR: Enter search Criteria") : mysql_real_escape_string($_POST['search']);
$dropdown = empty($_POST['dropdown'])? die ("ERROR: Select from dropdown") : mysql_real_escape_string($_POST['dropdown']);

你还需要改变选择选项的值

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
search  
  <input type="text" name="search">
   <select size="1" name="dropdown">
    <option value="" selected>search By...</option>
    <option value="arCompanyname">Company</option>
    <option value="arAddress">Address</option>  
  </select>
  <input type="Submit" value="Submit" name="Submit"> 
</form>

和用

更改查询
SELECT arCompanyname, arAddress FROM ar WHERE $dropdown LIKE '%$search%'