2016-02-12 3 views
1

Я пытаюсь отфильтровать мою базу данных, используя 2 select option() и(), что я хочу, когда пользователь загружает страницу, они могут видеть результат базы данных, организованный в таблице, когда они выбирают выбор (выпадающий список), таблица фильтруется, они могут выбрать один из выбранных (выпадающий список) или оба для оптимального результата. так как я могу настроить свой код для работы, как я этого хочу? Я использую базу данных 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>"; 
} 
?> 
+0

Вы говорите это, чтобы найти сотрудников с разными значениями reportsTo в то же время, это физически невозможно :). Таким образом, вы либо хотите использовать разные столбцы в своем запросе для сопоставления с значениями $ office и $ report или ... использовать инструкцию OR вместо AND? – Filip

+0

¿Как выглядит работник для сотрудников? – Cuchu

+0

@Filip таблица моего сотрудника имеет следующие атрибуты: employeeNumber lastName firstName extension officeCode email jobTitle, поэтому я не думаю, что запрос является проблемой, по какой-то причине я думаю, что он не распознает $ office и $ report values, потому что когда я echo значения Я получаю ту же ошибку: Неопределенный индекс, спасибо за время yuor – Glory

ответ

1

Попробуйте этот код: Две точки, я комментарий базы данных подключения и SQL (для моего) требуют присоединиться к другому столу, потому что ваш данные или концепция неверны. В этом случае POSTES пуст, не тот же 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

+0

это то же, что и нет результатов, таблица пуста, она не распознает переданные значения – Glory

+0

Я тестирую на своем рабочем столе .. edit mi ответить – Cuchu

+0

Но reportsTo не существует в таблице, есть другая таблица в вашей системе? Или что такое отчеты в таблице? – Cuchu

Смежные вопросы