|
|
|
| Написал код и он не пашет вернее пашет, но не понимает параметров поиска
<title> Добавление работника в базу данных </title>
<?php
if($HTTP_SESSION_VARS['valid_user_login']!='guest')
{
if($submit)
{
/* Переменные для соединения с базой данных */
$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "antikor";
/* Таблица MySQL, в которой хранятся данные */
$userstable = "rab";
/* создать соединение */
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error());
$searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];
$searchterm=trim($searchtype);
/*Может здесь что ни так ?*/
$query= "SELECT * from $userstable where '.$searchtype.' = '.$searchterm.'";
/* Выполнить запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());
/* Как много нашлось таких */
$number = mysql_num_rows($res);
/* Напечатать всех в красивом виде*/
if ($number == 0) {
echo "<CENTER><P>Поиск не дал результата</CENTER>";
} else {
echo "<CENTER><P>Всего найдено: $number<BR><BR>";
/* Получать по одной строке из таблицы в массив $row, пока строки не кончатся */
while ($row=mysql_fetch_array($res)) {
echo "Фамилия ".$row['familiya'];
echo '</p>';
echo "Имя : ".$row['imya'];
echo '</p>';
echo "Объект : ".$row['name'];
echo "<BR><BR>";
}
echo "</CENTER>";
}
}
if(empty($submit))
{
?>
<form method="post" action="<?php echo $PHP_SELF?>?razd=search&sub_razd=s_rab">
Выберите тип поиска : </br>
<select name ="searchtype">
<option value ="familiya">По фамилии</option>
<option value ="name">По объекту</option>
</select>
<br />
Введите информацию для поиска : <br />
<input name="searchterm" type="text">
<br />
<center>
<input type="Submit" name="submit" value="Найти"></center>
</form>
<?php
}
}
else
{
?>
<p>Этот раздел доступен только зарегистрированным пользователям.
Если вы уже зарегистрированны, необходимо воспользоваться <a href=<?php $PHP_SELF?>?razd=user&sub_razd=enter>авторизацией</a>!!!</p>
<?php
}
?> | |
|
|
|
|
|
|
|
для: Alessandro
(02.03.2006 в 21:11)
| | $searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];
$searchterm=trim($searchtype);
последняя строчка мне не нравится. может, надо $searchterm=trim($searchterm);? | |
|
|
|
|
|
|
|
для: elenaki
(02.03.2006 в 21:14)
| | >$searchtype=$_POST['searchtype'];
>$searchterm=$_POST['searchterm'];
>$searchterm=trim($searchtype);
>
>
>последняя строчка мне не нравится. может, надо
>$searchterm=trim($searchterm);?
да вы правы здесь ошибка в коде я ее изменил как вы посоветовали теперь всегда выдает поиск не дал резутьтатов. Что за ерунда ? | |
|
|
|
|
|
|
|
для: Alessandro
(02.03.2006 в 21:11)
| | Нужно убрать все четыре точки из выделенной жирным строки. В строке с двойными кавычками они явно лишние.
$query= "SELECT * from $userstable where '$searchtype' = '$searchterm'";
|
Хотя, может быть лучше как раз не убирать точки, а добавить недостающие двойные кавычки
$query= "SELECT * from $userstable where '". $searchtype . "' = '" . $searchterm . "'";
|
После чего можно будет заэкранировать кавычки во вводимых полях:
$query= "SELECT * from $userstable where '"
. mysql_escape_string($searchtype) . "' = '" . mysql_escape_string($searchterm) . "'";
|
| |
|
|
|
|
|
|
|
для: Trianon
(02.03.2006 в 21:28)
| | Пробывал все 3 варианта не работает, вернее работает только не так - ему вообще все равон какие я параметры поиска задаю он мне всегда выводит одно и тоже. Может как-то не так я задаю эти переменные - $searchtype $searchterm, и поэтому он не понимает их ? | |
|
|
|
|
|
|
|
для: Alessandro
(02.03.2006 в 21:54)
| | в таких случаях полезно выводить на экран сам запрос и смотреть, что там не так. или пробовать его выполнить не через скрипт. | |
|
|
|
|
|
|
|
для: elenaki
(02.03.2006 в 22:07)
| | Может у кого есть код похожих поисков только желательно чтобы именно также можно было выбрать столбец по которому надо искать ну и набрать ключевое слово ? | |
|
|
|
|
|
|
|
для: Alessandro
(02.03.2006 в 22:16)
| | я вот так строю динамический запрос. у меня в форме есть выбор из селектов, текстовых
полей, календаря и радио-кнопок. сначала проверяю, задан ли определенный параметр, потом
были ли уже условия ДО (по разному добавляется строка - с where или без него) и строю
запрос. потом обязательно вывожу его и смотрю, что получилось, даю этот запрос программе
(MySQL-Front), проверяю, что выдал скрипт и что программа. листинг в аттаче. | |
|
|
|
|
|
|
|
для: Alessandro
(02.03.2006 в 21:54)
| | Зависит от структуры таблицы rab . Например, от того, есть ли там поля name и familiya и какого они типа?
Ошибку, которую заметила elenaki ($searchterm заполняется явно не оттуда) тоже стоит исправить. Если еще не исправили.
А еще я бы перед mysql_query($query) or die...
напечатал бы echo $query; и поглядел бы на текст запроса, чтоб зря не гадать.
Да и сам запрос жестковат... я бы написал не where name = 'pupkin' , а where name like '%pupkin%' .... Но это уже когда заработает хоть что-то... | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2006 в 22:14)
| | Ошибка не в запросе а в том что данные которые я выбираю это фамлию и объект и ключевое слово поиска которое я ввожу они не доходят до запроса - вот эти
if(empty($submit))
{
?>
<form method="post" action="<?php echo $PHP_SELF?>?razd=search&sub_razd=s_rab">
Выберите тип поиска : </br>
<select name ="searchtype">
<option value ="familiya">По фамилии</option>
<option value ="name">По объекту</option>
</select>
<br />
Введите информацию для поиска : <br />
<input name="searchterm" type="text">
<br />
<center>
<input type="Submit" name="submit" value="Найти"></center>
</form>
<?php
}
}
|
Так как если вместо этого прописать
$searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];
$searchterm=trim($searchtype);
|
Вот это :
$searchtype="name";
$searchterm='Алтуфьево';
$searchterm=trim($searchterm);
|
Т.е. принудительно написать столбец - name и ключевое слово - Алтуфьево, то поиск работает верно. Из-за чего может работать присвоение значений $searchtype, $searchterm ? | |
|
|
|
|
|
|
|
для: Alessandro
(03.03.2006 в 15:57)
| | а если вывести на экран эти переменные перед вставкой в запрос? а если прописать
метод get и посмотреть, что передается в ссылке? | |
|
|
|
|
|
|
|
для: Alessandro
(03.03.2006 в 15:57)
| | Когда я не уверен, что поступает на вход моего скрипта, я просто добавляю в самое начало вызов phpinfo(); Громоздко несколько, зато видны все параметры, как значения, так и имена через которые они доступны.
>Так как если вместо этого прописать
>$searchtype=$_POST['searchtype'];
>$searchterm=$_POST['searchterm'];
>$searchterm=trim($searchtype);
меж тем последнюю строку Вы так и не исправили.
$searchterm=trim($_POST['searchterm']);
$searchtype=trim($_POST['searchtype']); | |
|
|
|
|
|
|
|
для: Trianon
(03.03.2006 в 16:35)
| | >Когда я не уверен, что поступает на вход моего скрипта, я
>просто добавляю в самое начало вызов phpinfo(); Громоздко
>несколько, зато видны все параметры, как значения, так и
>имена через которые они доступны.
>
>>Так как если вместо этого прописать
>>$searchtype=$_POST['searchtype'];
>>$searchterm=$_POST['searchterm'];
>>$searchterm=trim($searchtype);
>
>меж тем последнюю строку Вы так и не исправили.
>$searchterm=trim($_POST['searchterm']);
>$searchtype=trim($_POST['searchtype']);
Я взял и удалил эти самые 3 строчки
>>$searchtype=$_POST['searchtype'];
>>$searchterm=$_POST['searchterm'];
>>$searchterm=trim($searchtype);
|
И что вы думаете - поиск заработал. Конечно это не правильно так не будут удаляся лишние пробелы, а также не будет проверки указан ли критерий поиска или нет. Но на первых порах мне этого достаточно. Всем спасибо за ответы я думаю у меня еще появятся вопросы ))) | |
|
|
|