Php sql查询的两种形式

Php sql查询的两种形式,php,mysql,forms,Php,Mysql,Forms,我有以下代码。 如果我提交第一个表单(带有A和B选项的表单),第二个查询工作正常,但是当我提交第二个表单(带有日期的表单)时,查询不工作,因为我丢失了变量$XStocLa的值 我希望能够选择选项A或B以及要保存在会话中的此选项,然后能够选择第二种形式的不同日期,但保留我之前选择的$XStocLa的值,直到我选择其他值或重置会话 <form method="post"> <select name="XStocLa" id="StocLa"> <

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

我希望能够选择选项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);
}
?>

A.
B

您使用两个表单,因此这两个表单中的所有变量都是独立的。重新编写代码以仅使用一个表单。

您使用两个表单,因此这两个表单中的所有变量都是独立的。重新编写代码以仅使用一个表单。

这可以仅使用一个表单完成:

<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);
}
?>

A.
B

这只能使用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);
}
?>

A.
B

您可以在一个表单中使用两个提交按钮来完成此操作,如下所示

注意:我只命名提交按钮
select1
select2

<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);
}

A.
B

您可以在一个表单中使用两个提交按钮来完成此操作,如下所示

注意:我只命名提交按钮
select1
select2

<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);
}

A.
B

我已经编辑了你的php代码。试试看。但是就像他们说的,你只能在一个帖子上做

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);
    }

我已经编辑了你的php代码。试试看。但是就像他们说的,你只能在一个帖子上做

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);
    }

为什么要使用两种不同的表单?然后开始编写代码以使用会话/cookie?我们不会为您编写。不需要使用两种表单为什么您使用两种不同的表单?然后开始编写代码以使用会话/cookie?我们不会为您编写。无需使用2个表单谢谢,此解决方案也可以,但Pathik Vejani的解决方案较短。谢谢,此解决方案也可以,但Pathik Vejani的解决方案较短。@GrimVic乐于帮助:)@GrimVic乐于帮助:)