2

我有个问题。让我用一个例子来解释这一点。我有这段代码:

<form action="vehicles.php" method="get">
   <span>Marca:
       <select name="brand">
           <option value="null" selected="selected"></option>
           <option value="Volkswagen">Volkswagen</option>
           <option value="Renault">Renault</option>
           <option value="Peugeot">Peugeot</option>
           <option value="Fiat">Fiat</option>
       </select>
   </span>
   <span>Modelo: 
       <select name="model">
           <option value="null" selected="selected"></option>
           <option value="206">206</option>
           <option value="Suran">Suran</option>
           <option value="Passat">Passat</option>
           <option value="Punto">Punto</option>
        </select>
   </span>
   <input type="submit">
</form>

如果选择的选项是“空”选项,是否有任何方法可以防止分配这些变量?

例如,如果我选择 brand="Renault" 和 model="null",则 url 是

http://mywebpage.com/vehicles.php?brand=Renault&model=null

但应该是

http://mywebpage.com/vehicles.php?brand=Renault

我知道如何在使用 PHP 提交表单后使用“null”值取消设置变量。在提交之前和将变量设置为“null”之后有什么方法可以做到这一点。我想要一个更简洁的 url,没有“variable=null”的结果。

P/D:我的母语不是英语,所以请随时编辑我的问题。我希望你能理解我。

4

5 回答 5

2

如果您不想使用$_GETsuperglobal 因为它附带的 url 扩展名,请尝试使用$_POST。它不会有 url 扩展名,它仍然可以存储您以后可以检索的值。请务必将您的更改method为 equalPOST而不是GET.

因此表单标签的代码将更改为:

<form action="vehicles.php" method="POST">

您可以稍后通过(例如)访问它:

echo $_POST['brand'];

或者

echo $_POST['model'];

同样,您可能希望向option标签中的值添加一个值参数。

编辑-我添加了这个新部分,因为您不想使用 POST,即使我认为您应该这样做。

您可以GET通过执行以下代码行来保留该方法:

<form action="vehicles.php" method="GET">
   <span>Marca:
       <select name="brand">
           <option value="none" selected>-</option>
           <option value="Volkswagen">Volkswagen</option>
           <option value="Renault">Renault</option>
           <option value="Peugeot">Peugeot</option>
           <option value="Fiat">Fiat</option>
       </select>
   </span>
   <span>Modelo: 
       <select name="model">
           <option value="none" selected>-</option>
           <option value="206">206</option>
           <option value="Suran">Suran</option>
           <option value="Passat">Passat</option>
           <option value="Punto">Punto</option>
        </select>
   </span>
   <input type="submit">
</form>

让我知道这是否有帮助

于 2013-05-15T03:36:45.790 回答
2

恐怕你可能需要 javascript 来实现你想要的。
看看这段代码:

<form action="vehicles.php" id="carForm" method="GET">
   <span>Marca:
       <select name="brand" id="brand">
          <option value="none" selected>-</option>
          <option value="Volkswagen">Volkswagen</option>
          <option value="Renault">Renault</option>
          <option value="Peugeot">Peugeot</option>
          <option value="Fiat">Fiat</option>
       </select>
   </span>
   <span>Modelo: 
      <select name="model" id="model">
         <option value="none" selected="selected">-</option>
         <option value="206">206</option>
         <option value="Suran">Suran</option>
         <option value="Passat">Passat</option>
         <option value="Punto">Punto</option>
      </select>
   </span>
   <input type="button" value="Submit" onclick="submitFormFilter();" />
</form>

Javascript:代码将是这样的:

<script>
function submitFormFilter(){
   var myForm = document.getElementById("carForm");
   var carBrand = document.getElementById("brand");
   var carModel = document.getElementById("model");

   if(carBrand.value === "none" || null){
       carBrand.parentNode.removeChild(carBrand);
   }

   if(carModel.value === "none" || null){
       carModel.parentNode.removeChild(carModel);
   }

   myForm.submit();
}
</script>

http://jsfiddle.net/7xzKP/1/

你可以在这里试试。

于 2013-05-15T05:35:24.147 回答
2

包括标签的value属性。option

<option value="" selected="selected">-</option>

你真的应该为你所有的选择这样做。

于 2013-05-15T03:34:14.910 回答
0

您缺少选项标签的设置值。您应该在选择标签中设置选项标签的值。使用空白值,您可以将其分配给特殊值,例如零(0)

         <select name="model">
           <option value="0" selected>-</option>
           <option value="1">206</option>
           <option value="2">Suran</option>
           <option value="3">Passat</option>
           <option value="4">Punto</option>
        </select>

编辑: 好的。我明白你的意思了。如果选择框的值为空,您可以将jquery导入您的页面并在提交之前通过javascript进行检查。你可以删除它。

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$.ready(function(){
   $("form").submit(function(){
      if($("select[name='model']").val() == "0") $("select[name='model']").remove();
       return true;
   });
})
</script>
于 2013-05-15T03:36:30.033 回答
0

您应该设置选项标签的值<select>:)

于 2013-05-15T03:35:14.527 回答