php - 如何防止获取变量的集合?

标签 php html forms get

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

<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”之后有什么方法可以做到这一点。 我想要一个更清晰的 url,没有“variable=null”结果。

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

最佳答案

恐怕您可能需要 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/

你可以在这里试试。

关于php - 如何防止获取变量的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16556357/

相关文章:

javascript - 表单不返回 true 并且不会发送到 PHP

forms - Angular 形式输入值未定义

php - 多个表的复杂sql查询

php - js 相当于 php 的 foreach($arr as $k=>$v)

javascript - HTML 的占位符属性在 IE10 中无法正常工作

php - 有限空间内的文本无限制,无换行

javascript - CSS3在jsfiddle中调整高度

php 无法删除多于一行

php - MySQL时区困惑

jquery - 提交前监听语义 UI 表单验证错误