【发布时间】:2015-11-06 22:26:29
【问题描述】:
我正在尝试在我的网站上创建一个搜索栏,它将查询 mysql 数据库并以时尚的方式返回结果。搜索将用于查找名称。例如,用户可以输入“John Doe”,任何关于 John Doe 的信息都会被返回。不幸的是,每当我单击提交按钮并且我的站点转换为“search.php”时,页面都是完全空白的。我已经测试了我与数据库的连接并且知道它正在工作。我的代码有什么问题,以至于完全没有出现吗?它甚至不会将用户恢复到 index.html。
我的 index.html 上有一个搜索栏,如下所示:
<form id="navsearch" class="form-group" role="search" action="search.php" method="post">
<div class="input-group" display="inline">
<input name="search" type="text" value="Search" class="form-control" placeholder="Search">
<span class="input-group-btn">
<button class="btn btn-default btn" name="submit" class="btn btn-lg" type="submit">
<span class="glyphicon glyphicon-search" name="submit"></span>
</button>
</div>
</form>
这是“search.php”上的 php:
<?php
//make connection to database
$connection = mysqli_connect('xxx.xxxx', 'root', 'hello', 'awstutorial', 3306);
$search_word = '';
if (isset($_POST['submit'])) {
if (!empty($_POST['search'])) {
$search_word = $_POST['search'];
$search = mysqli_real_escape_string($connection, $_POST['search']);
$query = "SELECT * FROM data WHERE name LIKE '%$search%' ";
$search_query = mysqli_query($connection, $query);
// START RESULTS
if ($result = mysqli_query($connection, $query)) {
$to_display = "<div>";
while ($row = mysqli_fetch_array($result)) {
if ((substr($row['file'], -3) == 'jpg') || (substr($row['file'], -3) == 'JPG') || (substr($row['file'], -3) == 'PNG') || (substr($row['file'], -3) == 'png') || (substr($row['file'], -3) == 'GIF') || (substr($row['file'], -3) == 'gif'))
$img_url = "uploads/" . $row['file'];
else {
if ((strtolower(substr($row['file'], -3) == 'png')) || (strtolower(substr($row['file'], -3) == 'doc')) || (strtolower(substr($row['file'], -3) == 'docx') ))
$img_url = "uploads/pdf_logo.png";
else
$img_url = "uploads/no_doc.png";
}
$to_display .= "<a href='story.php?id=".$row['id']."' class='col-md-3 asdivs portfolio-box fancybox fancybox.iframe'><img alt='' class='img-responsive' src='" . $img_url . "'><div class='portfolio-box-caption'>
<div class='portfolio-box-caption-content'>
<div class='project-category text-faded'>
Read
</div>
<div class='project-name'>"
. $row['name'] . "'s Story
</div>
</div>
</div>" . $row['name'] . " - " . $row['email'] . "</a>";
}
}
$to_display .= "</div><div style='clear:both;'></div>";
} else {
header("Location: index.html");
}
}
?>
【问题讨论】:
-
在您的 PHP 安装中尝试 enabling error reporting 并再次运行脚本
-
您正在使用
submit类型的按钮,它本质上将提交表单 - 设置为search.php- 您期望会发生什么?如果您想要一个异步的、单页的、无需重新加载用户的体验,您将需要使用 ajax 来运行查询而无需重新加载页面 -
删除
if (isset($_POST['submit'])) { ... } -
您将
$search_query分配给mysqli_query但您在while循环中使用$results- 它们应该是相同的。