很难显示数据库中的信息

时间:2014-09-27 12:57:27

标签: php

我只是在学习PHP,我按照本书的最后一个细节,当我进入我创建的localhost网页以从数据库中提取信息时,网页上没有显示任何内容。我整晚都在排除故障,我已经谷歌一遍又一遍地阅读这本书,看看我错过了什么。我发布了我写的代码,看看是否有人可以带领我在正确的区域来解决我的问题。

<html>
  <head>
    <title>Pay Scale</title>
  <style type="text/css">
    table {
      background-color: #FCF;
    }

    th {
      width:150px;
      text-align: left;
    }
  </style>
</head>
<body>
<h1>Pay Scale</h1>

<form method= "post" action= "Payscale.php"
<input type="hidden" name="submitted" value="true" />
<label> Search Category: 
<select name="category">
    <option value="Id">ID</option>
    <option value="First Name">First Name</option>
    <option value="Last_Name">Last_Name</option>
</select>
</label> <label>Search Criteria: 
<input type="text" name="criteria" />
</label> 
<input type="submit" />
</form>

<?php
if (isset($_POST['submitted'])){

    include('payconnect.php');

    $category = $_POST['category'];
    $criteria = $_POST['criteria'];
    $query = "SELECT * FROM employee pay range WHERE $category = '$criteria'";
    $result = mysqli_query($dbcon, $query) or die('error getting data');

    echo "<table>";
    echo "<tr> <th>ID</th> <th>First Name</th> <th>Last_Name</th> <th>Pay_Range</th> </tr>";

    While($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

        echo "<tr><td>";
        echo $row['ID'];
        echo "</td><td>";
        echo $row['First Name'];
        echo "</td><td>";
        echo $row['Last_Name'];
        echo "</td><td>";
        echo $row['Pay_Range'];
        echo "</td><tr>";
    }
    echo "<table>";
}
?>
</body>
</html>  

3 个答案:

答案 0 :(得分:1)

页面的html代码存在一些问题。最明显的是>标记上没有结束form,因此浏览器会在下一行中徘徊,认为它是form标记的一部分。由于该行设置了PHP脚本正在查找的$_POST['submitted']变量,因此该值未设置且脚本永远不会运行。

要解决此问题,只需在>声明中添加form

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

HTML中还有一些其他问题可以同时解决:

在页面顶部:

<html>
  <head>

文档应以DOCTYPE声明开头,以便浏览器知道如何解释页面。对于HTML5,这就像在文件的开头添加一行一样简单:

<!DOCTYPE html>
<html>
<head>

表创建代码中也存在错误:

    echo $row['Last_Name'];
    echo "</td><td>";        
    echo $row['Pay_Range'];
    echo "</td><tr>";        # A
}
echo "<table>";              # B

标记为A的行和B分别创建新元素 - 表行和新表。你应该关闭元素 - 即。使用</tr></table>

答案 1 :(得分:0)

您的开始标记似乎未关闭(一个轻微的语法错误)。

尝试从此处更改:

<form method= "post" action= "Payscale.php"

到此:

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

并查看是否能解决问题。

答案 2 :(得分:0)

试一试

    <html>
      <head>
        <title>Pay Scale</title>
      <style type="text/css">
        table {
          background-color: #FCF;
        }

        th {
          width:150px;
          text-align: left;
        }
      </style>
    </head>
    <body>
    <h1>Pay Scale</h1>

    <form method= "post" action="Payscale.php">
    <input type="hidden" name="submit" value="true"/>
    <label> Search Category: 
    <select name="category">
        <option value="Id">ID</option>
        <option value="First Name">First Name</option>
        <option value="Last_Name">Last_Name</option>
    </select>
    </label> <label>Search Criteria: 
    <input type="text" name="criteria" />
    </label> 
    <input type="submit" value="submit" name="submitted"/>
    </form>
   </body>
</html>

<强> Payscale.php

<?php
if (isset($_POST['submitted'])){

    include('payconnect.php');

    $category = $_POST['category'];
    $criteria = $_POST['criteria'];
    $query = "SELECT * FROM employee pay range WHERE $category = '$criteria'";
    $result = mysqli_query($dbcon, $query) or die('error getting data');

    echo "<table>";
    echo "<tr> <th>ID</th> <th>First Name</th> <th>Last_Name</th> <th>Pay_Range</th> </tr>";

    While($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

        echo "<tr><td>";
        echo $row['ID'];
        echo "</td><td>";
        echo $row['First Name'];
        echo "</td><td>";
        echo $row['Last_Name'];
        echo "</td><td>";
        echo $row['Pay_Range'];
        echo "</td><tr>";
    }
    echo "<table>";
}
?>