2017-05-15 70 views
0

所以我明白,如果这可能需要一段时间来处理,但我有一个下拉框,它的目的是做什么,如果某些选择被点击,然后它会获取信息数据库取决于他们选择的内容。我的问题是,为什么我的if声明无法工作,因为我在每个选择上应用了一个会话,并根据点击的内容提取它们。PHP:简单看似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解决方案,欢迎。

谢谢。

+1

你只需要在页面上调用'session_start();'一次。这个调用需要在其他任何事之前完成,在调用之前可以没有HTML。这很可能是您的代码无法工作的原因,会话永远不会启动,因为它之前有HTML。尝试先改变它。 – OptimusCrime

+0

你为什么使用'$ _SESSION'而不仅仅是一个常规的表单提交和适当的方法? – adeneo

+0

即使我选择“制作”,“模型”和“年份”选项,它仍然会返回三个数据库检索,这似乎并不是问题。 – Dale

回答

1

Request-Response实际上比您试图尝试的更简单。

您在第2个文件中的请求会话将在$ _REQUEST对象中为参数“makeSelectLeft,modeSelectLeft和yearSelectLeft”初始化值。这些值是“option”的“value”属性中的数据。

<option value="Mitsubishi1"> 

因此,此PHP代码段是多余的。从您的HTML中删除这些。

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

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

1

这些都没有正确执行。如上所述,您需要一次性在页面顶部输入session_start();。其次,您需要利用表单提交值,而不是会话值。最后,你必须提交表单或使用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>