繁体   English   中英

如何从输入复选框获取值以在查询中使用它来显示信息

[英]How to GET value from an input checkbox to use it in a query to show information

我正在尝试获取有关定向系统中的房间和塔的信息。 它是搜索设备的抛出复选框。 关键是选择每个选项以过滤从数据库检索的信息。

问题是我尝试获取的值甚至没有回显,因此我无法在查询中使用它们。 另一方面,它们显示在URL中,如果我添加了一个提交按钮,我可以获取所需的信息,但是这里的想法是无需按钮即可立即获取信息。

这是我正在使用的刷新代码

var auto_refresh = setInterval(
function()
{
$("#results").load("searchroom.php").fadeIn("slow");


}, 1000);
$.ajaxSetup({ cache: false });

这就是我保存在URL中选择的值的方式

$('input[type="checkbox"]').on('change', function(e){
    var data = $('input[type="checkbox"]').serialize(),
        loc = $('<a>', {href:window.location})[0];
    $.post('/showbytipo.php?'+data);
    if(history.pushState){
        history.pushState(null, null, loc.pathname+'?'+data);
    }
});

这是HTML输入

<form method="GET" action="searchroom.php" id="myform" name="myform">
       <p>TIPOLOGIA</p>
        <ul>
            <li><input class="tipologia" id="tipologia"name="tipologia" type="checkbox" value="services" ><label>Serviços</label></li>
            <li><input class="tipologia" name="tipologia" type="checkbox" value="class"><label>class</label></li>

        </ul>

     <p>TORRE</p>
        <ul>
            <li><input class="torre" name="torre" value="a" type="checkbox" value="a" ><label>A</label></li>
            <li><input class="torre" name="torre" value="b" type="checkbox" value="b"><label>b</label></li>


        </ul>
</form>

    <div id="results" >


    </div>

这是从网址获取值的PHP代码

 <?php
    include("connect.php");


    $tipo=$_GET['tipologia'];
    echo $tipo;
    $torre=$_GET['torre'];
    echo $torre;

    //$tipo='services';



           $sql = "select * from rooms where tower='$torre' AND floor='$piso' AND typology='$tipo'";
            //$sql = "select * from rooms where typology='$tipo'";
            $query = mysql_query($sql) or die ("erro na query");
            while($row = mysql_fetch_array($query)) {  

    echo $row["name"];
    echo $row["tower"];
    echo $row["typology"];
            }
     echo 'ola';



    ?>

除了使变量直接查询之外,还存在严重的安全问题,而且输入字段的名称相同。 例如:name =“ tipologia”和name =“ torre”有2个实例,并且在URL中只有第二个实例生效(如果已选择)。

如果要传递多个值,则名称应类似于:name =“ tipologia []”,这样,您将在php中将它们视为数组。

我也知道这无关紧要,但是为什么要使用$ .post,因为您希望将值作为get传递? 为什么不使用$ .get代替呢?

编辑:

我没有看到问题的一部分。 如果要传递变量,则不传递刷新调用中的任何变量,代码应类似于:

var auto_refresh = setInterval(
function()
{
$("#results").load("searchroom.php", $('#myform').serialize()).fadeIn("slow");}, 1000);
$.ajaxSetup({ cache: false });

我希望您知道您在做什么,因为整个带有刷新的概念对我来说都是很混乱的,但是您仍然对复选框中的空值有疑问:

您应该有一个javascript代码,该代码可以更新单独的隐藏字段,其中包含Tipologia或torre字段的状态。 否则,您将不能依赖复选框,它们的值将始终是最后一个复选框。

当然,最简单的方法是使用单选按钮,这样隐藏字段就不会出现此问题。

为了调试变量,您应该使用var_dump($ _ GET ['torre']),它将为您提供确切的内容。 因此,如果为空,则应看到它;如果未定义,则为null。

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM