2014-11-22 41 views
0
<form id = "gameYear" method="get" action="result.php"> 
<label> 
    Game Year 
    <select name="gameYear"> 
     <option value="2001">2001</option> 
     <option value="2002">2002</option> 
    </select> 
</label> 
    <input type = "submit" name="search" value = "Search"> 
</form> 


<?php 
include 'dbConnection.php'; 

$gameYear = $_GET['gameYear']; 
$query = "SELECT gameSerial, gameTitle, gameYear, gameCost FROM games WHERE 1 AND gamesYear <='$gamesYear'"; 


mysqli_free_result($Games); 
mysqli_close($conn); 

?> 

現在,HTML表單提交併鏈接到數據庫好,但是,記錄不匹配。例如,如果我選擇「2001」,它將撤回其他記錄,而不僅僅是從2001年開始。我是PHP新手,我不知道我是否缺少明顯的東西。我已經做了一些搜索,但說實話,我不完全確定搜索什麼,以爲我會問。謝謝,任何幫助表示讚賞。搜索功能不顯示正確的記錄PHP

回答

0

你在正確的軌道上,但你正在使用的操作員是不正確的。 1 AND gamesYear <='$gamesYear'將會查找在提供的年份之前或之前發佈的所有遊戲。 等於運算符是一個你需要的: 1 AND gamesYear ='$gamesYear'

而且,你可以用1路程,完全因爲它不添加到您的查詢。

+0

謝謝,就是這樣。我在搜索過程中嘗試了不同的年份,並且隨機抽取了結果,我無法解決這個問題。知道這將是簡單的事情。 說我想現在在我的表單中添加更多搜索選項,我在SQL/PHP中更改了哪些內容?我不需要WHERE 1嗎?我只是使用AND?再次感謝。 – RonaIdo 2014-11-22 23:26:22

+0

沒問題。 AND運算符告訴查詢只返回兩個操作數都爲真的結果。 1將始終評估爲true,gameYear =「2001」僅對該年的記錄評估爲true。 1位是一個常量,因此不會影響您返回的內容。 如果您想添加其他搜索條件。例如,只返回比10英鎊便宜的遊戲,你可以用它作爲你的地點: 'WHERE gameYear = 2001 AND gameCost <「10」' – ornous 2014-11-22 23:32:25

+0

謝謝,現在明白它好多了。我確實有最後一個問題。如果我要爲我的HTML表單添加「所有年份」選項,我如何才能使用PHP來處理這個問題?當我在表單中添加更多字段時,如果用戶只需要查看所有遊戲而無需選擇一年即可縮小搜索範圍,這將是有益的。感謝您的幫助,非常感謝! – RonaIdo 2014-11-23 16:10:37

0

我可能是錯的,但嘗試改變你的查詢到該

$sql = "SELECT gameSerial, gameTitle, gameYear, gameCost FROM games WHERE gamesYear ='$gameYear'"; 

我不知道什麼是「WHERE 1」和......事情是

此外,您還增加了一個額外s到你的PHP變量

0

注意最後你的SQL:

AND gamesYear <='$gamesYear'"; 

你得到的變量是gameYear - 含沒有s。

0
$sql = "SELECT gameSerial, gameTitle, gameYear, gameCost FROM games WHERE 1 AND gamesYear ='$gameYear'"; 

,如果你跳過<如上圖所示,會發生什麼?另外,我認爲你在變量名稱中輸入了一個錯字。

+0

好點! 雖然我想這是一個打字問題的錯字,否則羅納爾多會得到未知列錯誤。 – ornous 2014-11-22 23:20:04

+0

是的,如果它顯示的東西 – sverrirarnors 2014-11-22 23:25:23

+0

是的,是一個錯字。感謝您的回覆。我用作參考的地方並沒有真正解釋,我認爲'<'是必需的,但現在看到它很明顯不是。歡呼的答覆,非常感謝。 – RonaIdo 2014-11-22 23:28:19