我正在创建一个搜索栏,用户可以使用post方法进行搜索。方法在这里并不重要,但我无法弄清楚如何在while循环中回显输出blackqoutes。如果我连接所有这些HTML,那么它看起来很丑,也显示错误。
$searchname = '';
$last = '';
if(isset($_POST['q'])) {
$searchq = $_POST['q'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
$searchq = str_replace(' ', '', $searchq);
$searchquery= mysqli_query($dbc, "SELECT * FROM test WHERE name LIKE '%$searchq%' OR last LIKE '%$searchq%'") or die ("Something went wrong! Search Again");
$countsearch = mysqli_num_rows($searchquery);
if (empty($_POST['q'])){
$searchname = 'Sorry no results found!';
}
elseif($countsearch == 0) {
$searchname = 'Sorry No results found';
} else {
while ($row = mysqli_fetch_array($searchquery)) {
$searchname = $row['q'];
$last = $row['q'];
}
}
}
?>
</head>
<body>
<blockquote class="blockquote">
<p class="mb-0 web lead"><?php echo $searchname ?></p>
<footer class="blockquote-footer lit"><?php echo $last; ?></footer>
</blockquote>
答案 0 :(得分:0)
未经测试但可能有所帮助。 sql查询的结果(如果有的话)被添加到一个数组($html
)中,该数组稍后会在文档正文中打印到屏幕上。
<?php
$html=array();
if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['q'] ) ){
$searchname = 'Sorry no results found!';
$last = '';
$searchq = str_replace(' ', '', preg_replace( "#[^0-9a-z]#i", "", $_POST['q'] ) );
$sql="select * from test
where name like '%$searchq%' or last like '%$searchq%'";
$result = mysqli_query( $dbc, $sql );
$total = $result ? mysqli_num_rows( $result ) : false;
if( !$total > 0 ){
/* simplified html */
$html[]="
<blockquote>
<p>Sorry No results found</p>
<footer></footer>
</blockquote>";
} else {
while( $row = mysqli_fetch_array( $result ) ) {
$html[]="
<blockquote>
<p>{$row['q']}</p>
<footer>{$row['q']}</footer>
</blockquote>
";
}
}
}
?>
<html>
<head>
<title>mysqli query</title>
</head>
<body>
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' ) echo implode( PHP_EOL, $html );
?>
</body>
</html>