(php)如何判斷商品選項是否為空值呢?(15點)

假如我要寫一個商品訂購單,如下:

12吋 筆記型電腦 NT 25,000 元

14吋 筆記型電腦 NT 38,900 元

16吋 筆記型電腦 NT 47,820 元

該如何用php寫出如果三個選項都沒被選取時,提醒顧客記得選取商品的語法呢?

如果語法太過複雜,大約簡單講解即可,或是有範例可以參考

在拜託大家了~

2 個解答

評分
  • Jelly
    Lv 7
    1 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傳變數

    參考資料: 不懂請補充
  • 1 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']) ){

    //在此撰寫警告訊息

    }

    參考資料: 自己
還有問題?馬上發問,尋求解答。