Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 只在一页而不是两页上搜索表单和结果。解决?_Php_Search - Fatal编程技术网

Php 只在一页而不是两页上搜索表单和结果。解决?

Php 只在一页而不是两页上搜索表单和结果。解决?,php,search,Php,Search,我从一本书中学习了一些PHP和MySQL,这本书教你如何创建一个简单的数据库驱动的站点。在本书的示例中,我们创建了一个笑话数据库,用于存储作者姓名、笑话文本、日期和id。我已经学习了如何在我的主控制器index.php中使用include。我被困在一个地方,他们告诉我为笑话数据库创建一个搜索功能,编码如下: 这是名为'index.php'的控制器的第一部分,它所做的只是显示搜索表单 // Display search form include $_SERVER['DOCUMENT_ROOT']

我从一本书中学习了一些PHP和MySQL,这本书教你如何创建一个简单的数据库驱动的站点。在本书的示例中,我们创建了一个笑话数据库,用于存储作者姓名、笑话文本、日期和id。我已经学习了如何在我的主控制器index.php中使用include。我被困在一个地方,他们告诉我为笑话数据库创建一个搜索功能,编码如下:

这是名为'index.php'的控制器的第一部分,它所做的只是显示搜索表单

// Display search form
include $_SERVER['DOCUMENT_ROOT'] . '/includes/db.inc.php';
include 'searchform.html.php'; //CHANGE 1
?>
控制器的下一部分构建SQL,然后将其发送到jokes.html.php,非常简单。。。这里没问题

if (isset($_GET['action']) and $_GET['action'] == 'search')
{
include $_SERVER['DOCUMENT_ROOT'] . '/includes/db.inc.php';
//Build SQL statement and output results into an array code here
}
include 'jokes.html.php'; //CHANGE 2
exit();
}
如果您的searchform.html和crooks.html只是一个html文件,您将如何修改上面的代码?我发现使用2个文件进行搜索很不方便

我的第一次尝试(我已经将searchform和笑话合并到“jokesearch.html.php”中)是在变更1和变更2中包含“jokesearch.html.php”,但这并没有帮助。。。它只是重新加载了页面

第二次尝试使用标头('位置:')。。。这里也不走运,只是重新加载了

编辑:根据流行的需求,我将包括两个html文件

searchform.html.php:

<?php include_once $_SERVER['DOCUMENT_ROOT'] .
'/includes/helpers.inc.php'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Manage Jokes</title>
<meta http-equiv="content-type"
content="text/html; charset=utf-8"/>
</head>
<body>
<h1>Manage Jokes</h1>
<p><a href="?add">Add new joke</a></p>
<form action="" method="get">
<p>View jokes satisfying the following criteria:</p>
<div>
<label for="author">By author:</label>
<select name="author" id="author">
<option value="">Any author</option>
<?php foreach ($authors as $author): ?>
<option value="<?php htmlout($author['id']); ?>"><?php
htmlout($author['name']); ?></option>
<?php endforeach; ?>
</select>
</div>
<div>
<label for="category">By category:</label>
<select name="category" id="category">
<option value="">Any category</option>
<?php foreach ($categories as $category): ?>
<option value="<?php htmlout($category['id']); ?>"><?php
htmlout($category['name']); ?></option>
<?php endforeach; ?>
</select>
</div>
<div>
<label for="text">Containing text:</label>
<input type="text" name="text" id="text"/>
</div>
<div>
<input type="hidden" name="action" value="search"/>
<input type="submit" value="Search"/>
</div>
</form>
<p><a href="..">Return to JMS home</a></p>
</body>
</html>

开玩笑
开玩笑

查看满足以下条件的笑话:

作者: 任何作者
也许是这样的

如果(isset($\u GET['action'])和$\u GET['action']=='search'){ //搜索结果 }否则{ //显示搜索表单
}

从MVC的角度来看,您的初始设置是正确的。 您的控制器收集和处理数据并将其发送到视图(您的.html.php文件)

将不同的元素划分为不同的视图是一种很好的做法。因此,搜索框或搜索结果的视图与笑话不同

将两个不同的逻辑元素放在一个视图文件中会增加维护难度

问候,, 欧文·沃利克
snow.nl

只是好奇,为什么要提供
.inc.php
.html.php
扩展名?你能将包含的内容粘贴到你的问题中吗?没问题。书上说给他们起名字可以让我很容易识别文件类型。是的,我同意维护。。。但不幸的是,我需要它在一个文件中。例如,比萨饼订单搜索/结果页面有3列:1列用于搜索表单,另一列用于结果,最后一列用于订单或购物车。您可能希望同时显示它们。您可以使用多个include语句同时显示它们。重新加载可能是因为包含的文件中包含了一些代码。检查所包含的文件中是否没有从Whitt设置的头或元标记。您在这里没有使用MVC模式。这些文件是被某种调度器入侵的模板。控制器这个词在这里并不合适。完成这项工作需要大量的解释和示例代码,也许你应该看看你的书,找到更多的信息,或者要开始使用真正的MVC框架,请查看Zend框架的文档。我明白了,我绝对没有办法用html来做这件事?不幸的是,这本书没有讲太多。。。我学习PHP和MySQL才一个星期,使用Zend可能太多了:P我觉得奇怪的是,PHP甚至不能做这样一件基本的事情……它绝对可以做到!重点是在您的示例中,包含的文件是完整的html文件,包括html页眉和页脚。这必须更改为动态构建html页面,从页眉开始,在“控制器”中进行一些计算,向输出添加不同的视图,并以html页脚结束。我已经尝试了您的方法。。。运气不好。只需刷新自身,无需输入数据。谢谢你的回复。
<?php include_once $_SERVER['DOCUMENT_ROOT'] .
'/includes/helpers.inc.php'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Manage Jokes: Search Results</title>
<meta http-equiv="content-type"
content="text/html; charset=utf-8"/>
</head>
<body>
<h1>Search Results</h1>
<?php if (isset($jokes)): ?>
<table>
<tr><th>Joke Text</th><th>Options</th></tr>
<?php foreach ($jokes as $joke): ?>
<tr valign="top">
<td><?php htmlout($joke['text']); ?></td>
<td>
<form action="?" method="post">
<div>
<input type="hidden" name="id" value="<?php
htmlout($joke['id']); ?>"/>
<input type="submit" name="action" value="Edit"/>
<input type="submit" name="action" value="Delete"/>
</div>
</form>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php endif; ?>
<p><a href="?">New search</a></p>
<p><a href="..">Return to JMS home</a></p>
</body>
</html>