Мне интересно, есть ли у кого-то запасные глаза на мгновение или два. Проблема, которую я вижу, лежит на моих иссетах. Он игнорирует первый исходный isset ($ lastName) и, кажется, всегда выбирает isset ($ title). Также я должен упомянуть, что значения отправляются из HTML-формы в ssearch с фамилией или заголовком в БД.HTML-значения формы представляют PHP и запрос
Мой вопрос: может ли кто-нибудь помочь с логической проблемой или есть другой способ сделать это? Я знаю его склонность к SQL-инъекции, но он находится в локальной базе данных, и я буду внимательно изучать это в ближайшее время. Если кто-то может делать предложения, мне определенно интересно их услышать.
В соответствии с предложением HTML-формы.
<form name="lookup" method="post" action="searchEmployeeList.php" autocomplete="off">
<fieldset>
<p>Conduct a search</p>
<table width="600">
<tr>
<td width="150">Surname:</td>
<td>
<input type="text" name="lastName" value="" maxlength="25" placeholder="Employees surname">
</td>
</tr>
<tr>
<td width="150">Title:</td>
<td>
<input type="text" name="title" value="" maxlength="25" placeholder="Job role">
</td>
</tr>
<tr>
<td></td>
<!--Blank row-->
<td>
<input type="submit" name="submit" value="Search now">
<input type="submit" name="show_all" value="Show all">
</td>
</tr>
</table>
</fieldset>
</form>
if (isset($_POST['lastName'])) {
include 'DBConDetails.php';
if (isset($lastName)) {
$sql = "SELECT * FROM employee_data Where last_name = '".$_POST['lastName'].
"'";
}
if (isset($_POST['title'])) {
$sql = "SELECT * FROM employee_data Where title = '".$_POST['title'].
"'";
}
$result = mysqli_query($con, $sql);
if ($result - > num_rows > 0) {
echo "<table id = 'searchResults'> <tr>
<td> ID < /td> <td> Name < /td> <td> Age < /td><td>Title</td > <td> Years of Service < /td> <td> Salary < /td> < /tr>";
//multiple echos plainly for readability
while ($row = $result - > fetch_assoc()) {
echo '<tr>';
echo '<td>' . $row["employee_id"] . '</td>';
echo '<td>' . $row["first_name"] . ' ' . $row["last_name"] . '</td>';
echo '<td>' . $row["age"] . '</td>';
echo '<td>' . $row["title"] . '</td>';
echo '<td>' . $row["yos"] . '</td>';
echo '<td>' . $row["salary"] . '</td>';
echo '</tr>';
}
} else {
echo "I'm afraid we could not find any matches, try editing your criteria.";
}
echo "</table>";
}
Если кто-то сталкивались с подобной проблемой в будущем, вопрос лежит на оба, если утверждения истинности, которые приводят как к выполнению и последней перезаписи первого if()
заявления. Должно заметить, что!
предложение? конечно; разместите свою HTML-форму, чтобы оставить догадки из нее –
Если вы введете LastName и Title, он всегда будет делать второй 'IF', который перезапишет первый !!! – RiggsFolly
@Bastiaan Ваше предлагаемое редактирование http://stackoverflow.com/review/spected-edits/9976787 ** хуже! ** - * sigh. * –