Как создать поле поиска для моих данных из phpMyAdmin? - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь вставить поисковый фильтр, который делает его таким, чтобы вы могли ввести номер блокировки, и он будет возвращать только поля из базы данных phpmyadmin, с которой связан этот номер блокировки. Имя файла: dataout.php.

 <?php
 $db_host = 'localhost'; 
 $db_user = 'nick'; 
 $db_pass = 'ramon';
$db_name = 'lockout'; ?>

 <link href="lockproject.css" type="text/css" rel="stylesheet">
 <input type="text" name="locknumber" placeholder="Enter Lock Number"><br> 
 <br>
  <input type="submit" name="search" value="Submit">

   <?php
  $conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
  if (!$conn) {
  die ('Fail to connect to MySQL: ' . mysqli_connect_error());   
  }

  $sql = 'SELECT ID, lock_number, equipment_number, work_order, date_out, 
  supervisor_out, comments_out, date_in, supervisor_in
    FROM form';

  $query = mysqli_query($conn, $sql);

  if (!$query) {
  die ('SQL Error: ' . mysqli_error($conn));
  }

  echo '<table width="60%" align="center">
    <thead>
        <tr>
            <th>ID</th>
            <th>Lock Number:</th>
            <th>Equipment</th>
            <th>Work Order:</th>
            <th>Date OUT:</th>
            <th>Supervisor Initial OUT:</th>
            <th>Comments/Tradesmen:</th>
            <th>Date In:</th>
            <th>Supervisor Initial in:</th>
        </tr>
    </thead>
    <tbody>';

   while ($row = mysqli_fetch_array($query))
  {
  echo '<tr>
        <td>'.$row['ID'].'</td>
        <td>'.$row['lock_number'].'</td>
        <td>'.$row['equipment_number'].'</td>
        <td>'.$row['work_order'].'</td>
        <td>'.$row['date_out'].'</td>
        <td>'.$row['supervisor_out'].'</td>
        <td>'.$row['comments_out'].'</td>
        <td>'.$row['date_in'].'</td>
        <td>'.$row['supervisor_in'].'</td>
     </tr>';

  }
  echo '
   </tbody>
  </table>';
  mysqli_free_result($query);
  mysqli_close($conn);
  ?>
  <a href="http://152.116.203.115/lockcheckin2.php" target='_blank'>Lock 
   Check 
   In Form</a>
   <a href= "http://152.116.203.115/lockcheckoutbeta.php" 
   target='_blank'>Lock 
  Check Out Form</a>

Вот код для прикрепленного к нему файла CSS, который называется lockproject.css

  {
  font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
  border-collapse: collapse;
  width: 100%;
  }
  h1 {
    border-bottom: 2px solid rgba(255, 255, 255, 0.5);
  color: white;
  font-weight: 120;
  font-size: 36px;
  line-height: 30px;
  padding-bottom: 20px;
  text-align: center;
  width: 100%;
  }
  h3 {
  color: #F81B1D

  }

   td,  th {
  border: 2px solid #ddd;
  padding: 14px;
  }

 tr:nth-child(odd){background-color: #f2f2f2;}
 tr:nth-child(even){background-color: #214CD2;}


 th {
  padding-top: 14px;
  padding-bottom: 14px;
  text-align: left;
  background-color: #000000;
  color: white;
  }
  body {
  background-color: #4D4949;
  }
  a:link, a:visited {
  background-color: #214CD2;
  color: white;
  padding: 14px 25px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  }


  a:hover, a:active {
  background-color: blue;
  }

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Эту проблему можно решить с помощью оператора SQL, где хороший пример показан здесь: https://www.w3schools.com/sql/sql_where.asp

Используя запрос GET в форме HTML, мы можем получить значение из поля и использовать его в нашем PHP-скрипте. Увидеть: https://www.w3schools.com/php/php_forms.asp

HTML-файл:

Это предоставит номер блокировки в файл как запрос на получение

<form action="dataout.php" method="get">
Name: <input type="text" name="lock_number"><br>

<input type="submit">
</form>

</body>
</html>

PHP скрипт:

Мы получаем значение, связанное с запросом GET, и используем его в запросе

Для защиты вы должны использовать подготовленные заявления. http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

$sql = "SELECT ID, lock_number, equipment_number, work_order, date_out, supervisor_out, comments_out, date_in, supervisor_in FROM form WHERE lock_number = ?";
$stmt = $this->conn->prepare($sql);
$stmt->bind_param('s', $lock_number);
$stmt->execute();
$stmt->bind_result($result);

while ($stmt->fetch()) {
 //This while give back a row at a time.
 //This contains only the rows that the WHERE statement gets
}

Отредактировано с учетом комментариев Patrick Q и Sam Swift.

0 голосов
/ 27 июня 2018

Что вы делаете, это ВЫБРАТЬ из ТАБЛИЦЫ, где номер блокировки в таблице равен введенному вводу. Это все. Ничего сложного в этом нет. Также не используйте функцию die, она устарела.

То, что вы ищете:

 if(isset($_POST['submit'])) {

$lock_number = $_POST['lock_number'];

$sql = 'SELECT id, lock_number, equipment_number, work_order, date_out, 
supervisor_out, comments_out, date_in, supervisor_in
FROM form WHERE lock_number = "{$lock_number}",'

}

Сначала вы проверяете, нажата ли кнопка, затем вводите введенные данные в переменную, а затем запрашиваете базу данных на ее основе. Он вернет искомый ряд.

0 голосов
/ 27 июня 2018

Вам нужно сделать 2 вещи:

  1. Поместите поле поиска в тег формы, кнопка отправки должна появиться под тегом формы.
<form id="search-form" method='POST'>
     <input type="text" name="locknumber" placeholder="Enter Lock Number"><br> 
 <br>
  <input type="submit" name="search" value="Submit">
 </form>
  1. Теперь нужно обновить $sql Запрос с условием. после запроса $ sql, нужно проверить, поступает ли в сообщении значение lockumber, а не пусто, мы должны добавить условие с запросом, как указано ниже.
 $sql = 'SELECT ID, lock_number, equipment_number, work_order, date_out, 
  supervisor_out, comments_out, date_in, supervisor_in
    FROM form';

  if (isset($_POST['locknumber']) && !empty($_POST['locknumber'])) {
        $sql .= " where lock_number = '" . $_POST['locknumber'] . "'";
  }

Надеюсь, это поможет вам решить вашу проблему. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...