Запрос базы данных php MySQL - результаты поиска не отображаются
(ПРОБЛЕМА ОЧЕНЬ ПОДРОБНАЯ, СЛИШКОМ ДОЛГО НЕ ЧИТАЛ: "Я предполагаю, что я неправильно использую MYSQL_FETCH_ARRAY".)
Привет! Следующие коды предназначены для выполнения базового поиска в базе данных. Данные передаются с помощью формы. Учебник, который я использовал, был написан: "Мороз из Slunked.com "и это был базовый учебник по php MySQL для регистрации/входа в систему, который отлично работал. Мне удалось написать функцию обновления таблицы Уокинга и форму отправки, чтобы добавить новые данные к выбранным (так что это работает так, как задумано.
Config.php - подключается к серверу MySQL, выбирает базу данных, запускает сеанс, требует functions.php (с включенными комментариями авторов)
<?php
/*****************************
File: includes/config.php
Written by: Frost of Slunked.com
Tutorial: User Registration and Login System
******************************/
// start the session before any output.
session_start();
// Set the folder for our includes
$sFolder = '';
/***************
Database Connection
You will need to change the user (user)
and password (password) to what your database information uses.
Same with the database name if you used something else.
****************/
mysql_connect('localhost', 'myusername', 'mypassword') or trigger_error("Unable to connect to the database: " . mysql_error());
mysql_select_db('tormex') or trigger_error("Unable to switch to the database: " . mysql_error());
/***************
password salts are used to ensure a secure password
hash and make your passwords much harder to be broken into
Change these to be whatever you want, just try and limit them to
10-20 characters each to avoid collisions.
****************/
define('SALT1', '24859f@#$#@$');
define('SALT2', '^&@#_-=+Afda$#%');
// require the function file
require_once 'functions.php';
// default the error variable to empty.
$_SESSION['error'] = "";
// declare $sOutput so we do not have to do this on each page.
$sOutput="";
?>
Functions.php - имеет несколько функций (вход, создание, регистрация и т. Д.). Цель большинства функций - получить значения из представленных HTML-форм, а затем выполнить необходимые действия - я упомяну только свою функцию searchRide (которая, по моему мнению, имеет ошибку или, по крайней мере, должна делать что-то с этим) и функцией createRide, которая работает должным образом.
<?php ...
unction searchRide($pWhen_min, $pWhen_max, $pFrom, $pTo){
if (!empty($pWhen_min) && !empty($pWhen_max) && !empty($pFrom) && !empty($pTo)) {
global $sql2, $query2;
$sql2 = "SELECT * FROM ride WHERE `from` ='$pFrom' AND `to` = '$pTo' AND `when` >= '$pWhen_min' AND `when` <= '$pWhen_max' ";
$query2 = mysql_query($sql2) or trigger_error("Query Failed: " . mysql_error());
}
}
function createRide($pFrom, $pTo, $pWhen, $pSeats, $pPrice, $pCar){
if (!empty($pFrom) && !empty($pTo) && !empty($pWhen) && !empty($pSeats) && !empty($pPrice) && !empty($pCar)){
$sql = "SELECT id FROM users WHERE username= '" . $username . "' LIMIT 1";
$result = mysql_query($sql);
if(!$result) {
trigger_error("ELKURTAD " . mysql_error());
}
$row = mysql_fetch_array($result);
$sql = "INSERT INTO ride (`from`, `to`, `when`, `seats`, `price`, `car`, `u_id`)
VALUES ('" . $pFrom . "', '" . $pTo . "', '" . $pWhen . "',
'" . $pSeats . "', '" . $pPrice . "', '" . $pCar . "', '" . $result . "');";
$query = mysql_query($sql) or trigger_error("Query Failed: " . mysql_error());
if ($query) {
return TRUE;
}
}
return FALSE;
}
...?>
SearchRide.php - проверяет, имеют ли переменные, предназначенные для получения значений фильтра поиска, какие-либо значения; (в инструкции else) если значений нет, форма не была отправлена и отображает форму поиска, а после результата передает переменные для searchRide.php ($_SERVER['PHP_SELF'])
<?php
require_once 'config.php';
$sOutput .= '<div id="searchRide-body">';
if (isset($_GET['action'])) {
switch (strtolower($_GET['action'])) {
case 'searchride':
if (isset($_POST['when_min']) && isset($_POST['when_max']) && isset($_POST['from']) && isset($_POST['to'])) {
if (searchRide($_POST['when_min'], $_POST['when_max'], $_POST['from'], $_POST['to'])) {
while($row = mysql_fetch_array($query2)){
$sOutput .= "' ID: '" .$row['id'] . "' <br />
When: '" . $row['when'] . "' <br />
From: '" . $row['from'] . "' <br />
To: '" . $row['to'] . "' <br />
Seats left: '" . $row['seats'];
}
}
}
}
}else{
if (isset($_SESSION['error'])) {
$sError = '<span id="error">' . $_SESSION['error'] . '</span><br />';
}
$sOutput .= '<h2>Search for rides</h2>
' . $sError . '
<form name="searchride" method="post" action="' . $_SERVER['PHP_SELF'] . '?action=searchride">
From: <input type="text" name="from" value=* /><br />
To: <input type="text" name="to" value=* />
When_min: <input type="text" name="when_min" value=* />
When_max: <input type="text" name="when_max" value=* />
<br /><br />
<input type="submit" name="submit" value="Search" />
</form>
<br />
<h4>Would you like to <a href="index.php">Go back?</a></h4>';
}
echo $sOutput . "<br />";
echo "TEST string" . "<br />";
echo $query2 . " query2<br /> ";
echo $sql2 . " sql2<br />";
echo $row . "<br />";
?>
В конце этого кода Вы можете увидеть некоторые напечатанные переменные, которые используются для проверки их значения после отправки формы searRide. Я обновил свою базу данных следующими данными и проверил с помощью phpMyAdmin точные значения, чтобы я мог протестировать поиск с существующими данными:
От: TEST01 Кому: ТЕСТ02 Когда: 500 Количество мест: 5 Цена: 7 Автомобиль: volvo
Тестовые данные, представленные с помощью формы searchRide: От: TEST01 Кому: Тест02 Когда_мин: 1 Whn_max: 3000
После нажатия кнопки поиска в форме searchRide будут получены следующие результаты (что браузер показывает):
(переменная ввода
ТЕСТОВЫЙ ТЕКСТ ДЛЯ ЗАПИСИ
Идентификатор ресурса #5 (переменная query2
ВЫБЕРИТЕ * ИЗ поездки, ГДЕ from
='TEST01' И to
='TEST02' И when
>= '1' И when
<= '5000' ( переменная sql2
(переменная строки
После этого я вставил SQL-запрос в командную строку phpMyAdmin SQL и привел данные, которые я искал.
Много раз пытался выяснить, в чем может быть проблема, с моими собственными знаниями и поисками varius в Google, php.net и w3chools.com . Я предполагаю, что я неправильно использую MYSQL_FETCH_ARRAY.
1 answers
Следующее условие не будет работать
if (searchRide($_POST['when_min'], $_POST['when_max'], $_POST['from'], $_POST['to'])) {
Поскольку вы не вернули никакого значения из функции searchRide, вам нужно вернуть значение true, чтобы войти в условие.