我需要一些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变量中,以便在我的主页上执行查询。
谢谢!
答案 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
<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;
答案 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;