2014-11-22 2 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? Не нужно ли мне ГДЕ 1? Я просто использую AND? Еще раз спасибо. – RonaIdo

+0

Нет проблем. Оператор AND сообщает, что запрос возвращает только те результаты, в которых оба операнда оцениваются как истинные. 1 всегда будет оцениваться как true, а gameYear = «2001» будет оцениваться только для записей с того года. 1 бит является постоянным и, следовательно, не будет влиять на то, что вы возвращаете. Если вы хотите добавить еще один критерий поиска. Например, только возвращенные игры, которые дешевле, чем 10 фунтов стерлингов, вы можете использовать это как ваш ГДЕ: 'WHERE gameYear = 2001 И gameCost <" 10 "' – ornous

+0

Спасибо, поймите это сейчас намного лучше. Однако у меня есть один последний вопрос. Если бы мне пришлось добавить параметр «Все годы» в мою HTML-форму, как мне заставить это работать с PHP? Поскольку я добавляю больше полей в мою форму, было бы полезно, если бы пользователь мог просто увидеть все игры без необходимости выбирать год, если они этого не хотят, чтобы сузить поиск. Спасибо за помощь, очень ценим! – RonaIdo

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

+0

Да, возможно, если он что-то показывает – sverrirarnors

+0

Да, была опечатка. Спасибо за ответ, хотя. Место, которое я использовал в качестве справочника, действительно не объясняло, и я подумал, что «<» требуется, но, увидев его, теперь совершенно очевидно, что это не так. Приветствия за ответ, очень ценится. – RonaIdo

Смежные вопросы