让您了解我正在做的事情。我正在做一个项目,在我的学校校园里你可以四处走动。例如,房间可以被称为J2626或J2617等......当用户使用我的网站时,我只希望它输入房间的确切名称才能显示任何内容。现在它不像我想要的那样工作。 例如:如果您只在搜索字段中键入J,它将显示所有以J开头的房间。
这是我现在的代码:
<?php
$fileName = dirname(dirname(__FILE__)) . "../../db/bth_nav.sqlite";
if (isset($_GET['page'])) {
$argument = $_GET['page'];
$argument = "%" . $argument . "%";
$db = new PDO("sqlite:$fileName");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$stmt = $db->prepare('SELECT * FROM bth_nav WHERE name LIKE (:nameOwner) OR owner LIKE (:nameOwner);');
$stmt->execute(array($argument));
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($res)) {
header("Location: " . "http://" . $_SERVER['index.php']);
}
?>
<div class = "formObjectSearch">
<?php foreach ($res as $val) { ?>
<div class = "infoTab">
<h2><?= $val['name']; ?></h2>
<p>Guidance: <?= $val['info']; ?></p>
<p>Whos sitting here?: <?= $val['owner']; ?>
</div>
<img class = "buildingImage" src = "img/<?= $val['image']; ?>"
<?php
}
}
?>
</div>
我尝试过不同的if语句,但没有成功。所以我需要帮助的是,我只希望用户能够搜索正确的房间名称,而不能只搜索J并显示所有内容。
更新
这是我的index.php:
我使用了这个链接,因为代码示例不想工作:index.php code
这是我的building.php:
Samer:building.php code
新的search.php和帮助:
同样在这里:search.php code
我现在收到这些错误:
注意:未定义的索引:第19行的/path/incl/files/search.php中的index.php
警告:无法修改标头信息 - 第19行的/path/incl/files/search.php中已经发送的标头(输出从/path/incl/header.php:7开始)
我的header.php代码:
同样在这里:header.php code
我的config.php代码:
同样在这里:config.php code
我的footer.php代码:
同样在这里:footer.php code
答案 0 :(得分:1)
如果我正确地告诉你,如果你想用起始字母J
搜索所有房间,你需要改变你的论点。
<强>解释强>
'%J%'
- 搜索所选字段,其中J
字母。
'%J'
- 搜索所选字段,其中J
是最后一个字母。
'J%'
- 搜索所选字段,其中J
是第一个字母。
尝试改变你的论点:
$argument = $argument . "%";
<强>更新强>
修正你的if语句:
if (empty($res) OR $res == null) {
header('Location: http://'.$_SERVER['index.php']);
}
else {
echo '<div class = "formObjectSearch">';
foreach ($res as $val) {
echo '<div class = "infoTab">';
echo '<h2>'.$val["name"].'</h2>';
echo '<p>Guidance:'.$val["info"].'</p>';
echo '<p>Whos sitting here?:'.$val["owner"].'</p>';
echo '</div>';
echo '<img class="buildingImage" src="img/'.$val['image'].'" />';
}
echo '</div>';
}
或强>
您可以尝试使用以下内容替换空:
if ($res->rowCount() > 0) {
// if founded
} else {
// header('Location: http://'.$_SERVER['index.php']);
}