簡體   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