使用select

时间:2016-02-12 11:35:45

标签: javascript php mysql

我试图使用2选择选项()和()来过滤我的数据库我想要的是当用户加载页面时他们可以看到组织在表中的数据库结果,当他们选择select(drop)时向下列表)表格被过滤后,他们可以选择其中一个选择(下拉列表)或两者以获得最佳结果。那么如何调整我的代码才能按我的意愿工作呢?我使用的是oracle hr数据库但是我一直收到这个错误:未定义的索引,有人可以告诉我为什么吗?

的index.php

<html>
<head>
</head>
<body>
<form  action="emp.php" method="post" name="Form2" id="Form2">
<select  id="officecode" name="officecode">
  <option value="">Select an officeCode:</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select>
<select id="reportsTo" name="reportsTo" >
  <option value="">reports To:</option>
  <option value="1143">1143</option>
  <option value="1102">1102</option>
  <option value="1108">1108</option>
  <option value="1056">1056</option>
</select>
</form>
<br>
<div id="result"><b>
<?php include "emp.php"; ?>
</b></div>
<script>
$(document).ready(function(){
    var office = $("#officecode");
    var report = $("#reportsTo");
    the_office.change(function(){
        var the_selected_office = $(this).val();
        self.location = "emp.php?off="+the_selected_office+"&rep=";
    });
    the_report.change(function(){
        var the_selected_report = $(this).val();
        self.location = "emp.php?off=&rep="+the_selected_report+";
    });
});
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</body>
</html>

emp.php

<?php
$office = $_POST["off"];
$report = $_POST["rep"];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "classicmodels";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql="SELECT * FROM employees WHERE reportsTo= '".$office."' AND reportsTo= '".$report."' ";
$result = $conn->query($sql);

echo "<table>
<tr>
  <th>Firstname</th>
  <th>Lastname</th>
  <th>Employee Number</th>
  <th>Extension</th>
</tr>";
while($row = $result->fetch_assoc()) {
    echo "<tr>";
    echo "<td>" . $row['firstName'] . "</td>";
    echo "<td>" . $row['lastName'] . "</td>";
    echo "<td>" . $row['employeeNumber'] . "</td>";
    echo "<td>" . $row['extension'] . "</td>";
    echo "</tr>";
}
?>

1 个答案:

答案 0 :(得分:1)

试试这段代码:两点,我评论数据库连接和sql(我的)需要加入其他表,因为你的数据或概念是错误的。在这种情况下,POST为空,而不是POST和GET,测试代码并查看。

的index.php

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>

$(document).ready(function(){

    var office = $("#officecode");
    var report = $("#reportsTo");

    $("#officecode").change(function(){
        var the_selected_office = $(this).val();
        self.location = "index.php?off="+the_selected_office+"&rep=";
    });

    $("#reportsTo").change(function(){
        var the_selected_report = $(this).val();
        self.location = "index.php?off=&rep="+the_selected_report+"";
    });


});

</script>

</head>
<body>
<select  id="officecode" name="officecode">
  <option value="">Select an officeCode:</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select>

<select id="reportsTo" name="reportsTo" >
  <option value="">reports To:</option>
  <option value="1143">1143</option>
  <option value="1102">1102</option>
  <option value="1108">1108</option>
  <option value="1056">1056</option>
</select>
<br>
<div id="result"><b>
<?php include "emp.php"; ?>
</b></div>
</body>
</html>

emp.php

<?php

  print_r("<pre>");
  print_r($_GET);
  print_r($_POST);
  print_r("</pre>");

  /*if(isset($_GET["off"]) || isset($_GET["rep"])) {*/

    $office = $_GET["off"];
    $report = $_GET["rep"];

    $where = array();
    if(!empty($office)) { 
        $where[] = "officeCode = {$office}";
    } 

    if(!empty($report)) { 
        $where[] = "reportsTo = {$report}";
    } 


$servername = "localhost";
$username = "root";
$password = "";
$dbname = "classicmodels";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 



if($where) {
    $w = implode(" OR ", $where);   
} else {
    $w = 1;
}

$sql="SELECT * FROM employees WHERE {$w}";
print_r("<pre>");
print_r($sql);
print_r("</pre>");
$result = $conn->query($sql);

echo "<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Employee Number</th>
<th>Extension</th>

</tr>";
while($row = $result->fetch_assoc()) {
    echo "<tr>";
    echo "<td>" . $row['firstName'] . "</td>";
    echo "<td>" . $row['lastName'] . "</td>";
    echo "<td>" . $row['employeeNumber'] . "</td>";
    echo "<td>" . $row['extension'] . "</td>";

    echo "</tr>";
}

/*}*/
?>

Empty filter OfficeCode = 3