Я работаю над проектом, который берет 4 поля от пользователя для фильтрации запроса, поступающего из базы данных mysql.Каков наилучший способ фильтрации запроса с использованием пользовательских входов
Пользователь вводит диапазон дат, поиск имени и/или результат игры. Запрос может работать, пока все поля не заполняются и должны работать, когда заполняются все поля.
Мне нужно написать программу, которая делает все это, но единственный способ, которым я могу это сделать, - написать кучу операторов if, чтобы узнать, заполнил ли пользователь или не заполнил каждый элемент отдельной формы. Должен быть лучший, более эффективный способ сделать это.
<form method="post" action="extra.php">
Date Range From:
<input type="text" id="dateFrom" name="dateFrom" value=""/>
To:
<input type="text" id="dateTo" name="dateTo" value=""/>
<br/>
Name Search:
<input type="text" id="nameSearch" name="nameSearch" value=""/>
<br/>
Game Result:
<select name="gameResult">
<option value="any">Any</option>
<option value="p1">Player 1</option>
<option value="p2">Player 2</option>
<option value="draw">Draw</option>
</select>
<input type="submit" id="submit">
</form>
<?php
include('../inclass/db_connect.php');
if(isset($_POST['dateFrom']) && ($_POST['dateTo']) && ($_POST['nameSearch']) && ($_POST['gameResult'])){
$dateFrom = $_POST['dateFrom'];
$dateTo = $_POST['dateTo'];
$nameSearch = $_POST['nameSearch'];
$gameResult = $_POST['gameResult'];
$result =$pdo->prepare("SELECT matchDate, player1, player2, result, eco FROM matches WHERE (matchDate BETWEEN '$dateFrom' AND '$dateTo') AND (player1 LIKE '$nameSearch%') OR (player2 LIKE '$nameSearch%') AND (result ='1') ORDER BY matchDate desc LIMIT 250");
$result->execute();
?>
<table border="1">
<tr>
<th>Match Date</th>
<th>Player 1</th>
<th>Player 2</th>
<th>Result</th>
<th>ECO Code</th>
<th>Match Details</th>
</tr>
<?php
for($i=0; $row = $result->fetch(); $i++){
?>
<tr>
<td><?php echo $row['matchDate']; ?></td>
<td><?php echo $row['player1']; ?></td>
<td><?php echo $row['player2']; ?></td>
<td><?php echo $row['result']; ?></td>
<td><?php echo $row['eco']; ?></td>
<td><a href="details.php" id=".$row['id'].">Details</a></td>
</tr>
<?php
}
?>
</table>
<?php
}
http://cps276.net/zgambrell/04/extra.php
мне просто нужно некоторое руководство в правильном направлении в том, как сделать это без того, чтобы написать 50, если заявления. Любая помощь приветствуется.
Нет, нет другого способа, просто 'if's –
, поэтому мне нужно написать заявление индивидуума if (isset) для каждого отдельного результата, который может произойти? – Zgbrell
Есть ли способ, которым я могу поместить свою таблицу в функцию или класс, а затем, когда мне нужно, чтобы она была опубликована, вместо повторной записи всей таблицы снова и снова, я могу просто вызвать вызов функции, поэтому у меня есть только написать код для таблицы вовремя? – Zgbrell