2017-05-15 65 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>