明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用PHP與MySQL構(gòu)建一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的網(wǎng)站(7)

[摘要]現(xiàn)在我們已經(jīng)有了允許用戶輸入一個(gè)笑話并將其加入到我們的數(shù)據(jù)庫(kù)中的程序代碼,F(xiàn)在剩下的就是將其加入到我們已做好的笑話顯示頁(yè)面。因?yàn)榻^大多數(shù)的用戶只會(huì)想要看看笑話,所以我們不想對(duì)我們的頁(yè)面做大的更改,除非用戶表示想要添加一個(gè)新的笑話。因?yàn)檫@個(gè)原因,我們的應(yīng)用程序應(yīng)該是一個(gè)多功能的頁(yè)面。下面是程序的代碼...
現(xiàn)在我們已經(jīng)有了允許用戶輸入一個(gè)笑話并將其加入到我們的數(shù)據(jù)庫(kù)中的程序代碼,F(xiàn)在剩下的就是將其加入到我們已做好的笑話顯示頁(yè)面。因?yàn)榻^大多數(shù)的用戶只會(huì)想要看看笑話,所以我們不想對(duì)我們的頁(yè)面做大的更改,除非用戶表示想要添加一個(gè)新的笑話。因?yàn)檫@個(gè)原因,我們的應(yīng)用程序應(yīng)該是一個(gè)多功能的頁(yè)面。下面是程序的代碼:


<HTML>
...
<BODY>
<?php
// If the user wants to add a joke
if (isset($addjoke)):
?>
<FORM ACTION="<?php echo($PHP_SELF); ?>" METHOD=POST>
<P>Type your joke here:<BR>
<TEXTAREA NAME="joketext" ROWS=10 COLS=40 WRAP></TEXTAREA><BR>
<INPUT TYPE=SUBMIT NAME="submitjoke" VALUE="SUBMIT">
</FORM>

<?php
else:

// Connect to the database server
$dbcnx = @mysql_connect("localhost",
 "root", "mypasswd");
if (!$dbcnx) {
echo( "<P>Unable to connect to the " .
"database server at this time.</P>" );
exit();
}

// Select the jokes database
if (! @mysql_select_db("jokes") ) {
echo( "<P>Unable to locate the joke " .
"database at this time.</P>" );
exit();
}

// If a joke has been submitted,
// add it to the database.
if ("SUBMIT" == $submitjoke) {
$sql = "INSERT INTO Jokes SET " .
 "JokeText='$joketext', " .
 "JokeDate=CURDATE()";
if (mysql_query($sql)) {
echo("<P>Your joke has been added.</P>");
} else {
echo("<P>Error adding submitted joke: " .
 mysql_error() . "</P>");
}
}
echo("<P> Here are all the jokes " .
 "in our database: </P>");
// Request the text of all the jokes
$result = mysql_query(
"SELECT JokeText FROM Jokes");
if (!$result) {
echo("<P>Error performing query: " .
 mysql_error() . "</P>");
exit();
}
// Display the text of each joke in a paragraph
while ( $row = mysql_fetch_array($result) ) {
echo("<P>" . $row["JokeText"] . "</P>");
}
// When clicked, this link will load this page
// with the joke submission form displayed.
echo("<P><A HREF='$PHP_SELF?addjoke=1'>" .
 "Add a Joke!</A></P>");
endif;
?>
</BODY>
</HTML>



  現(xiàn)在我們有了一個(gè)單獨(dú)的文件,這個(gè)文件包含不太多的PHP代碼,通過(guò)這個(gè)文件,我們可以顯示我們的MySQL數(shù)據(jù)庫(kù)中的笑話并能向我們的MySQL數(shù)據(jù)庫(kù)中添加笑話。

一個(gè)挑戰(zhàn)

  作為家庭作業(yè),你可以看看你是不是能解決這么一個(gè)問(wèn)題:在頁(yè)面上顯示的每一個(gè)笑話后面放置一個(gè)叫“Delete this Joke”的超連接,當(dāng)單擊這個(gè)連接時(shí),會(huì)從數(shù)據(jù)庫(kù)中刪除這個(gè)笑話并顯示更改過(guò)以后的笑話列表。下面是對(duì)你的一些提示:

  你可以還在一個(gè)多功能頁(yè)面完成全部的功能。

  你需要使用SQL的DELETE命令,這個(gè)命令我們?cè)诘诙轮袑W(xué)習(xí)過(guò)。

  這是一個(gè)關(guān)鍵的問(wèn)題。要?jiǎng)h除一個(gè)指定的數(shù)據(jù)庫(kù),你需要能夠唯一地標(biāo)識(shí)它。Jokes表中的ID可以完成這個(gè)功能。你必須將要被刪除的笑話的ID傳遞到刪除笑話的請(qǐng)求中。將這個(gè)值放到“Delete this Joke”連接的查詢字符串中是比較合適的。

  如果你覺(jué)得你已經(jīng)有了答案,或者你只想知道解決方案,那就去看看下一頁(yè)。祝你好運(yùn)!

結(jié)語(yǔ)

  在這一章中,我們學(xué)習(xí)了一些新的用來(lái)實(shí)現(xiàn)與MySQL數(shù)據(jù)庫(kù)服務(wù)接口的PHP函數(shù)。使用這些函數(shù),我們建立了我們的第一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的網(wǎng)站,我們的這個(gè)網(wǎng)站可以在線地發(fā)布我們數(shù)據(jù)庫(kù)中笑話并允許訪問(wèn)者向其中添加他們自己的笑話。

  在第五章中,我們會(huì)回到MySQL命令行去學(xué)習(xí)如何使用關(guān)系型數(shù)據(jù)庫(kù)的原理以及其他一些更高級(jí)的SQL查詢?nèi)ッ枋龈鼮閺?fù)雜的信息,并給予訪問(wèn)者對(duì)他們自己添加的笑話以特別的權(quán)限!

挑戰(zhàn)的解決

  這是我們上面提出的“家庭作業(yè)”的解決方案。要在每一個(gè)笑話后面添加一個(gè)“Delete this Joke”連接,必須作下面的改動(dòng):

  之前,我們?cè)?jīng)在我們的頁(yè)面的底端的“Add a Joke!”連接中傳遞過(guò)一個(gè)$addjoke變量,通過(guò)這個(gè)變量來(lái)通知我們的腳本不再顯示通常的笑話列表,而是顯示一個(gè)錄入笑話的表單。與此相類(lèi)似,我們?cè)谖覀兊摹癉elete this Joke”連接中傳遞一個(gè)$deletejoke變量來(lái)表示我們想要?jiǎng)h除一個(gè)笑話。

  在獲得每一個(gè)笑話的JokeText列的同時(shí),我們還獲得了ID列的值,所以我們獲得了與數(shù)據(jù)庫(kù)中每一個(gè)笑話關(guān)聯(lián)的ID。

  我們將要?jiǎng)h除的笑話的ID值賦予$deletejoke變量。這是通過(guò)將從數(shù)據(jù)庫(kù)中獲得的ID值插入到每一個(gè)笑話的“Delete this Joke”連接中來(lái)實(shí)現(xiàn)的。

  使用了一個(gè)if 語(yǔ)句,如果在載入這一頁(yè)時(shí),我們的$deletejoke被賦予了一個(gè)值(使用isset函數(shù)),我們會(huì)在一個(gè)SQLDELETE語(yǔ)句中使用這個(gè)值(將被刪除的笑話的ID)來(lái)刪除指定的笑話。

  這兒是全部的源代碼:


<HTML>
...
<BODY>
<?php
// If the user wants to add a joke
if (isset($addjoke)):
?>

<FORM ACTION="<?php echo($PHP_SELF); ?>" METHOD=POST>
<P>Type your joke here:<BR>
<TEXTAREA NAME="joketext" ROWS=10 COLS=40 WRAP></TEXTAREA><BR>
<INPUT TYPE=SUBMIT NAME="submitjoke" VALUE="SUBMIT">
</FORM>
<?php
else:

// Connect to the database server
$dbcnx = @mysql_connect(
 "localhost", "root", "mypasswd");
if (!$dbcnx) {
echo( "<P>Unable to connect to the " .
"database server at this time.</P>" );
exit();
}

// Select the jokes database
if (! @mysql_select_db("jokes") ) {
echo( "<P>Unable to locate the joke " .
"database at this time.</P>" );
exit();
}
// If a joke has been submitted,
// add it to the database.
if ("SUBMIT" == $submitjoke) {
$sql = "INSERT INTO Jokes SET " .
 "JokeText='$joketext', " .
 "JokeDate=CURDATE()";
if (mysql_query($sql)) {
echo("<P>Your joke has been added.</P>");
} else {
echo("<P>Error adding submitted joke: " .
 mysql_error() . "</P>");
}
}

// If a joke has been deleted,
// remove it from the database.
if (isset($deletejoke)) {
$sql = "DELETE FROM Jokes " .
 "WHERE ID=$deletejoke";
if (mysql_query($sql)) {
echo("<P>The joke has been deleted.</P>");
} else {
echo("<P>Error deleting joke: " .
 mysql_error() . "</P>");
}
}
echo("<P> Here are all the jokes " .
 "in our database: </P>");
// Request the ID and text of all the jokes
$result = mysql_query(
"SELECT ID, JokeText FROM Jokes");
if (!$result) {
echo("<P>Error performing query: " .
 mysql_error() . "</P>");
exit();
}
// Display the text of each joke in a paragraph
// with a "Delete this Joke" link next to each.
 while ( $row = mysql_fetch_array($result) ) {
$jokeid = $row["ID"];
$joketext = $row["JokeText"];
echo("<P>$joketext " .
 "<A HREF='$PHP_SELF?deletejoke=$jokeid'>" .
 "Delete this Joke</A></P>");
}
// When clicked, this link will load this page
// with the joke submission form displayed.
echo("<P><A HREF='$PHP_SELF?addjoke=1'>" .
 "Add a Joke!</A></P>");
endif;
?>
</BODY>
</HTML>