我一直在學習一些PHP和MySQL的書,教你如何創建一個簡單的數據庫驅動的網站。在本書的例子中,我們創建了一個存儲作者姓名,笑話文本,日期和ID的笑話數據庫。進展我已經被教過如何在我的主控制器index.php中使用include。我被卡在一部分,他們告訴我爲笑話數據庫創建一個搜索功能,編碼如下:Searchform和結果只在一個頁面上,而不是兩個。解決方案?
這是名爲'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和jokes.html僅僅是一個HTML文件?我發現使用2個文件進行搜索很不方便。
我的第一次嘗試(我將搜索表單和笑話合併到「jokesearch.html.php」中)是在CHANGE 1中包含'jokesearch.html.php',並在CHANGE 2中再次包含'jokesearch.html.php',但是這並沒有幫助。它只是重新加載頁面。
第二次嘗試是使用header('Location:。')...這裏沒有運氣,它只是重新加載。
編輯:根據大衆的需求,我會包含兩個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>
jokes.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: 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>
只是好奇,什麼是給'.inc.php'和'.html.php'擴展的原因是什麼? – zerkms 2010-11-17 09:48:23
您可以將包含的內容粘貼到您的問題中嗎? – babonk 2010-11-17 09:51:56
沒問題。這本書說給他們的名字讓我可以很容易地識別文件類型。 – stockoverflow 2010-11-17 10:25:19