2013-10-18 58 views
0

我有這個項目中,在它需要驗證的文本字段中的數據,如果用戶輸入「0」的過程中不得運行並顯示而不是錯誤消息。這裏是我的代碼:如何驗證文本數據?

<?php 
include('connect.php'); 
include('func.php'); 
if (isset($_REQUEST['command'])=='delete' && $_REQUEST['pid']>0){ 
    remove_product($_REQUEST['pid']); 
} 
else if (isset($_REQUEST['command'])=='update') { 
    $max=count($_SESSION['cart']); 
    for($i = 0;$i < $max; $i++) { 
     $pid = $_SESSION['cart'][$i]['productid']; 
     $q = intval($_REQUEST['product'.$pid]); 
     if($q > 0 && $q <= 999){ 
      $_SESSION['cart'][$i]['qty']=$q; 
     } 
     else{ 
      echo "Some products not updated!, quantity must be a number between 1 and 999"; 
     } 
    } 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script language="javascript"> 
function del(pid){ 
    if(confirm('Do you really mean to delete this item')){ 
     document.form1.pid.value=pid; 
     document.form1.command.value='delete'; 
     document.form1.submit(); 
    } 
} 
function clear_cart(){ 
    if(confirm('This will empty your shopping cart, continue?')){ 
     document.form1.command.value='clear'; 
     document.form1.submit(); 
    } 
} 
function update_cart(){ 
    document.form1.command.value='update'; 
    document.form1.submit(); 
} 
</script> 
<script type="text/javascript" src="lib/jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#qty").keypress(function (e) { 
     if(e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) 
     { 
      return false; 
     } 
    }); 
}); 
</script> 
<script type="text/javascript" src="lib/jquery.js"></script> 
<script type="text/javascript" src="src/facebox.js"></script> 

<script type="text/javascript"> 
jQuery(document).ready(function($) { 
    $('a[rel*=facebox]').facebox({ 
     loadingImage : 'src/loading.gif', 
     closeImage : 'src/closelabel.png' 
    }) 
}) 
</script> 

<script type="text/javascript"> 
function checkCheckBox(){ 
    agree_check = oForm.elements["agree"].checked; 
    if(!agree_check){ 
     alert("You must agree to the terms and conditions before purchasing."); 
    } 
    return agree_check; 
} 
</script> 

<style type="text/css"> 
body { 
    background-color: #FFF; 
} 
table { 
    margin-top: 15px; 
} 
#wrapper { 
    width:900px; 
    height:auto; 
    margin-left:40px; 
} 
</style> 
</head> 

<body> 
<div id="wrapper"> 
    <table width="900" align="center"> 
    <tr> 
     <td><img src="images/banner.png" width="900" height="138" /></td> 
    </tr> 



<form name="form1"> 
    <input type="hidden" name="pid" /> 
    <input type="hidden" name="command" /> 
    <div style="margin:0px auto; width:600px;" > 
    <div style="padding-bottom:10px"> 
     <h1 align="center">Your Shopping Cart</h1> 
     <input type="button" value="Continue Shopping" <onclick="window.location='customerproduct.php'" /> 
    </div> 
    <table border="0" cellpadding="5px" cellspacing="1px" style="font-family:Verdana, Geneva, sans-serif; font-size:11px; background-color:#E1E1E1" width="100%"> 
    <?php 
    if(isset($_SESSION['cart'])){ 
     echo '<tr bgcolor="#FFFFFF" style="font-weight:bold"><td>Serial</td><td>Name</td><td>Price</td><td>Qty</td><td>Amount</td><td>Options</td></tr>'; 
     $max = count($_SESSION['cart']); 
     for($i = 0; $i < $max; $i++){ 
      $pid = $_SESSION['cart'][$i]['productid']; 
      $q = $_SESSION['cart'][$i]['qty']; 
      $pname = get_product_name($pid); 
      if ($q == 0) continue; 
    ?> 
     <tr bgcolor="#FFFFFF"><td><?php echo $i+1?></td><td><?php echo $pname?></td> 
     <td><?php echo number_format(get_price($pid))?>Php</td> 
     <td><input type="text" id="qty" name="product<?php echo $pid?>" value="<?php echo $q?>" maxlength="3" size="2" /></td>      
     <td><?php echo number_format(get_price($pid)*$q)?>Php</td> 
     <td><a href="javascript:del(<?php echo $pid?>)">Remove</a></td></tr> 
     <?php } ?> 
     <tr> 
      <td><b>Order Total: <?php echo number_format(get_order_total())?>Php</b></td> 
      <td colspan="5" align="right"> 
       <input type="button" value="Update Cart" onclick="update_cart()"> 
       <input type="checkbox" value="0" name="agree"> 
       <a rel="facebox" href="terms.php"?>terms and condition</a> 
       <input type="button" id="place" value="Place Order" onclick="window.location='order.php'" > 
      </form></td> 
     </tr> 
    <?php } ?> 
    </table> 
    </div> 
</form> 

我喜歡當用戶在quantity的文本中輸入「0」時顯示錯誤消息。

+0

顯示消息的地方是不是什麼'如果($ Q > 0 && $ q <= 999){'確實? – Barmar

+0

不知道這是你的問題,但是你的代碼有幾個問題。 1)你包含'lib/jquery.js'兩次 - 只需要一次。 2)「Your Shopping Cart」後的輸入在'onclick'屬性之前有一個'<' - 它不應該。 3)底部有一個額外的''標籤。 4)我通常建議關閉'input'元素,雖然在HTML 5中不需要('')。 5)這將是一個更容易管理,如果你分開所有的作品 - CSS和JS應該是外部的,做所有的PHP在頂部(除輸出,很明顯) – DACrosby

回答

0

使用的JavaScript來驗證這樣說:

document.getElementById("qty").onkeyup=function(){ 

    if(this.value == "0") 
    { 
     this.value = ""; 
     alert("Wrong quantity entered. Please enter again"); 
    } 

}; 

你也可以使用的onchange代替onkeyup事件:

document.getElementById("qty").onchange=function(){ 

    if(this.value == "0") 
    { 
     this.value = ""; 
     alert("Wrong quantity entered. Please enter again"); 
    } 

}; 
+0

它不工作..當我試着輸入0值當我點擊按鈕沒有任何反應.. :( –

+0

你在哪裏放置此javascript @BonCorcino ??? 你只需要關閉''標籤 –

0

echo "Some products not updated!, quantity must be a number between 1 and 999"; 

更換
echo "<script>alert('Some products not updated!, quantity must be a number between 1 and 999')"; 
exit; 
0

我可以看到您使用JavaScript在用戶清除購物車時提示用戶,如果用戶給出的數值爲'0',則可以使用Javascript來再次警告用戶;

<input type="text" id="qty" onblur="if(this.value==0){alert('Please enter a quantity ! ');}" name="product<?php echo $pid?>" value="<?php echo $q?>" maxlength="3" size="2" /> 

我也可以看到你已經嘗試在PHP中驗證請求。相反呼應錯誤了,你可以將其存儲到一個變量:

$err = ''; 
if($q>0 && $q<=999){ 
     $_SESSION['cart'][$i]['qty']=$q; 

    } 
    else{ 
     $err = "Some products not updated!, quantity must be a number between 1 and 999"; 
    } 

然後你選擇在HTML

<td><input type="text" id="qty" name="product<?php echo $pid?>" value="<?php echo $q?>" maxlength="3" size="2" /><?php echo $err; ?></td>      
+0

之前把這個它只是表明在這一行錯誤未定義的變量ERR 「value =」<?php echo $ q?>「maxlength =」3「size = 「2」/><?php echo $ err;?> .. :( –

+0

好的,需要將$ err =''移到php塊的頁面頂部。 – DavidLin