Поиск по тексту не работает

152
10 июня 2019, 16:40

У меня есть таблица movies в которой 20 фильмов. Когда я произвожу поиск фильма по его названию, выводится все фильмы и echo $sql; возвращает только SELECT * FROM movies WHERE 1=1; без значения movie_title. В то время как поиск по году выпуска и рейтингу работает. В чем ошибка, не могу понять. Помогите пожалуйста! Что выводиться при поиске по movie_title:

Вот мой код:

<html>
  <head>
    <title>Search Results</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
      <link href="stylesheets/film_style.css" rel="stylesheet" type="text/css" />
        <nav class="navbar navbar-default">
      <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="index.php"><?php require("../private/share/header.php") ?></a>
        </div>
        <ul class="nav navbar-nav">
          <li><a href="index.php">Top</a></li>
          <li><a href="movies.php">Movies</a></li>
          <li class="login"><a href="../private/login.php">Login</a></li>
          <li class="login"><a href="../private/add_admin.php">Signin</a></li>
          <li class="login"><a href="../private/admin.php">Admin</a></li>
        </ul>
      </div>
    </nav>
  </head>
  <body>
    <div class="container" style="margin-top:30px">
<?php
$servername = "localhost";
$username = "webuser";
$password = "secret1234";
$dbname = "movies_db";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
else{
  if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $sql= "SELECT * FROM movies ";
    $sql.=" WHERE 1=1 ";
    if(isset($_POST['movie_title']) && strlen( $_POST['movie_title'])){
       $sql.="AND movie_title='".$_POST['movie_title']."'";
    }
    if(isset($_POST['movie_rating']) && strlen( $_POST['movie_rating'])){
       $sql.="AND movie_rating='".$_POST['movie_rating']."'";
    }
    if(isset($_POST['movie_release_date']) && strlen( $_POST['movie_release_date'])){
       $sql.="AND movie_release_date LIKE '%".$_POST['movie_release_date']."%';";
    }
  }
  echo $sql;
      $res2 = mysqli_query($conn,$sql);
    if (mysqli_num_rows($res2) > 0) {
        //echo "we have some results";
        //we will generate some dymaic sql
        while($row = mysqli_fetch_assoc($res2)) {
          echo "<div class='topic_info'>";
          echo "<div class='topic_info_wrapper'>";
          echo "<div class='topic_info_search>";
          echo "<div class='title'>";
          echo "<h1 class='title' itemprop='name'>Title: </h1>";
          echo htmlspecialchars("{$row['movie_title']} ");
          echo "</div>";
          echo "<ul class='tag_wrapper'>";
          echo "<ul class='search_tags'>";
          echo "<li><strong>Runtime: </strong></li>";
          echo htmlspecialchars("{$row['movie_runtime']} ");
          echo "</ul>";
          echo "</ul>";
          echo "<ul class='tag_wrapper'>";
          echo "<strong>Release Date: </strong>";
          echo htmlspecialchars("{$row['movie_release_date']} ");
          echo "</ul>";
          echo "<ul class='tag_wrapper'>";
          echo "<strong>Description: </strong>";
          echo htmlspecialchars("{$row['movie_description']} ");
          echo "</ul>";
          echo "<ul class='tag_wrapper'>";
          echo "<strong>Rating: </strong>";
          echo htmlspecialchars("{$row['movie_rating']} ");
          echo "</ul>";
          echo "</div>";
          echo "</div>";
          echo "<br/>";
        }
      }
}
  mysqli_close($conn);
      ?>
</div>
  </body>
  <footer>
    <div class="footerStyle">
      <?php require("../private/share/footer.php") ?>
    </div>
  </footer>
</html>
Answer 1

Нашла решение проблеммы. Переменная не передовалась из-за неправильного название пременной в самой форме поиска. Код поиска:

<?php
$servername = "localhost";
$username = "webuser";
$password = "secret1234";
$dbname = "movies_db";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
else{
  if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $sql= "SELECT * FROM movies ";
    $sql.=" WHERE 1=1 ";
    if(isset($_POST['movie_title']) && strlen( $_POST['movie_title'])){
       $sql.="AND movie_title LIKE '%".$_POST['movie_title']."%';";
    }
    if(isset($_POST['movie_rating']) && strlen( $_POST['movie_rating'])){
       $sql.="AND movie_rating='".$_POST['movie_rating']."'";
    }
    if(isset($_POST['movie_release_date']) && strlen( $_POST['movie_release_date'])){
       $sql.="AND movie_release_date LIKE '%".$_POST['movie_release_date']."%';";
    }
  }
  echo $sql;
  $res2 = mysqli_query($conn,$sql);
    if (mysqli_num_rows($res2) > 0) {
        //echo "we have some results";
        //we will generate some dymaic sql
        while($row = mysqli_fetch_assoc($res2)) {
          echo "<div class='topic_info'>";
          echo "<div class='topic_info_wrapper'>";
          echo "<div class='topic_info_search'>";
          echo "<div class='title'>";
          echo "<h1 class='title'><strong>Title: </strong></h1>";
          echo htmlspecialchars("{$row['movie_title']} ");
          echo "</div>";
          echo "<ul class='tag_wrapper'>";
          echo "<ul class='search_tags'>";
          echo "<li><strong>Runtime: </strong></li>";
          echo htmlspecialchars("{$row['movie_runtime']} ");
          echo "</ul>";
          echo "</ul>";
          echo "<ul class='tag_wrapper'>";
          echo "<strong>Release Date: </strong>";
          echo htmlspecialchars("{$row['movie_release_date']} ");
          echo "</ul>";
          echo "<ul class='tag_wrapper'>";
          echo "<strong>Description: </strong>";
          echo htmlspecialchars("{$row['movie_description']} ");
          echo "</ul>";
          echo "<ul class='tag_wrapper'>";
          echo "<strong>Rating: </strong>";
          echo htmlspecialchars("{$row['movie_rating']} ");
          echo "</ul>";
          echo "</div>";
          echo "</div>";
          echo "</div>";
          echo "<br/>";
        }
      }
}
  mysqli_close($conn);
      ?>

Код формы:

<html>
  <head>
    <title>Detailed Search</title>
  </head>
  <body>
      <div>
        <form method="POST" action="search.php" class="admin_form">
          <fieldset>
            <legend>Search</legend>
            <div class="container">
              <label for='movie_title'>Title:</label><br />
              <input type='text' id='movie_title' name='movie_title' size='45'><br />
            </div>
            <div class="container">
              <label for="rating">Rating:</label><br />
              <select name="movie_rating">
                <option disabled selected value> -- select an option -- </option>
                <option value='G'>G</option>
                <option value='PG'>PG</option>
                <option value='PG-13'>PG-13</option>
                <option value='R'>R</option>
                <option value='14A'>14A</option>
                <option value='18A'>18A</option>
              </select><br />
            </div>
            <div class="container">
              <label for="release_date">Release Date</label><br />
              <input type='text' id='movie_release_date' name='movie_release_date' size='45'><br />
            </div>
            <div class='container'>
              <input type='submit' name='Submit' value='Submit' class="my_btn btn-outline-info" />
            </div>
          </fieldset>
        </form>
      </div>
  </body>
</html>
READ ALSO
Очистить колонцу в MySql

Очистить колонцу в MySql

Есть таблица с колонками id, user, count со значениями

128
Параллакс эффект на чистом CSS

Параллакс эффект на чистом CSS

Пытаюсь совместить эффект параллакса и вот текст, но что-то не особо выходитВесь текст не влезает, а дальше страница не прокручивается

124
Проблема с viewport

Проблема с viewport

На странице

109
Как собрать все объекты с html в json?

Как собрать все объекты с html в json?

У меня есть html страница, в ходе работы с которой и исходя из того что выбирает юзер на ней появляются селекты, инпуты(оооочень много)

130