首頁

2011年7月5日 星期二

[PHP教學]PHP的表單變數傳遞POST篇

在動態的程式設計中,最重要的一環就是表單,無論在任何的程式語言中都是這樣的,所以我們在這一章主要就是要介紹表單。我個人還蠻推薦使用DREAMWEAVER來做為表單的設計開發程式,當然如果你本身精通了HTML的語言,也可以自已費心的KEY一個表單出來。但是個人還是覺得把時間浪費在美好的事物上吧CC。 呵,又離題了。回表單上。 表單本身其實是一個設計好的可以讓使用者和伺服器溝通的一個介面,一個最簡單的表單。就是只有一個送出的按紐。

1.Submit表單:

 表單傳來了變數:<br>
<?php if(count($_POST)>0){ foreach($_POST as $k=>$v){ echo $k."=".$v; } } 
?><br>
<hr>
<form action="" method="post" name="form1"><input name="submit" type="submit" value="送出"></form>


範例 :http://www.php5.idv.tw/php5-article/ch1/ch1-06/form.php
原始碼:http://www.php5.idv.tw/php5-article/ch1/ch1-06/form.phps

一般的表單是可以指定你要使用的傳輸的方式及編碼的方式。在上面的表單中。
 method="post" 是指定使用post的方式來做資料的傳送。而編碼方式大多是用在於上傳檔案時。檔案是必須要經過特別的處理過才能夠被網頁的伺服器所解讀。

而你也可以使用傳送GET的方式來傳送表單,意義是非常的簡單就是希望把表單的內容變成一個可讀的網址。
而二者的差異主要有幾個:

1.GET有上傳資料量的限制,一般傳送大量的資料或者上傳檔案都不會使用GET。(但是不代表不能)
2.POST 適合用來傳送大量的資料,直接的由伺服器接收。
3.POST本身的傳送是基於最終的檔案本身再傳入相關的欄位變數,而由於指定了POST所以網址列會把GET的部份省略。
 
我們再來看看幾個html表單的特性,我們簡單的修改一下前一個範例的內容加上一個另一個送出的按紐.再加上一些程式的判斷式來讓程式更加的具有互動性。


Submit的例子2:



 表單傳來了變數:<br>
<?php if(count($_POST)>0){ foreach($_POST as $k=>$v){ echo $k."=".$v; } } ?><br><br>
<?php if($_POST["submit"]=="買東西"){ echo "謝謝光臨"; }else if($_POST["submit"]=="不買"){ echo "不買請走開,別礙著做生意呢!";} ?><hr>
<form action="" method="post" name="form1"><input name="submit" type="submit" value="買東西">---<input name="submit" type="submit" value="不買"></form>

範例 :http://www.php5.idv.tw/php5-article/ch1/ch1-06/form2.php
原始碼:http://www.php5.idv.tw/php5-article/ch1/ch1-06/form2.phps
上面的例子是用來透過表單來和使用者互動,加上了判斷之後的表單可以讓設計師和使用者之間的互動更加的明確。






2.文字欄位 text 
接下來我們要開始寫的部份就是文字的欄位,文字的欄位是可以傳送使用者想要表達的內容。
我們直接的來看例子:


表單的傳送文字欄位
:

 表單傳來了變數:<br>
<?php if(count($_POST)>0){ foreach($_POST as $k=>$v){ echo $k."=".$v; } } ?><br><br>
<?php if($_POST["submit"]=="買東西"){ //如果買東西
//秀出買的東西
echo "你買了:".$_POST["item"];?><br />
<?phpecho "謝謝光臨";
}else if(
$_POST["submit"]=="不買"){ echo "不買請走開,別礙著做生意呢!";} ?><hr>
<form action="" method="post" name="form1"><br>
請輸入想買的東西:<br>
<input name="item" type="text" value="奶粉"><br><br>
<br>
<input name="submit" type="submit" value="買東西">---<input name="submit" type="submit" value="不買"></form>

範例 :http://www.php5.idv.tw/php5-article/ch1/ch1-06/form3.php
原始碼:http://www.php5.idv.tw/php5-article/ch1/ch1-06/form3.phps

這個表單已經顯示了使用者想要買的東西了;







3.隱藏欄位 hidden 
隱藏的欄位一般都是存放在實際的html表單之中看不見的欄位,因為看不見,所以使用者本身也無法修改:
請看一下下一個例子:

 表單傳來了變數:<br>
<?php if(count($_POST)>0){ foreach($_POST as $k=>$v){ echo $k."=".$v; } } ?><br><br>
<?php if($_POST["submit"]=="買東西"){ //如果買東西
//秀出買的東西
echo "你買了:".$_POST["item"];
echo 
$_POST["bonus"];?><br />
<?phpecho "謝謝光臨";
}else if(
$_POST["submit"]=="不買"){ echo "不買請走開,別礙著做生意呢!";} ?><hr>
<form action="" method="post" name="form1"><br>
請輸入想買的東西:<br>
<input name="item" type="text" value="奶粉"><input name="bonus" type="hidden" value="送任天堂wii一台+無線手把3支!"><br><br>
<br>
<input name="submit" type="submit" value="買東西">---<input name="submit" type="submit" value="不買"></form>

範例 :http://www.php5.idv.tw/php5-article/ch1/ch1-06/form4.php
原始碼:http://www.php5.idv.tw/php5-article/ch1/ch1-06/form4.phps

呵買奶粉送wii不知道什麼時候才會有CCC。






4.Checkbox的多選擇的勾選項目:
Checkbox是一個多選項的勾選功能,有一個非常重要的特性。就是你選擇的項目才會傳送,在一般的情形之下,這樣的形式是不會有什麼問題的。不過如果你未來在使用陣列在傳送的時候,會有鍵值的問題。所以未來有看到Checkbox的時候一定要注意鍵的問題。


 表單傳來了變數:<br>
<?php if(count($_POST)>0){ foreach($_POST as $k=>$v){ echo $k."=".$v; } } ?><br><br>
<?php if($_POST["submit"]=="買東西"){ //如果買東西
//秀出買的東西
echo "你買了:".$_POST["item1"];?><br>
<?phpecho "數量  :".$_POST["unit1"];?><br />
<?phpecho "你買了:".$_POST["item2"];?><br>
<?phpecho "數量  :".$_POST["unit2"];?><br />
<?phpecho "謝謝光臨";
}else if(
$_POST["submit"]=="不買"){ echo "不買請走開,別礙著做生意呢!";} ?><hr>
<form action="" method="post" name="form1">
<input name="item1" type="checkbox" id="item1" value="wii">
wii
<input name="unit1" type="text" id="item2">
<br>
<input name="item2" type="checkbox" id="item2" value="手把">
手把
<input name="unit2" type="text" id="unit2">
<br>
<br>
<input name="submit" type="submit" value="買東西">---<input name="submit" type="submit" value="不買"></form>

範例 :http://www.php5.idv.tw/php5-article/ch1/ch1-06/form5.php
原始碼:http://www.php5.idv.tw/php5-article/ch1/ch1-06/form5.phps

在這個checkbox的例子中我們做了一個簡單的訂購的例子,在checkbox及radio這二個選則的功能。有一個特性,這個特性在未來如果採用陣列的傳送的時候一定要記得你沒有勾選的項目是不會被使用的,這會造成什麼問題。他會造成資料的中斷,例如:你的一個陣例是1-10但你在3沒有做勾選時3不會被當成值傳送而變數4會取代陣列3的位置。而影响表單的可靠性。所以說checkbox的使用並不像text一樣就算沒月填寫也會傳送空值。




其實在html的網頁表單中,還有幾個重要的表單功能,我們在未來的機會中再補上來。
下一章我們開始進入PHP的判斷及迴圈了。

沒有留言:

張貼留言