X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

5 страниц V   1 2 3 4 5 >
Открыть тему
Тема закрыта
> Поиск по сайту
BoL4oNoK
BoL4oNoK
Topic Starter сообщение 16.2.2011, 0:39; Ответить: BoL4oNoK
Сообщение #1


Доброй ночи.
Есть код:
[PHP] $col = $_GET['col1'].', '.$_GET['col2'].', '.$_GET['col3'].', '.$_GET['col4'];
$who = mysql_real_escape_string($_GET['who']);
$name = mysql_real_escape_string($_GET['name']);
$date = mysql_real_escape_string($_GET['date']);
$loc = mysql_real_escape_string($_GET['loc']);
$height = mysql_real_escape_string($_GET['height']);
$sex = mysql_real_escape_string($_GET['sex']);
$col = mysql_real_escape_string($col);
$other = mysql_real_escape_string($_GET['other']);
$cont = mysql_real_escape_string($_GET['cont']);
$table = $_GET['findtype'];

$searquery = '';
if (!empty($who)) {
if (!empty($searquery))
$searquery .= " AND `who`='{$who}'";
else
$searquery .= "`who`='{$who}'";
}
if (!empty($loc)) {
if (!empty($searquery))
$searquery .= " AND `loc`='{$loc}'";
else
$searquery .= "`loc`='{$loc}'";
}
if (!empty($sex)) {
if (!empty($searquery))
$searquery .= " AND `sex`='{$sex}'";
else
$searquery .= "`sex`='{$sex}'";
}
if (!empty($who)) {
if (!empty($searquery))
$searquery .= " AND `color`='{$col}'";
else
$searquery .= "`color`='{$col}'";
}

if (!empty($searquery)) {
$query = "SELECT * FROM ".$table." WHERE ".$searquery." ORDER BY `id` DESC";
} else {
$query = "SELECT * FROM ".$table." ORDER BY `id` DESC";
}
$sql = mysql_query($query);
$page = '';
while ($row = mysql_fetch_assoc($sql)) {
$page .= '<tr>
<td valign="top"><img alt="'.$row['name'].'" src="/foto/prev/'.$row['foto'].'" /></td>
<td valign="top"><a href="/base/view.php?id='.$row['id'].'" target="_blank">Пропал(а) '.$row['who'].'<br />'.$row['date'].' в (микро-)районе: '.$row['loc'].' пропал(а) '.$row['sex'].', окрас: '.$row['color'].'</a></td>
<td valign="top">'.$row['adddate'].'</td>
</tr>';
}[/PHP]

Возникла проблема с этим поиском. Не ищет, если в поле color указан только 1 цвет.
Как сделать нормальный поиск по этой базе?
Поиск занимает около 40-50 сек. (в бд только 5 записей). Это разве нормально или это может зависеть от компа юзера?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BoL4oNoK
BoL4oNoK
Topic Starter сообщение 16.2.2011, 2:58; Ответить: BoL4oNoK
Сообщение #2


И еще вопросик. Может кто знает как сделать подобное:
Есть БД, в которой хранится 100 записей. Из них выбирается 80(не факт, что идут по порядку). Далее идет постраничный вывод, по 20 записей на страницу(т.е. в данном случае это 4 страницы). Как в запросе к БД указать какой id материала считать последним?
Например:
id | title |
1 | Назв1 |
2 | Назв2 |
3 | Назв3 |
4 | Назв4 |
5 | Назв5 |
...
98 | Назв98 |
99 | Назв99 |
100 | Назв100 |

Из неё были выбраны строки с id: 1-7, 24, 26, 30-70 и т.д. Вывот идет в порядке убывания. Например мы вывели с 70 по 51. Как теперь сделать так, чтобы последний id = 50?

ЗЫ, ненаю как сформулировать правильно. Или подскажите вменяемый код постраничного вывода.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DoctorX
DoctorX
сообщение 16.2.2011, 2:59; Ответить: DoctorX
Сообщение #3


[PHP]$searquery = '';
if (!empty($who)) {
if (!empty($searquery))
$searquery .= " AND `who`='{$who}'";
else
$searquery .= "`who`='{$who}'";
}
if (!empty($loc)) {
if (!empty($searquery))
$searquery .= " AND `loc`='{$loc}'";
else
$searquery .= "`loc`='{$loc}'";
}
if (!empty($sex)) {
if (!empty($searquery))
$searquery .= " AND `sex`='{$sex}'";
else
$searquery .= "`sex`='{$sex}'";
}
if (!empty($who)) {
if (!empty($searquery))
$searquery .= " AND `color`='{$col}'";
else
$searquery .= "`color`='{$col}'";
}[/PHP]

--> Можно сделать изящней

[PHP]
if (is_set($who)) {
$sq[] = "`who`='{$who}'";
}
....
$searquery = implode($sq, ' AND '); // В параметрах не уверен

}[/PHP]


[PHP]if (!empty($searquery)) {
$query = "SELECT * FROM ".$table." WHERE ".$searquery." ORDER BY `id` DESC";
} else {
$query = "SELECT * FROM ".$table." ORDER BY `id` DESC";
} [/PHP]

-->

[PHP]
$where = (empty($searquery)) ? "" : "WHERE ".$searquery;
$query = "SELECT * FROM ".$table." ".$where." ORDER BY `id` DESC";

[/PHP]

(BoL4oNoK @ 16.2.2011, 02:39) *
Поиск занимает около 40-50 сек. (в бд только 5 записей).

Это не нормально. Но проблем в вашем коде не вижу. Сервер на локальной машине?

(BoL4oNoK @ 16.2.2011, 02:39) *
Не ищет, если в поле color указан только 1 цвет.

Не понял.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DoctorX
DoctorX
сообщение 16.2.2011, 3:01; Ответить: DoctorX
Сообщение #4


Для постраничного вывода используйте LIMIT в sql


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ottaviano
ottaviano
сообщение 16.2.2011, 3:05; Ответить: ottaviano
Сообщение #5


(BoL4oNoK @ 16.2.2011, 04:58) *
код постраничного вывода

код постраничного вывода
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BoL4oNoK
BoL4oNoK
Topic Starter сообщение 16.2.2011, 10:01; Ответить: BoL4oNoK
Сообщение #6


(Doc.X @ 16.2.2011, 04:59) *
Сервер на локальной машине?

Да, на локальной.

По остальным моментам отвечу как с учебы приду.. Спасибо откликнувшимся!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 16.2.2011, 12:11; Ответить: LifeUP
Сообщение #7


поиск обычно делают через LIKE
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BoL4oNoK
BoL4oNoK
Topic Starter сообщение 16.2.2011, 21:48; Ответить: BoL4oNoK
Сообщение #8


Исправил код поиска

[PHP]if (!empty($_GET['col1'])) $col[] = $_GET['col1'];
if (!empty($_GET['col2'])) $col[] = $_GET['col2'];
if (!empty($_GET['col3'])) $col[] = $_GET['col3'];
if (!empty($_GET['col4'])) $col[] = $_GET['col4'];
$color = (empty($col)) ? '' : implode(", ", $col);
$who = mysql_real_escape_string($_GET['who']);
$name = mysql_real_escape_string($_GET['name']);
$date = mysql_real_escape_string($_GET['date']);
$loc = mysql_real_escape_string($_GET['loc']);
$height = mysql_real_escape_string($_GET['height']);
$sex = mysql_real_escape_string($_GET['sex']);
$col = mysql_real_escape_string($color);
$other = mysql_real_escape_string($_GET['other']);
$cont = mysql_real_escape_string($_GET['cont']);
$table = $_GET['findtype'];

if (isset($who)) {
$sq[] = "`who` LIKE '{$who}'";
}
if (isset($loc)) {
$sq[] = "`loc` LIKE '{$loc}'";
}
if (isset($sex)) {
$sq[] = "`sex` LIKE '{$sex}'";
}
if (isset($col)) {
$sq[] = "`color` LIKE '{$col}'";
}
$searquery = implode(" AND ", $sq);

$where = (empty($searquery)) ? "" : "WHERE ".$searquery;
$query = "SELECT * FROM ".$table." ".$where." ORDER BY `id` DESC";
$sql = mysql_query($query);
$content = '';
while ($row = mysql_fetch_assoc($sql)) {
$content .= '<tr>
<td valign="top"><img alt="'.$row['name'].'" src="/foto/prev/'.$row['foto'].'" /></td>
<td valign="top"><a href="/base/view.php?id='.$row['id'].'" target="_blank">Пропал(а)
'.$row['who'].'<br />'.$row['date'].' в (микро-)районе: '.$row['loc'].'
пропал(а) '.$row['sex'].', окрас: '.$row['color'].'</a>
</td>
<td valign="top">'.$row['adddate'].'</td>
</tr>';
}[/PHP]

Но ничего не ищет. В чем ошибка?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ottaviano
ottaviano
сообщение 16.2.2011, 23:44; Ответить: ottaviano
Сообщение #9


(BoL4oNoK @ 16.2.2011, 23:48) *
Но ничего не ищет

что вы под этим подразумеваете?

- не работает скрипт и выводит ошибку - какую ошибку?

- никаких ошибок, просто ничего не выводит на страницу - если этот вариант, то пробовали ли вы показать содержимое переменной $content после цикла ?
[PHP]echo $content;[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BoL4oNoK
BoL4oNoK
Topic Starter сообщение 17.2.2011, 0:03; Ответить: BoL4oNoK
Сообщение #10


2 вариант. Пробовал выводить. Пустое значение(поля таблицы пустые)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
5 страниц V   1 2 3 4 5 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Требуется помощь по сайту на "ВордПресс"
Закрылся доступ в панель администратора
12 Tia2 1523 25.3.2024, 6:54
автор: Skyworker
Открытая тема (нет новых ответов) Аукцион 5 трастовых сайтов. Продам сайты с ИКС, возраст более 4-х лет, с небольшим доходом, Аукцион на 5 сайтов раздельный по каждому сайту
Аукцион на 5 сайтов раздельный по каждому сайту
0 rumiso 1007 18.9.2022, 18:39
автор: rumiso
Открытая тема (нет новых ответов) Smmsearch.net - поиск самой дешевой накрутки в социальных сетях.
0 Professor7717 3270 13.8.2021, 19:53
автор: Professor7717
Открытая тема (нет новых ответов) Поиск кодера в команду. PHP, Pyton. На постоянку.
7 getsend_mw 2808 3.2.2021, 21:15
автор: getsend_mw
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыЯ Вам тексты, Вы мне работы по сайту
1 Shelley 1054 28.10.2020, 13:49
автор: Telnor


 



RSS Текстовая версия Сейчас: 28.3.2024, 21:03
Дизайн