2016-02-09 27 views
0

我有以下代码。 如果我提交第一个表单(带有A和B选项的表单),第二个查询可以正常工作,但是当我提交第二个表单(带有日期的表单)时,查询不起作用,因为我失去了变量的值$XStocLaSQL查询的两种形式

我希望能够选择一个选项A或B,并将此选项保存在会话中,然后可以选择第二种形式的不同日期,但保留之前选择的$XStocLa的值直到我选择其他值或重设会话。

<form method="post"> 
    <select name="XStocLa" id="StocLa"> 
     <option>A</option> 
     <option>B</option> 
    </select> 
    <input type="submit" value="Select"> 
</form> 

<form method="post"> 
    <input type="date" name="ordersmonth"> 
    <input type="submit" value="Select"> 
</form> 
<?php 

if(isset($_POST['ordersmonth'])) { 
    $OrdersMonth = $_POST['ordersmonth'];  
    $sql ="SELECT * FROM " .$OrderTable. " WHERE YEAR(Date) = YEAR('" .$OrdersMonth. "') AND MONTH(DATE) = MONTH('" .$OrdersMonth. "') AND StocLa = '$XStocLa' ORDER BY Date DESC, ID ASC"; 
    $result = $conn->query($sql); 
} else { 
    $sql ="SELECT * FROM " .$OrderTable. " WHERE StocLa = '$XStocLa' ORDER BY Date DESC, ID ASC"; 
    $result = $conn->query($sql); 
} 
?> 

如果我没有解释清楚,我很抱歉,我希望你能理解。

+0

为什么你使用两种不同的形式? –

+0

然后开始编写代码来使用会话/ cookie?我们不会为你写。 – Epodax

+0

不需要使用2个表格 –

回答

1

这可以仅使用1种形式进行:

<form method="post"> 
    <select name="XStocLa" id="StocLa"> 
     <option>A</option> 
     <option>B</option> 
    </select> 
    <input type="date" name="ordersmonth"> 
    <input type="submit" value="Select"> 
</form> 

<?php  
if(isset($_POST['ordersmonth']) && !empty($_POST['ordersmonth'])) { 
    $OrdersMonth = $_POST['ordersmonth']; 
    $sql ="SELECT * FROM " .$OrderTable. " WHERE YEAR(Date) = YEAR('" .$OrdersMonth. "') AND MONTH(DATE) = MONTH('" .$OrdersMonth. "') AND StocLa = '$XStocLa' ORDER BY Date DESC, ID ASC"; 
    $result = $conn->query($sql); 
} else { 
    $sql ="SELECT * FROM " .$OrderTable. " WHERE StocLa = '$XStocLa' ORDER BY Date DESC, ID ASC"; 
    $result = $conn->query($sql); 
} 
?> 
+0

谢谢你的作品。 –

+0

@GrimVic很乐意帮助:) –

1

您使用2种形式,因此2种形式中的所有变量都是分开的。重新编写代码以仅使用1个表单。

0

您可以有两个做它只是一种形式提交按钮这样

注意:我只是名称提交按钮select1select2

<form method="post"> 
    <select name="XStocLa" id="StocLa"> 
     <option>A</option> 
     <option>B</option> 
    </select> 
    <input type="submit" name="select1" value="Select"> 

    <input type="date" name="ordersmonth"> 
    <input type="submit" name="select2" value="Select"> 
</form> 
<?php 
//I just assume your that $OrderTable is order_tbl 
$OrderTable = 'order_tbl'; 


//Check if select1 has been set or clicked 
if(isset($_POST['select1'])) { 
    $XStocLa= $_POST['XStocLa']; 
    $OrdersMonth = $_POST['ordersmonth']; 

    $sql ="SELECT * FROM " .$OrderTable. " WHERE YEAR(Date) = YEAR('" .$OrdersMonth. "') AND MONTH(DATE) = MONTH('" .$OrdersMonth. "') AND StocLa = '$XStocLa' ORDER BY Date DESC, ID ASC"; 
    $result = $conn->query($sql); 

//check if select2 has been set or clicked 
} else if(isset($_POST['select2'])){ 
    $XStocLa= $_POST['XStocLa']; 


    $sql ="SELECT * FROM " .$OrderTable. " WHERE StocLa = '$XStocLa' ORDER BY Date DESC, ID ASC"; 
    $result = $conn->query($sql); 
} 
+0

谢谢,这个解决方案也可以工作,但Pathik Vejani的解决方案更短。 –

+0

我明白了:D –

0

我编辑了你的php代码。去尝试一下。但是就像他们所说的那样,你只能在1篇文章中做到这一点。

if(isset($_POST['ordersmonth'])) { 
     $OrdersMonth = $_POST['ordersmonth']; 

     $sql ="SELECT * FROM " .$OrderTable. " WHERE YEAR(Date) = YEAR('" .$OrdersMonth. "') AND MONTH(DATE) = MONTH('" .$OrdersMonth. "') AND StocLa = '$_POST['XStocLa']' ORDER BY Date DESC, ID ASC"; 
     $result = $conn->query($sql); 
    } else { 
     $sql ="SELECT * FROM " .$OrderTable. " WHERE StocLa = '$_POST['XStocLa']' ORDER BY Date DESC, ID ASC"; 
     $result = $conn->query($sql); 
    }