PHP:简单看似IF语句,但似乎不起作用

时间:2017-05-15 01:46:09

标签: javascript php jquery html database

所以我理解这可能需要一段时间来处理,但我有一个下拉框,它的意思是如果点击某些选择,那么它将根据他们选择的内容在数据库中获取信息。我的问题是,当我在每个选择上应用会话并根据点击的选项获取会话时,为什么我的if语句不起作用。

以下是HTML:

<div class="button_wrap">
    <select name="makeSelectLeft" class="compareButtonSizing" required="required" multiple="multiple">
        <option>Make</option>
        <?php session_start(); $_SESSION['MitOne']="Mitsubishi1" ?><option value="Mitsubishi1">Mitsubishi</option>
        <?php session_start(); $_SESSION['SubOne']="Subaru1" ?><option value="Subaru1">Subaru</option>
        <?php session_start(); $_SESSION['ToyOne']="Toyota1" ?><option value="Toyota1">Toyota</option>
    </select>
    <select name="modelSelectLeft" required="required" multiple="multiple">
        <option>Model</option>
        <?php session_start(); $_SESSION['LancOne']="Lancer1" ?><option value="Lancer1">Lancer</option>
        <?php session_start(); $_SESSION['EvoOne']="Evolution1" ?><option value="Evolution1">Evolution</option>
        <?php session_start(); $_SESSION['CamOne']="Camry1" ?><option value="Camry1">Camry</option>
    </select>
    <select name="yearSelectLeft" required="required" multiple="multiple">
        <option>Year</option>
        <?php session_start(); $_SESSION['1982 - 1983']="1982 - 1983" ?><option value="1982 - 1983">1982 - 1983</option>
        <?php session_start(); $_SESSION['1983 - 1991']="1983 - 1991" ?><option value="1983 - 1991">1983 - 1991</option>
        <?php session_start(); $_SESSION['1988 - 1995']="1988 - 1995" ?><option value="1988 - 1995">1988 - 1995</option>
        <?php session_start(); $_SESSION['1995 - 2000']="1995 - 2000" ?><option value="1995 - 2000">1995 - 2000</option>
        <?php session_start(); $_SESSION['2000 - 2007']="2000 - 2007" ?><option value="2000 - 2007">2000 - 2007</option>
        <?php session_start(); $_SESSION['2007 - 2017']="2007 - 2017" ?><option value="2007 - 2017">2007 - 2017</option>
    </select>   
</div>

这就是我在会议开始时添加的内容。每个选择都有一个会话。在PHP中,无论我选择哪种选项,我目前都有三个输出。根据您选择的品牌,型号和年份,它应该只有一个并显示一个。

这是PHP:

<?php
    session_start();
if (!empty($_SESSION['MitOne']) && ($_SESSION['LancOne']) && ($_SESSION['1982 - 1983'])) {
    $MitFirstState = mysql_query("SELECT Max_Speed FROM CarSpecifications WHERE id=2");
    while ($MitFirstFetch = mysql_fetch_array($MitFirstState)) {
        print_r($MitFirstFetch[0]);
    }
}
if (!empty($_SESSION['SubOne']) && ($_SESSION['LegOne']) && ($_SESSION['1982 - 1983'])) {
    $SubFirstState = mysql_query("SELECT Max_Speed FROM CarSpecifications WHERE id=3");
    while ($SubFirstFetch = mysql_fetch_array($SubFirstState)) {
        print_r($SubFirstFetch[0]);
    }
}
if (!empty($_SESSION['ToyOne']) && ($_SESSION['CamOne']) && ($_SESSION['1982 - 1983'])) {
    $ToyFirstState = mysql_query("SELECT Max_Speed FROM CarSpecifications WHERE id=4");
    while ($ToyFirstFetch = mysql_fetch_array($ToyFirstState)) {
        print_r($ToyFirstFetch[0]);
    }
}
?>

我不明白的主要原因是if陈述不起作用的原因。我已尝试在其上添加else语句并更改isset / empty个变量及其所有变量。它似乎不起作用。

我再次为大量信息道歉。如果有人可以提供帮助,那将非常感激。

P.S。如果有人有javascript解决方案,欢迎他们。

谢谢。

2 个答案:

答案 0 :(得分:1)

请求 - 响应实际上比您尝试尝试更简单。

您在第二个文件中的请求会话将初始化参数&#34; makeSelectLeft,modeSelectLeft和yearSelectLeft&#34;在$ _REQUEST对象中。这些值是&#34;值&#34;中的数据。 &#34;选项&#34;的属性。

<option value="Mitsubishi1">

因此这个php片段是多余的。从HTML中删除它们。

<?php session_start(); $_SESSION['MitOne']="Mitsubishi1" ?>

在您的PHP代码中,$ _REQUEST [&#39; makeSelectLeft&#39;]将提供用户选择的所有选项值。同样,您可以检索其他人的数据。然后,进行数据库查询等。

答案 1 :(得分:1)

这些都没有正确执行。如上所述,您需要session_start();一次并位于页面顶部。其次,您需要利用表单提交值,而不是会话值。最后,您必须提交表单或使用AJAX来处理用户的选择。这是一个例子(需要提交表单,你需要研究ajax来做动态选择):

<?php
# I'm not convinced you even need this in your example, but you only put it
# once at the top of the page
session_start();
# Process the submission
if(!empty($_POST['action']) && $_POST['action'] == 'do_options') {
    # Here is where you do your if conditions based on the post, not session
    print_r($_POST['selectleft']);
}  
?>
<!--
....html on your page...etc.
-->
<form action="" method="post">
    <input type="hidden" name="action" value="do_options" />
<div class="button_wrap">
    <select name="selectleft[make]" class="compareButtonSizing" required="required" multiple="multiple">
        <option value="">Make</option>
        <option value="Mitsubishi1">Mitsubishi</option>
        <option value="Subaru1">Subaru</option>
        <option value="Toyota1">Toyota</option>
    </select>
    <select name="selectleft[model]" required="required" multiple="multiple">
        <option value="">Model</option>
        <option value="Lancer1">Lancer</option>
        <option value="Evolution1">Evolution</option>
        <option value="Camry1">Camry</option>
    </select>
    <select name="selectleft[year]" required="required" multiple="multiple">
        <option>Year</option>
        <option value="1982_1983">1982 - 1983</option>
        <option value="1983_1991">1983 - 1991</option>
        <option value="1988_1995">1988 - 1995</option>
        <option value="1995_2000">1995 - 2000</option>
        <option value="2000_2007">2000 - 2007</option>
        <option value="2007_2017">2007 - 2017</option>
    </select>   
</div>
    <input type="submit" value="SAVE" />
</form>