(php)如何判斷商品選項是否為空值呢?(15點)
假如我要寫一個商品訂購單,如下:
12吋 筆記型電腦 NT 25,000 元
14吋 筆記型電腦 NT 38,900 元
16吋 筆記型電腦 NT 47,820 元
該如何用php寫出如果三個選項都沒被選取時,提醒顧客記得選取商品的語法呢?
如果語法太過複雜,大約簡單講解即可,或是有範例可以參考
在拜託大家了~
2 個解答
- JellyLv 71 0 年前最佳解答
敢問這位大大
你是不是也買了
松崗 = php+mysql 快速入門 這本書咧
首先對於這一題 我先提出我的做法
<script language="javascript">
function check(form){
var x = form.box1.checked;
var y = form.box2.checked;
var z = form.box3.checked;
if(!x && !y && !z){
alert("你沒選東西");
return false;
}
}
</script>
<form name="form1" action="1506122009880_2.php" method="post" onSubmit="return check(this)">
<input name="box1" type="checkbox" value="選了NB1">NB1<br>
<input name="box2" type="checkbox" value="選了NB2">NB2<br>
<input name="box3" type="checkbox" value="選了NB3">NB3<br>
<input type="submit" value="送出訂單">
</form>
為什麼要用 js 來做判斷呢??
因為它可以當成 表單要傳給php處理時的一個 把關的
好處就是
使用者本來的輸入 通通都在
不會因為轉頁面而遺失辛苦打的資料
而警告訊息是用 談出警告視窗的方式出現
好處就是 你不用留板面位置給它
範例檔在這
www.audio329.com/jelly/yahoo/1506122009880.php
www.audio329.com/jelly/yahoo/1506122009880_2.php
當然你的問題是 怎麼用php寫
我的做法是
我會在訂單頁 留一個區塊 專門顯示錯誤訊息用的
然後在處理頁寫
if(empty($_POST['box1']) and empty($_POST['box2']) and empty($_POST['box3'])){
header("location: 1506122009880.php?worry=1");
}
例如<div id=worry><?php if($_GET['worry']){echo "你沒選東西";} ?></div>
不過這樣有一個壞處就是.......因為變數一直都=1 所以錯誤視窗不會消掉 而已之前輸入的資料不一定在
當然也有更漂亮的做法 不過我不覺得比js先判斷簡單就是了
2006-12-20 23:52:16 補充:
忘了打說明
雖然你應該看的懂
但認真一點比較好 XD
if(!x && !y && !z){
alert("你沒選東西");
return false;
}
if( 這邊值是1的時候 ){這邊才會執行}
form.box1.checked 會傳回布林值
所以如果通通沒有選 就是 0 0 0
if(0 && 0 && 0) 這樣不會執行
所以加一個 !
就變成
if(1 && 1 && 1) 這樣會執行
如果裡面是 if(1 && 0 && 0) 有0就不執行
2006-12-20 23:55:27 補充:
if(empty($_POST['box1']) and empty($_POST['box2']) and empty($_POST['box3']))
差不多的道理
empty( )=>測試變數是否設定。沒設定 或 沒有值 傳回1
所以如果3個都沒有值 就是 1 1 1
2006-12-21 21:38:41 補充:
對喔 流浪說的對
並行是比較好的
然後盡量不要去用&_GET傳變數
參考資料: 不懂請補充 - 流浪玩家Lv 61 0 年前
原則上,
PHP與JavaScript驗證要並行,
因為駭客可以自行撰寫表單,
而且JavaScript可以被關閉的,
Mozilla FireFox便可輕易設定,
我提供的方式如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=big5">
<title></title>
<style type="text/css">
*{font-size:13px;font-family:arial;}
.hidden{display:none;}
.display{display:block;color:red;}
</style>
<script type="text/javascript">
var type=false;
window.onload=function(){
var i_1=document.order['item_1'];
var i_2=document.order['item_2'];
var i_3=document.order['item_3'];
var b=document.order['btn'];
var n=document.getElementById('note');
setInterval(function(){
b.disabled=(type)?false:true;
if(i_1.checked==false && i_2.checked==false && i_3.checked==false){
n.className="display";
type=false;
}else{
n.className="hidden";
type=true;
}
},100);
}
function chk(){
return (type==false)?false:true;
}
</script>
</head>
<body>
<form action="order.php" name="order" method="post" onsubmit="return chk();">
<input type="checkbox" name="item_1" value="item_1" />item_1
<input type="checkbox" name="item_2" value="item_2" />item_2
<input type="checkbox" name="item_3" value="item_3" />item_3
<font id="note" class="hidden">請至少選擇一個選項</font>
<br />
<input type="submit" name="btn" value="送出" disabled />
</form>
</body>
</html>
而PHP的驗證方式如下:
if(empty($_POST['item_1']) && empty($_POST['item_2']) && empty($_POST['item_3']) ){
//在此撰寫警告訊息
}
參考資料: 自己