Как проверить есть ли введенный номер в базе данных MySQL при нажатии и показать некоторые данные оттуда
Моя задача, при нажатии на кнопку поиска, проверить есть ли данный номер студента в базе данных и если есть то показать имя и фамилию данного студента ниже. Если данного номера нету то показать соответствуюшее сообшение.
Я пробовал ето сделать используя форму так как незнаю как проверить нажата ли была кнопка поиска, поетому пробовал if(isset($_GET['submit'])), но форма мне ненужна, мне нужно лишь сперва проверить если кнопка поиска была нажата и если да то выполнить действия которые я описывал выше. Сейчас при нажатии ничего не проишодит. Подскажите пожалуйста как ето исправить.
Вот мой код:
<?php include('mysql_connect.php')?>
<!DOCTYPE html>
<html lang="en">
<head>
<link href="https://fonts.googleapis.com/css?family=Bree+Serif&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lato&display=swap" rel="stylesheet">
<script src="https://kit.fontawesome.com/29f1e2c7c5.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<meta charset="UTF-8">
<title>Home page</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="bg">
<img src="tech.png" alt="">
</div>
<div id="welcome">
<div id="inner-wrap">
<h1>Student management system</h1>
<h4>Keep control of every student with the options below:</h4>
<form action="student_management_system.php" method="get">
<div class="container">
<div class="row no-gutters mt-3 align-items-center">
<div class="col search-bar">
<input class="form-control rounded-pill pr-5" type="search" name="search_student" placeholder="Search by student number" id="example-search-input2">
</div>
<div class="col-auto">
<button type="submit" class="btn search-btn text-dark border-0 rounded-pill ml-n5">
<i class="fa fa-search"></i>
</button>
</div>
<?php
if(isset($_GET['submit'])) {
$search = $_GET['search_student'];
$trimmedSearch = trim($search);
$query = "SELECT * FROM student WHERE student_no = $trimmedSearch";
$result = mysqli_query($db_connection, $query);
if ($row = mysqli_num_rows($result)) {
?>
<div class="alert alert-success">Student found:<?php echo $row['first_name'] . ' ' . $row['last_name'] ?></div>
<?php
} else {?>
<div class="alert alert-danger">Student doesn't exist!</div>
<?php
}
}?>
</div>
</div>
</form>
<div id="main-buttons">
<button type="button" class="btn main-btns"><a href="add_student.php">Add Student</a></button>
<button type="button" class="btn main-btns">Update Student</button>
<button type="button" class="btn main-btns">Delete Student</button>
</div>
</div>
</div>
</body>
</html>
Ответы (1 шт):
Правильнее будет сделать на jQuery проверку нажатия на кнопку, а затем, при помощи $.get или $.post, отправлять данные на php обработчик, где и будет проверка всех данных. Пример отправки полученных данных:
//Ожидание загрузки всей страницы
$(document).ready(function () {
//Проверка клика
$("#search_input").click(function (e) {
//Запрещает перезагрузку страницы и отправку формы
e.preventDefault();
if(!e.isDefaultPrevented()){
e.returnValue = false;
}
//Получение номера, введённого в поле
let GetNumber = $('#search_input').val();
$.post("you.php", {GetNumber}).done(function (data) {
alert("Data Loaded: " + data);
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="search" name="search_student" placeholder="Search by student number" id="search_input">
<button>Поиск</button>
Теперь, когда эти данные приходят на php, получай их там при помощи $_POST['GetNumber'], а дальше крути-верти, как хочешь. (Для вывода результатов поиска просто пиши в php файле echo "Твой контент";
Для проверки наличия данного номера в базе делай следующее:
//Получаем список всех пользователей. $_POST['GetNumber'] получаем из примера выше
$CheckUserNum = mysqli_query($bdConnect, ("SELECT * FROM `students` WHERE user_num = '$_POST[GetNumber]'"));
//Преобразовываем ответ в массив
$CheckUserNumRow = mysqli_fetch_array($CheckUserNum);
//Вывод данных
do {
//Тут вид вывода: echo "<div>Content</div";
} while($CheckUserNumRow = mysqli_fetch_array($CheckUserNum));
