建立動態的WML站點(三)
2024-05-04 23:01:18
供稿:網友
接著用戶必須在下一個文件(index3.wml)中輸入。我們要求用戶輸入科目的名字或者教授的姓。你要留意一下變量在頁面之間是怎樣傳送的。語法看來有點復雜,不過可以讓你了解整個過程是怎樣通過幾個文件來完成的。
<?php
header("content-type: text/vnd.wap.wml");
header("cache-control: no-cache, must-revalidate");
header("pragma: no-cache");
echo ("<?xml version='1.0'?>;");
>;
<!doctype wml public "-//wapforum//dtd wml 1.1//en"
"http://www.wapforum.org/dtd/wml_1.1.xml" >; <wml>
<card id=card3 title=name>
<?php
echo ("<p>insert ");
if (${$choice} == "surname") {
echo ("professor's surname (or part of it).n");
} else if (${$choice} == "subject") {
echo ("the subject (or part of it).n");
} else {
echo ("maybe there is some problem.n");
} echo ("<input name='"${$choice}"' type='"text"'>");
?>
<do type="text" label="go">
<go href="query.wml" method="get">
<?php
echo ("<postfield value='"$"."$choice".""/' name='"$choice"'>");
echo ("<postfield value='"$"."${$choice}".""/' name='"${$choice}"'>");
?>
</go>
</do>
<p></p>
</card>
</wml>
<do type="text" label="go">
<go href="index3.wml#card3" method="get">
<?php
echo ("<postfield value='"$"."$choice".""/' name='"$choice"'>");
echo ("<postfield value='"$choice"/' name='"choice"'>");
?>
</card>
</wml>
寫查詢代碼
以下的文件負責處理查詢。它的名字是query.wml,我們將更詳細地分析它。
<?php
header("content-type: text/vnd.wap.wml");
printf("<?xml version="1.0"?>n");
printf("n");
printf("n");
// 以下各行是用來為查詢授課時間構造sql語句的
$consulting_tables =
"(professors left join teach on (professors.id = teach.id), subjects)";
$consulting_columns =
"professors.surname, professors.name, subjects.subject , ";
$consulting_columns .=
"subjects.cod_number, professors.consulting_hour, professors.consulting_place";
$consulting_query=
"subjects.cod_subject = teach.cod_subject ";
// 以下各行是用來為查詢測驗時間構造sql語句的
$exams_tables= "(exams left join professors on (exams.id = professors.id), subjects)";
$exams_columns= "subjects.subject , subjects.cod_number, professors.surname, ";
$exams_columns.= "professors.name, exams.date, exams.time, exams.room, exams.test";
$exams_query= "exams.cod_subject = subjects.cod_subject ";
// 以下各行是用來為查詢測驗時間表的sql語句增加查詢限制
if ($exams_data) {
switch($exams_data) {
case "subject":
$exams_query.= " and subjects.subject like '%$subject%'";
break;
case "surname":
$exams_query.= " and professors.surname like '%$surname%'";
break;
}
}
// 以下各行是用來為查詢授課時間的sql語句增加查詢限制
if ($consulting_data) {
switch($consulting_data) {
case "subject":
$consulting_query
.= " and subjects.subject like '%$subject%'";
break;
case "surname":
$consulting_query.= " and professors.surname like '%$surname%'";
break;
}
}
// 處理與數據庫的連接
function connect($tables, $data, $condition_passed) {
//
// put your password and username in next line
//
$db = mysql_pconnect("localhost","***","***");
// put your database name in next line
mysql_select_db("lanfranchi_co_uk",$db);
$sql = "select $data from $tables where $condition_passed order by professors.surname";
$result = mysql_query($sql,$db);
return $result;
}
// 這個函數產生授課時間的wml代碼
function consulting_print($consulting_result) {
global $file;
printf("n");
printf(" <p>receiving hours
n");
while ($myrow = mysql_fetch_row($consulting_result)) {
printf(" <p>$myrow[0], $myrow[1]</p>n");
printf(" <p>$myrow[2]</p>n");
printf(" <p>$myrow[3]</p>n");
printf(" <p>$myrow[4]</p>n");
printf(" <p>$myrow[5]</p>n");
}
printf("</card>n");
}
// 這個函數產生測驗時間表的wml代碼
function print_exams($exams_result) {
global $file;
printf("<card id='"card1"' title='"hours"'>n");
printf(" <p>examinations hours
n");
while ($myrow = mysql_fetch_row($exams_result)) {
printf(" <p>$myrow[2], $myrow[3]</p>n");
printf(" <p>$myrow[0]</p>n");
printf(" <p>$myrow[1]]</p>n");
printf(" <p>$myrow[4], $myrow[5]</p>n");
printf(" <p>$myrow[7]</p>n");
printf(" <p>$myrow[6]</p>n");
}
printf("</card>n");
}
// 檢查你時候選擇授課時間或者測驗時間,連接數據庫并且調用產生wml代碼的函數
if ($consulting_data) {
$connection_result =
connect($consulting_tables, $consulting_columns, $consulting_query);
consulting_print($connection_result);
}
if ($exams_data) {
$connection_result =
connect($exams_tables, $ exams_columns, $ exams_query);
print_exams($connection_result);
}
printf("</wml>n");
?>
好,完成了。你已經建立了首個基于mysql數據庫的php/wml頁面了,自己繼續實踐一下吧。