-
http://xayam.900megs.com/проблема такая. Короче если я ввожу в поле Пользователь значение 'xayam' то все нормально - http://xayam.900megs.com/index.php?s=&pnumber=30&forum=&user=xayam . Заметьте что выводится две ветки из форума Базы. Так вот если добавить ограничение где искать 'Базы', то отобразиться одна ветка - http://xayam.900megs.com/index.php?s=&pnumber=30&forum=%D0%91%D0%B0%D0%B7%D1%8B&user=xayamВ чем может быть проблема? примерно такой код
if (isset($_GET['pnumber']) and $_GET['pnumber'] != '') $pnumber = $_GET['pnumber']; else $pnumber = 30;
if (isset($_GET['s'])) $s = $_GET['s']; else $s = '';
if (isset($_GET['user'])) $user = $_GET['user']; else $user = '';
if (isset($_GET['forum'])) $forum = $_GET['forum']; else $forum = '';
if (isset($_GET['page'])) $page = $_GET['page']; else $page = 1;
if (isset($_GET['order'])) $order = $_GET['order']; else $order = '';
$start = ($page - 1) * $pnumber + 1;
if ($user == '') $myuser = 1; else $myuser = "LGN ='\".$user.\"'";
if ($forum == '') $myforum = 1; else $myforum = "DSC = '\".$forum.\"'";
if ($s == '') $against = 1; else $against = "match(TITLE) against('$s' IN BOOLEAN MODE)";
$where = "where ($myuser) and ($myforum) and ($against)";
$query = "select * from trd $where LIMIT $start, $pnumber";
$query2= "select COUNT(ID_TRD) from trd $where";
$tot = mysql_query($query2);
echo $query;
echo '<br />';
echo $query2;
if (!$tot) exit(mysql_error());
$total = mysql_result($tot, 0);
$number = (int)($total/$pnumber);
if ((float)($total/$pnumber) - $number != 0) $number++;
if ($total > 1)
else
}
?>
</div>
<hr />
<?php
$result = mysql_query($query);
$i = $start;
echo '<table width=\"100%\" border=\"0\"><tr><th align=\"center\" width=\"5%\">Номер</th><th align=\"center\" width=\"*\">Вопрос</th><th align=\"center\" width=\"5%\">Ответов</th><th align=\"center\" width=\"15%\">Ник</th><th align=\"center\" width=\"5%\">Форум</th><th align=\"center\" width=\"20%\">Дата</th></tr>';
if (!$result) exit(mysql_error());
if (mysql_num_rows($result) > 0)
while ($row = mysql_fetch_assoc($result))
echo '</table>';
?>
<hr />
<div>Страницы:
<?php
for ($i = 1; $i <= $number; $i++)
else
}
echo '</div>';
} else
if (isset($_GET['s'])) echo '<div align=\"center\"><font color=\"red\">Ничего не найдено!</font></div>';
?>
-
Почему по DSC поиск ? Может менялся.
-
BTW,
В MySQL можно использовать SELECT SQL_CALC_FOUND_ROWS `field1`... FROM ... WHERE ... LIMIT ...
Тогда чтобы получить количество записей не ограниченной LIMIT, можно сделать SELECT FOUND_ROWS()
-
по скрипту трудно сказать что не так.
Получите SQL для второго случая и уже с этим SQL, без PHP, разбирайтесь - сколько выдает записей и почему
-
со скриптом не помогу, не спец... но вопрос имеется - а уверен что в первом поиске все показано? может дело не в доп параметре, а в том, что оно просто последнюю запись не показывает (итерация в цикле гдето завершается раньше, т.к. неправильно конец диапазона определен, на один меньше. это вообще частая ошибка независимо от языка...) получается на 2х записях видно, а на больше ну не 67, а 66 кто внимание на одну обратит.
-
> сколько выдает записей выдает скорее всего все, имхо, формирует не все, имхо. просто в запросе условием такую ошибку на избирательную не выдачу чегото сделать гораздо сложнее чем неправильно сформировать страницу по выданному.
-
> сколько выдает записей
во втором запросе выдает одну запись, отдельно через sql manager проверил
> почему
вот это мне непонятно, похоже на глюк mysql
-
запрос по начинающим тоже на 1 меньше выдает, а вот с основной, обе... не может быть такой избирательности в одном и том же условии запроса. вариантов 2 либо данные по которым отбор отличаются (в одном случае например вбито "Базы" в другом "Базы ") либо ты неверно формируешь. вывел бы где для теста общее количество полученного, гадать бы не прищлось.
-
> а вот с основной обе "чудо" с основной можно обьяснить тем что в первом запросе их тоже 3, и последняя была и тут именно последней 67й... и тоже "откинутой".
-
логично получается... 58 записей из прочего (с хаям) 4 из начинающих 3 из основных 2 из базы ищем все получаем - 58 + 4 + 3 + 2 = 67 (-1 из основной) = 66 ишем прочее получаем - 57 из 58ми начинающих получаем - 3 из 4х основных получаем - 2 из 3х (не видна таже что из первого запроса) базы получаем - 1 из 2х.
все сходится, ты теряешь запись... всегда. где ты это делаешь хз. но не в запросе точно.
-
> sniknik © (30.08.08 11:55) [7] > вывел бы где для теста общее количество полученного, гадать > бы не прищлось.
а там выводит сверху слева - найдено столько то
-
> все сходится, ты теряешь запись... всегда. где ты это делаешь > хз. но не в запросе точно
да по ходу ты прав, запрос select COUNT(ID_TRD) from trd where (LGN ='xayam') and (DSC = 'Основная') and (1) возвращает 3, а не 2 (( значит ошибка в скрипте есть
-
спасибо по ходу нашел ошибку (точнее ошибки), сейчас подправлю и закачаю
-
все народ наконец то я доделал это DMSearch пользуйтесь в свое удовольствие, сорри что на бесплатном хостинге (с рекламой), но по-другому вряд ли возможно. Долго я этот DMS пытался закачать на бесплатный хостинг, по ходу дела пришлось решить несколько ограничений такого хостинга, во-первых, нет поддержки xml xsl, во-вторых, в одной папке не может быть больше 2000 файлов, сейчас все эти ограничения преодолены, баги, которые я нашел исправлены. Удачи. P.S. Администрации сайта. Можно ли эту ссылку http://xayam.900megs.com указать возле поисковой строки для поиска по старым веткам?
-
> xayam (30.08.2008 12:31:11) [11]
Зачем and (1)?
-
> xayam © (30.08.08 12:54) [13]
сервер не найден. А что не купишь дешевый нормальный хостинг? это всего сотня рубликов в месяц
-
> Anatoly Podgoretsky © (30.08.08 13:13) [14] > Зачем and (1)?
да это чтоб лишних проверок не делать
> KilkennyCat © (30.08.08 13:14) [15] > сервер не найден. > А что не купишь дешевый нормальный хостинг? это всего сотня > рубликов в месяц
а у меня работает
в общем не до платного хостинга, это же надо его поддерживать постоянно, каждый раз деньги платить, эта суета мне нафиг не нужна
-
"взлетит" - найдена всего одна ветка!?
-
> xayam © (30.08.08 13:17) [16]
ну, ежели нормально искать будет :) я те могу предоставить на своем место.
-
> KilkennyCat © (30.08.08 13:17) [17] > "взлетит" - найдена всего одна ветка!?
ну это немного не в тему запрос, форум то дельфийский, например 'свойство' выводит 177 веток
|