我目前正在使用搜索框搜索特定项目的网站上工作。页面以表格格式回显结果。到目前为止一切都很完美但是当我尝试过滤结果(取决于功能)时,我得到两组结果。一个先前显示的结果表,另一个是过滤结果。我不希望以前的结果再次显示在屏幕上而不影响任何其他过程。会话之类的东西?我不确切知道如何处理这种情况。
<?php
include'search.php';// form for a search box.
if (isset($_POST['search_name'])) {
$search_name=mysql_real_escape_string(htmlentities(trim($_POST['search_name'])));
$errors = array();
if (empty($search_name)){
$errors[] ='please enter a search term';
}
else if (strlen($search_name)<3){
$errors[] = 'your search term must be three or more characters';
}
else if (1==2){
$errors[] ='your search for '.$search_name.' returened no results';
}
if (empty($errors)){
filter($search_name); //it display another form in the navigation bar to filter the search result.
search_results($search_name);//searches for all the result onthe database depending on the keyword entered in searchbox.
} else{
foreach($errors as $error) {
echo $error,'</br>';
}
}
}
?>
答案 0 :(得分:1)
请参阅此代码:
echo 'world';
echo 'hello !';
您可以使用ob_start()
,ob_get_contents()
和ob_clean()
拦截回声。
ob_start();
echo 'world';
var $echoed = ob_get_contents();
ob_clean();
// real echo
echo 'hello ' . $echoed . '!';
// now you see
// hello world!
因为ob'输出缓冲'是PHP的原生,你可以使用它与函数,包括等等。我正在使用这种方法,在我的控制器流中截取(1.)输出,并拦截(2.)视图的输出,所以我可以稍后编写它们(例如将PHP错误呈现到调试div中。