目前我有一个索引页面,它使用simpleXML显示来自XML页面的值。还有一个打印到另一个页面的搜索功能,我想要做的是刷新首页,以便在点击按钮时仅显示搜索结果。
索引页。
<?php
$action = "searchFunctionDescription.php";
?>
<form name="search" method="get" action=<?php echo "\"$action"?>">
<input name="txtSearch" type="text" id="txtSearch" size="30"/>
<input type="submit" value="Search" />
<?php
// load the xml file into a simplexml instance variable
$holiday = simplexml_load_file('holidays.xml');
// draw a table and column headers
echo "<table border=\"1\">";
// iterate through the item nodes displaying the contents
foreach ($holiday->channel->item as $holiday) {
echo "<tr><td><a href=\"{$holiday->link}\">{$holiday->title}</a>" . "<br />" .
"{$holiday->pubDate}" . "<br />" .
"{$holiday->description}</td>" . "<br />" .
"</tr>";
}
echo "</table>";
?>
然后我的searchProcessDescription.php页面
<?php
// create an instance
$holidayDoc = simplexml_load_file('holidays.xml');
// Passes txtSearch to current script from searchFormDescription.php
$txtSearch = $_GET['txtSearch'];
// Informs user of what they have searched
echo "Showing Results for <strong>$txtSearch</strong>";
// set the query using the description
if (!is_null($txtSearch)) {
$qry = "//channel/item[description[contains(text(),\"$txtSearch\")]]";
}
else {
// blank search entered so all holidays are shown.
$qry = "/channel/'ALL'";
}
// execute the xpath query
$holidays = $holidayDoc->xpath($qry);
// now loop through all holidays and entered results into table
echo "<table border=\"0\">\n";
foreach ($holidays as $holiday)
{
echo "<tr>\n";
echo "<td><a href=\"{$holiday->link}\">{$holiday->title}</a></td>";
echo "<td>{$holiday->description}</td>";
echo "<td>{$holiday->pubDate}</td>";
echo "<td><input type=\"checkbox\" name=\"saveCB\" value=\"3\"/></td>";
echo "</tr>\n";
}
echo "</table>\n";
?>
是否有一种简单的方法可以将此流程添加到索引页面,并在单击搜索按钮时刷新页面?
由于
答案 0 :(得分:2)
是的,您可以在表单中添加另一个变量来检查您必须显示的功能,如下所示:
<?php
// create an instance
$holidayDoc = simplexml_load_file('holidays.xml');
$resultTable = "";
switch (@$_POST['action']){
case "Search":
$txtSearch = $_POST['txtSearch'];
$resultTable .= "Showing Results for <strong>$txtSearch</strong><br />";
// set the query using the description
if (!is_null($txtSearch)) {
$qry = "//channel/item[description[contains(text(),\"$txtSearch\")]]";
}
else {
// blank search entered so all holidays are shown.
$qry = "/channel/'ALL'";
}
// execute the xpath query
$holidays = $holidayDoc->xpath($qry);
// now loop through all holidays and entered results into table
$resultTable .= "<table border=\"0\">\n";
foreach ($holidays as $holiday)
{
$resultTable .= "<tr>\n";
$resultTable .= "<td><a href=\"{$holiday->link}\">{$holiday->title}</a></td>";
$resultTable .= "<td>{$holiday->description}</td>";
$resultTable .= "<td>{$holiday->pubDate}</td>";
$resultTable .= "<td><input type=\"checkbox\" name=\"saveCB\" value=\"3\"/></td>";
$resultTable .= "</tr>\n";
}
$resultTable .= "</table>\n";
break;
default: // this means the home page, as is, without the query into XML file
$resultTable .= "<table border=\"1\">";// draw a table and column headers
// iterate through the item nodes displaying the contents
foreach ($holidayDoc->channel->item as $holiday) {
$resultTable .= "<tr><td><a href=\"{$holiday->link}\">{$holiday->title}</a>" . "<br />" .
"{$holiday->pubDate}" . "<br />" .
"{$holiday->description}</td>" . "<br />" .
"</tr>";
}
$resultTable .= "</table>";
break;
}
?>
<form name="search" method="POST" action=#">
<input name="txtSearch" type="text" id="txtSearch" size="30"/>
<input type="submit" value="Search" name="action" />
</form>
<?=$resultTable ?> <!-- finally show the result table -->
我希望这很有用!