Форма поиска с PHP и PDO, затем отобразить результаты на странице - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь выполнить поиск в моей базе данных SQL с помощью простой формы поиска, а затем вернуть данные на экран.

Например, пользователь может выбрать год, а затем все строки будут отображены в таблице.вся информация для этой записи.Вот моя форма:

<form class="" method="POST" action="availability.php"  enctype="multipart/form-data">

                    <select class="form-control mb-3"  name="year" id="year">
                      <option disabled selected>Year</option>
                      <option value="2019">2019</option>
                      <option value="2020">2020</option>
                      <option value="2021">2021</option>

                    </select>

                    <input class="btn btn-blue-grey" type="submit" value="submit">Search
                    <i class="fas fa-search ml-1"></i>
                    </input>

                    </form>

А вот мой PHP

if(isset($_POST['submit'])) {

$year = $_POST['year'];

var_dump($year);
var_dump($_POST);

$sql = "SELECT * FROM availability WHERE year = :year";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':year',$year,PDO::PARAM_STR);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
$data = $stmt->fetchAll(); }

и мой HTML

<ul>
                            <?php foreach($data as $stmt)  { ?>
                                <li><?php echo $stmt['cruise'];?></li>
                                <li><?php echo $stmt['year'];?></li>
                            <?php } ?>
                        </ul>

В данный момент форма отправляется, но яполучить ничего не заполняя список .. Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Вы должны изменить несколько вещей, во-первых, отредактируйте тег выбора следующим образом:

<select class="form-control mb-3"  name="year" id="year">
                      <option disabled selected>Year</option>
                      <option value="2019">2019</option>
                      <option value="2020">2020</option>
                      <option value="2021">2021</option>

                    </select>

Существует условие, которое кажется неправильным.поэтому измените свой HTML-код на

if($_POST) {

$year = $_POST['year'];

$stmt = $pdo->prepare("SELECT * FROM availability WHERE year = :year");
$stmt->execute(array("%$year%"));
// fetching rows into array
$data = $stmt->fetchAll();}
0 голосов
/ 28 февраля 2019

$ stmt-> bindParam ( ':' год, $ год, PDO :: PARAM_STR);<- это должен быть PARAM_INT?</p>

также у вас var_dump'ed $ year = $ _POST ['year'];чтобы убедиться, что вы получаете значение?

Вы можете включить error_reporting и посмотреть, есть ли какие-либо полезные ошибки

0 голосов
/ 28 февраля 2019

Вы можете попробовать использовать этот запрос:

$year = $_POST['year'];
$sql = "SELECT * FROM availability WHERE year = :year";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':year',$year,PDO::PARAM_STR);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
$data = $stmt->fetchAll();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...