2016-02-09 33 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); 
    }