Есть база и скрипт для поиска по БД созданной в phpMyAdmin. Поиск не реботает. При нажатии btnSearch которая отвечает за выполнение кода поиска данные таблицы просто исчезают и нет никаких результатов поиска. Первый файл - app_config.php подключение к MySQL, а второй файл с БД - index_ships.php. Извините что слишком много кода, старался сократить как можно больше и оставил самое важное. Возможно кто-то увидит, то чего не вижу я.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
$database_host = "localhost";
$username = "root";
$password = "root";
$database_name = "shipping_company";
mysql_connect($database_host, $username, $password, $database_name)
or die("<p>Ошибка подключения к базе данных: " . mysql_error() . "</p>");
mysql_select_db($database_name)
or die("<p>Ошибка при выборе базы данных {$database_name}: " . mysql_error() . "</p>");
?>
</body>
</html>
<?php
require "app_config.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ships</title>
<link href="css/style.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="css/bootstrap.css" crossorigin="anonymous">
</head>
<body>
<div class="full">
<div class="middle">
<p class="title">Ships data</p>
<form method="GET">
<input type="search" name="strSearch">
<select name="check">
<option value="ShipName">Ship name</option>
<option value="CaptainName">Captain name</option>
<option value="ShipType">Ship type</option>
</select>
<input name="btnSearch" type="submit" value="Search">
</form>
<br>
<?php
if (!$_GET['btnSearch'])
{
$sql_select = "SELECT * FROM Ships";
$result = mysql_query($sql_selectq);
}
else {
$result = mysql_query("SELECT * FROM Ships WHERE {$_GET['check']} LIKE '%{$_GET['strSearch']}%'");
}
// $sql_select = "SELECT * FROM Ships";
$result = mysql_query($sql_select);
echo '<table class="table table-sm">';
echo '<tr><td><b>Ship</b></td><td><b>Name</b></td><td><b>Captain</b></td><td><b>Type</b></td><td><b>Cargo</b></td><td><b>Build</b></td><td><b>Photo</b></td><td>Delete</td></tr>';
while($row = mysql_fetch_assoc($result))
{
echo '<tr><td>'.$row['ship_id'].'</td><td>'.$row['ShipName'].'</td><td>'.$row['CaptainName'].'</td><td>'.$row['ShipType'].'</td><td>'.$row['Cargo'].'</td><td>'.$row['BuildYear'].'</td><td>'.$row['Photo'].'</td></tr>';
}
echo '</table>';
?>
</div>
<div class="right">
<?php
$ship_name = $_POST['ShipName'];
$captain_name = $_POST['CaptainName'];
$ship_type = $_POST['ShipType'];
$cargo = $_POST['Cargo'];
$build_year = $_POST['BuildYear'];
$photo = $_POST['Photo'];
$flag = true;
if (isset($_POST['add']))
{
if (!preg_match("/^\s*[A-Za-zА-Яа-яЁё_\s]*$/u", $ship_name)){
echo "Invalid characters in Name!<br><br>";
$flag = false;
}
if (!preg_match("/^\s*[A-Za-zА-Яа-яЁё_\s]*$/u", $captain_name)){
echo "Invalid characters in Captain name!<br>";
$flag = false;
}
if ($flag)
{
$insert_sql = "INSERT INTO Ships (ship_id, ShipName, CaptainName, ShipType, Cargo, BuildYear, Photo) VALUES ('$ship_id', '$ship_name', '$captain_name', '$ship_type', '$cargo', '$build_year', '$photo')";
$res=mysql_query($insert_sql);
if ($res)
{
// echo "<p>Данные успешно добавлены в таблицу.</p>";
} else
{
echo "<p>Произошла ошибка.</p>";
}
echo '<meta http-equiv="refresh" content="0; URL=index_ships.php">';
}
Данный мой код работает.
Основная проблема была в секции if (!isset($_GET['btnSearch'])){}else{}, у вас формируется в первой части секции $sql_select, а во второй части нет. После условной конструкции выполняется $result = mysql_query($sql_select) при условии что $sql_select не существует.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
$database_host = "localhost";
$username = "root";
$password = "";
$database_name = "ship";
$link = mysqli_connect($database_host, $username, $password, $database_name);
//mysqli_select_db($link, $database_name) or die("<p>Ошибка при выборе базы данных {$database_name}: " . mysqli_error() . "</p>");
?>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ships</title>
<link href="css/style.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="css/bootstrap.css" crossorigin="anonymous">
</head>
<body>
<div class="full">
<div class="middle">
<p class="title">Ships data</p>
<form method="GET">
<input type="search" name="strSearch">
<select name="check">
<option value="ShipName">Ship name</option>
<option value="CaptainName">Captain name</option>
<option value="ShipType">Ship type</option>
</select>
<input name="btnSearch" type="submit" value="Search">
</form>
<br>
<?php
if (!isset($_GET['btnSearch'])) {
$sql_select = "SELECT * FROM Ships";
$result = mysqli_query($link, $sql_select);
} else {
$result = mysqli_query($link, "SELECT * FROM Ships WHERE {$_GET['check']} LIKE '%{$_GET['strSearch']}%'");
// $sql_select = "SELECT * FROM Ships";
// $result = mysqli_query($link, $sql_select);
}
echo '<table class="table table-sm">';
echo '<tr><td><b>Ship</b></td><td><b>Name</b></td><td><b>Captain</b></td><td><b>Type</b></td><td><b>Cargo</b></td><td><b>Build</b></td><td><b>Photo</b></td><td>Delete</td></tr>';
while ($row = mysqli_fetch_assoc($result)) {
echo '<tr><td>' . $row['id'] . '</td><td>' . $row['ShipName'] . '</td><td>' . $row['CaptainName'] . '</td><td>' . $row['ShipType'] . '</td></tr>';
}
echo '</table>';
?>
</div>
</div>
</body>
</html>
Старый код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
var_dump($_REQUEST);
$database_host = "localhost";
$username = "root";
$password = "";
$database_name = "ship";
$link = mysql_connect($database_host, $username, $password);
mysql_select_db($database_name, $link);
?>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ships</title>
<link href="css/style.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="css/bootstrap.css" crossorigin="anonymous">
</head>
<body>
<div class="full">
<div class="middle">
<p class="title">Ships data</p>
<form method="GET">
<input type="search" name="strSearch">
<select name="check">
<option value="ShipName">Ship name</option>
<option value="CaptainName">Captain name</option>
<option value="ShipType">Ship type</option>
</select>
<input name="btnSearch" type="submit" value="Search">
</form>
<br>
<?php
if (!isset($_GET['btnSearch'])) {
$sql_select = "SELECT * FROM Ships";
$result = mysql_query($sql_select);
} else {
$result = mysql_query("SELECT * FROM Ships WHERE {$_GET['check']} LIKE '%{$_GET['strSearch']}%'");
// $sql_select = "SELECT * FROM Ships";
// $result = mysqli_query($link, $sql_select);
}
// $num=mysql_num_rows($result);
// if(0==$num) {
// echo "No record";
// }
echo '<table class="table table-sm">';
echo '<tr><td><b>Ship</b></td><td><b>Name</b></td><td><b>Captain</b></td><td><b>Type</b></td><td><b>Cargo</b></td><td><b>Build</b></td><td><b>Photo</b></td><td>Delete</td></tr>';
while ($row = mysql_fetch_assoc($result)) {
echo '<tr><td>' . $row['id'] . '</td><td>' . $row['ShipName'] . '</td><td>' . $row['CaptainName'] . '</td><td>' . $row['ShipType'] . '</td></tr>';
}
echo '</table>';
?>
</div>
</div>
</body>
</html>
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники