[英]PHP isset not working with empty
我正在構建一個表單,以便用戶可以添加自己的產品在網站上銷售。 javascript應該檢查是否所有字段都填寫完畢,但它不起作用。 為什么javascript不運行?
PHP有點復雜。 該網站以不同的包裝銷售產品以允許批發和零售價格,因此可以為不同數量的單位提供多種定價選項。 但是,如果填寫了其中一個可選的定價選項或單位編號,但相應的值沒有填寫,我認為它會導致問題,並且除了用戶輸入錯誤之外沒有理由發生這種情況。
為了避免這種情況,如果設置了price2,並且units2為空,我希望拒絕該表單,並且“需要為每個包選項填寫單位和價格”以進行回顯。 對於逆和price3和單位3也是如此。
這就是PHP應該做的事情。 但是,每次都會觸發第一個“if”觸發,因此“你需要為每個包裝選項填寫單位和價格1”回應。 為什么這不能正常運行?
<script>
function validproform()
{
var a=document.forms["productentry"]["pname"].value;
var b=document.forms["productentry"]["pword"].value;
var c=document.forms["productentry"]["about"].value;
var d=document.forms["productentry"]["unitabout"].value;
var e=document.forms["productentry"]["price1"].value;
var f=document.forms["productentry"]["units1"].value;
if (a==null || a=="" || b==null || b=="" || c==null || c=="" || d==null || d=="" || e==null || e=="" || f==null || f=="")
{
alert("Required fields are not all filled out.");
return false;
}
</script>
<?php
if (isset($_POST['psubmit'])) {
if(isset($_POST['price2']) and empty($_POST['units2'])){
echo('You need to fill out both units and prices for each package option1');
}
elseif(isset($_POST['units2']) and empty($_POST['price2'])){
echo('You need to fill out both units and prices for each package option2');
}
elseif(isset($_POST['price3']) and empty($_POST['units3'])){
echo('You need to fill out both units and prices for each package option3');
}
elseif(isset($_POST['units3']) and empty($_POST['price3'])) {
echo('You need to fill out both units and prices for each package option4');
}
}
?>
<form name="productentry" action="" method="post" onsubmit="return validproform()">
Product Name: <input type="text" name="pname" maxlength="30"><br>
About: <input type="text" name="about" maxlength="250"><br>
Describe your product. What is unique about it, what does it do, what sets it apart?<br>
What each unit contains: <input type="text" name="unitabout" maxlength="250"><br>
For example: Are you selling, "A bag of chips" or "A box w/ 30 bags of chips" or "a carton of 10 boxes with 30 bags of chips each." Describe what one unit contains.<br>
Price: <input type="text" name="price1" maxlength="30"><br>
Number of units: <input type="text" name="units1" maxlength="30"><br>
----
Price 2(optional): <input type="text" name="price2" maxlength="30"><br>
Number of units(optional): <input type="text" name="units2" maxlength="30"><br>
Price 3(optional): <input type="text" name="price3" maxlength="30"><br>
Number of units(optional): <input type="text" name="units3" maxlength="30"><br>
Password: <input type="password" name="pword" maxlength="30"><br>
<input type="submit" name="psubmit">
</form>
Try this code:
<?php
if (isset($_POST['psubmit']))
{
if(!$_POST['price2'])
{
echo('You need to fill out both units and prices for each package option1');
}
elseif(!$_POST['units2'])
{
echo('You need to fill out both units and prices for each package option2');
}
elseif(!$_POST['price3'])
{
echo('You need to fill out both units and prices for each package option3');
}
elseif(!$_POST['price3'])
{
echo('You need to fill out both units and prices for each package option4');
}
}
?>
The !$_POST will the return if the value is FALSE.
再次更新 :
好的,我做了一些實驗。 只需單擊提交按鈕即可“設置” $_POST
變量。 因此,即使該字段為空,服務器仍然認為它是“已設置”。
因此,檢查變量是否具有值是正確的方法。
誰會想到我回答的第一個問題是我自己的哈哈?
以下代碼比我原來的答案更好,更清晰:
elseif($_POST['price2'] != 0 and empty($_POST['units2'])){
echo('You need to fill out the number of units corresponding to price 2.');
}
elseif($_POST['units2'] != 0 and empty($_POST['price2'])){
echo('You need to fill out the price corresponding to your second unit option.');
}
elseif($_POST['price3'] != 0 and empty($_POST['units3'])){
echo('You need to fill out the number of units corresponding to price 3.');
}
elseif($_POST['units3'] != 0 and empty($_POST['price3'])) {
echo('You need to fill out the price corresponding to your third unit option.');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.