PHP& MySQL查询取决于复选框

时间:2017-10-10 08:39:39

标签: php jquery html mysql

我需要一些MySQL,jquery和PHP的帮助。 这是我的代码:

HTML

<label class="checkbox"><input type="checkbox" name="code_site1" class="code_site1" checked="checked">Code 1</label>
<label class="checkbox"><input type="checkbox" name="code_site2" class="code_site2" checked="checked">Code 2</label>
<label class="checkbox"><input type="checkbox" name="code_site3" class="code_site3" checked="checked">Code 3</label>
<label class="checkbox"><input type="checkbox" name="code_site4" class="code_site4" checked="checked">Code 4</label>

Jquery的

<script> 
$(document).ready(function(){
    $("#flip").click(function(){
        $("#panel").slideToggle("slow");
    });

});
</script>

这里的一切都在发挥作用。但是,我有一个SQL查询:

SELECT * from site;

我想将其更改为:

SELECT * from site WHERE codeSite=$theOneThatIsChecked;

实际上,我想要的是根据检查或注释来建立一个SQL查询。例如,如果选中了code_site1,我希望我的SQL查询如下:

SELECT * from site WHERE codeSite=1;

这几乎是我要做的但是我真的不知道如何在PHP中不提交...

你能帮助我吗?

非常感谢!

修改

首先,谢谢你的回答者。我尝试了不同的解决方案,但我仍有问题。

实际上,我做了什么: - 在我的主页index.php上,当我点击提交按钮时,我有一个指向“do.php”的ajax脚本, - 在“do.php”页面上,我根据我检查的复选框存储查询, - 最后,感谢:

success:function(data){
  alert(data);          
}  

我可以打印我在“do.php”上创建的查询。我想知道我是否可以将它存储在主页上的php变量中,以便在我的主页上执行查询。

谢谢!

3 个答案:

答案 0 :(得分:1)

所以如果请求发送正确并且没有问题 您可以将复选框的名称更改为name="code_site[]"

表单示例:

如果你想提交,

表格应该是这样的
<form method="POST">
 <input type="checkbox" name="code_site[]" value="1">
 <input type="checkbox" name="code_site[]" value="2">
 <input type="checkbox" name="code_site[]" value="3">
 <input type="checkbox" name="code_site[]" value="4">
 <input type="submit">
</form>

没有提交:

$(document).ready(function(){
    $("#flip").click(function(){
        var data = { 'code_site[]' : []};
        $("input:checked").each(function() {
            data['code_site[]'].push($(this).val());
         });
        $.post("do.php", data);
    });

});

然后在查询方面你可以做

并且因为您正在使用复选框,所以我假设用户可以检查多个值,因此您需要使用“IN”

$codeSites = [];
if($_POST['code_site'])
    $text = $_POST['code_site'];
$query = "select * from codeSite where codeSite in (" . implode($codeSites, ',') . ")";
echo $query; // use it 

确定您需要进行一些输入清理

或者你可以这样做:

$codeSites = [];
if($_POST['code_site'])
    $text = $_POST['code_site'];
$query = "select * from codeSite where codeSite in ('" . implode($codeSites, '\',\'') . "')";
echo $query; // use it 

答案 1 :(得分:0)

使用Ajax

&#13;
&#13;
    <script> 
    $(document).ready(function(){
        $("#flip").click(function(){
            $("#panel").slideToggle("slow");
           if($('input[name="checkbox"]').is(':checked')){
            var checkedValue =$("input[type='checkbox']").val();
          var data ={id: checkedValue};
//make ajax request with the checked value
           
    $.ajax({
       url: url,
       data:data
      
       success: function(response) {
          //process response
       },
       type: 'POST'
    });
        });

    });
}
    </script>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果我正确理解你,你需要将post值存储到变量中并在sql查询中使用该变量

更改输入名称,使它们完全相同,然后只需添加值

喜欢这个

<label class="checkbox"><input type="checkbox" value="1" name="code_site" class="code_site1" checked="checked">Code 1</label>
<label class="checkbox"><input type="checkbox" value="2" name="code_site" class="code_site2" checked="checked">Code 2</label>

然后像:

if (isset($_POST['btn-checkbox'])){
$var = $_POST['codesite']
} 

然后您的查询将是

SELECT * from site WHERE codeSite=$var;