Поиск в MySQL и вывод результат. Где ошибка?

Статус: Offline
Реєстрація: 14.11.2007
Повідом.: 465
Поиск в MySQL и вывод результат. Где ошибка?

Подскажите пожалуйста, где ошибка в коде:

Форма поиска:
PHP:
<form action=search.php method=post> 
Id : <input type=text name=search_query><br> 
<input type=submit value=Отправить> 
</form>

PHP:
<html>
<head>
<title>Simple Search Engine version 1.0 - Results </title>
</head>
<body> 
<center>
<?php 
mysql_connect("localhost","admin","12345") or die("Can't connect!");
mysql_select_db("BM") or die("Can't select database!"); 
$query= mysql_query("SELECT * FROM Excel WHERE Id='$search_query'");

$result= mysql_numrows($query);

if ($result == 0)
{
echo "Sorry, I couldn't find any user that matches your query ($search_query)";
exit; //Ничего не найдено, зачем выполнять остальную часть скрипта?
}
else if ($result == 1)
{
echo "I've found <b>1</b> match!<br>";
}
else {
echo "I've found <b>$result</b> matches! <br>";
}

while ($row= mysql_fetch_array($query))
{
$Id= $row["Id"];
$name = $row["name"];
$cost = $row["cost"];

echo "Код товара: $Id.<br>";
echo "Наименование: $name.<br>";
echo "Цена: $cost. <br>";
}
?> 
</body>
</html>

Если в скрипте search.php на место $search_query поставлю 102 (код в базе имеется), он выведет:

I've found 1 match!
Код товара: 102.
Наименование: .
Цена: .​

а где остальные данные и почему search.php не считывает данные из переменной search_query переданной из формы?
 
мб регглобалс офнут и нужно юзать $_POST['search_query'] ?
 
еще назови переменные осмысленными и правильными именами - смени query на result, а result на count.
не помешают также фильтрация данных и обработчики исключений.

PHP:
$search_query=addslashes(htmlspecialchars($_POST['search_query']));
$result= mysql_query("SELECT * FROM Excel WHERE Id='$search_query'");
if($result){
	$count= mysql_num_rows($result);
	if($count>0){
		for($i=0; $i<$count; $i++){
			if(mysql_data_seek($result, $i)){
				$row= mysql_fetch_assoc($result);
				$Id= $row["Id"];
				$name = $row["name"];
				$cost = $row["cost"];

				echo "Код товара: $Id.<br>";
				echo "Наименование: $name.<br>";
				echo "Цена: $cost. <br>";
			};
		};
	}else{
		/// 0 found
	};
}else{
	////// query error
	echo mysql_error();
};
 
Останнє редагування:
MySQL не поддерживает bind variables?
 
пиздец, это не код а хуита какая-то :D

в мануал, блять ;)
 
Спасибо за ответы, код брал с хакер.ру

у меня еще одна ошибка, браузер пишет:
Parse error: syntax error, unexpected '<' in Z:\home\localhost\www\search.php on line 34
где это фиксить? (= заранее спасибо! (=
 
Спасибо за ответы, код брал с хакер.ру

у меня еще одна ошибка, браузер пишет:
Parse error: syntax error, unexpected '<' in Z:\home\localhost\www\search.php on line 34
где это фиксить? (= заранее спасибо! (=

В скрипте search.php на 34й строчке. Кэп.
 
ТС, еще на ксакеп.ru можешь почитать про sql-injections. ;)
 
Спасибо, почитаю, но сначала попытаюсь доедать поиск)

$count= mysql_num_rows($query);

А что в этой строчке не так?
Браузер пишет: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource...
я новичок в этом деле... подскажите пожалуйста.
 
Останнє редагування:
Спасибо, почитаю, но сначала попытаюсь доедать поиск)

$count= mysql_num_rows($query);

А что в этой строчке не так?
Браузер пишет: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource...
я новичок в этом деле... подскажите пожалуйста.

$count= mysql_num_rows($result);
 
О, большое спасибо (=
А как теперь сделать что бы выводился не только код, но и название и цена?)
Спасибо.

теме ап (=
Помогите пожалуйста!
нужно чтобы выводился не только If но и остальные данные соответствующие полю Id
 
Посмотри выводятся ли остальные данные в массив $row:
PHP:
print_r($row);
и есть ли они в таблице:)
 
а как это сделать?
 
Просто хочется чтобы уже сейчас все работало))
Я пытаюсь разобраться, был бы у меня скрипт рабочий, я бы его ковырял =)

Тперь такая проблема:

Форма для поиска:
<form action="poisk.php" method="post">

<p align="left"><b>Поиск по остаткам:
</b>
<br>
<br>

<input type="text" name="Kod" size="20" value="Введите код">
<input type="text" name="Nazvanie" size="60" value="Введите название">

<input type="submit" name="submit" value="Искать">

<input type="reset" name="reset" value="Отчистить">

</p>

</form>

======================================

Скрипт поиска:

<?php

/* Соединение, выбор БД */

$link = mysql_connect("localhost", "root", "") or die("Не соединилось!!!");

mysql_select_db("BM") or die("Не найдена БД");

/* Выполнение SQL запроса */

$query = "SELECT * FROM Excel WHERE (UPPER(Id) LIKE '%".strtoupper($_POST['Kod'])."%')AND(UPPER(Name) LIKE '%".strtoupper($_POST['Name'])."%') LIMIT '$first_rec', '$num_rec'";

$result = mysql_query($query) or die("Запрос ошибочный");

/* Печать результатов в HTML */

print "<table>\n";

while ($line = mysql_fetch_array($result, MYSQL_NUM)) {

print "\t<tr>\n";

for ($i=1;$i<=4;$i++) { print "\t\t<td>$line[$i]</td>\n"; }

print "\t</tr>\n";

}

print "</table>\n";

/* Освобождение памяти, занятой результатом запроса */

mysql_free_result($result);

/* Закрытие соединения */

mysql_close($link);

?>



=====================================
теперь мне все-время пишет: "Запрс ошибочный"
подскажите пожалуйста, где и что конкретно нужно исправить?!
 
а ты не думал штангу потягать? или боксом заняться?
 
2Insanity
блин, ну если ты в этом шаришь, можешь подсказать пожалуйста?
 
ты прирождённый тяжелоатлет... возле стекляшки есть неплохая качалка.. сходи уверен тебе понравится
не за что
 
Форма:
PHP:
<form action="poisk.php" method="post">

<p align="left"><b>Поиск по остаткам:
</b>
<br>
<br>

<input type="text" name="Kod" size="20" value="Введите код">
<input type="text" name="Nazvanie" size="60" value="Введите название">

<input type="submit" name="submit" value="Искать">

<input type="reset" name="reset" value="Отчистить">

</p>

</form>


Скрипт:
PHP:
<?php

/* Соединение, выбор БД */

$link = mysql_connect("localhost", "root", "") or die("Не соединилось!!!");

mysql_select_db("BM") or die("Не найдена БД");

/* Выполнение SQL запроса */

$Kod=addslashes(htmlspecialchars($_POST['Kod']));
$Nazvanie=addslashes(htmlspecialchars($_POST['Nazvanie']));

$query = "SELECT * FROM Excel WHERE Id LIKE '%".strtoupper($_POST[Kod])."%') or Name LIKE '%".strtoupper($_POST['Nazvanie'])."%';

$result = mysql_query($query) or die("Запрос ошибочный");

/* Печать результатов в HTML */

print "<table>\n";

while ($line = mysql_fetch_array($result, MYSQL_NUM)) {

print "\t<tr>\n";

for ($i=1;$i<=4;$i++) { print "\t\t<td>$line[$i]</td>\n"; }

print "\t</tr>\n";

}

print "</table>\n";

/* Освобождение памяти, занятой результатом запроса */

mysql_free_result($result);

/* Закрытие соединения */

mysql_close($link);

?>

А тут $result = mysql_query($query) or die("Запрос ошибочный"); ошибка, где и что пофиксить? подскажите плиз
 
Назад
Зверху Знизу