【问题标题】:Get value from select box through ajax to mysql通过ajax从选择框中获取值到mysql
【发布时间】:2016-05-24 11:35:05
【问题描述】:

我有一个选择框,我通过 ajax 将值传递给 mysql 语句。 我需要让它更智能一点,所以我不必硬编码选择框中的所有值

HTML 选择框是:

<select>
  <option value="value1">something</option>
  <option value="value2">somethingElse</option>
</select>

我通过 ajax 传递值:

var opts = [];
$selectboxes.each(function(){
   opts.push($(this).val());
})

在我的 php 文件中,我使用该值来过滤 SQL 选择语句:

if (in_array("something", $opts)){
$where .= " AND region = 'something'";
}

如果用户选择选项 1,其值为 value1,则 php 文件应更改为类似

if (in_array("VALUE1", $opts)){
  $where .= " AND region = 'VALUE1'";
}

【问题讨论】:

  • 使用id'swhere in

标签: javascript php jquery mysql ajax


【解决方案1】:

使用 where 和 array_intersect 的 IN 选项仅选择我们在 $isarray 中找到的值

$isarray= array("something","somethingElse",....)
$is = array_intersect($ops,$isarray)
$where .= " AND region IN ".$is

注意:正确清理你的 $opts,这样你就没有 sql 注入

【讨论】:

  • 好吧。这只会使我的部分代码动态化。我需要获得改变两个地方的价值。我添加了最后一部分代码,说明我想要
【解决方案2】:

如果您在某个变量中有多个值,那么您可能会将这些值存储在一个数组中,并使用array_intersect 您可以获得所需的结果。

<?php
$opts = Array ('value1','value2','value3','value4');  //select box values which your are passing from ajax call
$somethingArray = Array('something', 'value1','value4'); //value that you need to match / compare

$result = array_intersect($opts, $somethingArray);

$where = '';
foreach ($result as $key => $value) {
    $where .= " AND region = '".$value."'";
}
echo $where;   //Output=> AND region = 'value1' AND region = 'value4'
?>

【讨论】:

  • 我有不同的选择框用于过滤。这些选择框的值存储在数组 $opts 中。现在我有一个 if 语句,其中包含所有选项的硬编码值。因此,如果一个选择框包含 10 个不同的选项,我必须硬编码 10 个不同的 if 语句
  • 你试过我的解决方案了吗?对于 $somethingArray 数组中的信息存储 'somethingElse,something,something2'。并检查
  • @user6322087 看我的回答
  • 是的,我试过了,要么我没有让它工作,要么它没有完成我想要的。我不太确定:S 我不确定我是否理解 $somethingArray 的用途。我更新了我的问题以更具体。请看最后一段代码。
  • 请检查更新的答案。希望它会有所帮助。
猜你喜欢
  • 2012-10-05
  • 1970-01-01
  • 2019-07-30
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
相关资源
最近更新 更多