|
 3.5 Кб |
|
| Понимаю, что тема простая, обсуждалась не раз, но ничего не получается, пробился уже два дня, нервы сдают. Помогите!
Нужно вывести << 1|2|3| >> и т.д., активное - жирным и возможность выбора, сколько строк выводить на страницу.
Прикладываю мой файл, а то может мешают навигации уже имеющиеся запросы. | |
|
|
|
|
|
|
|
для: SS
(21.04.2005 в 23:19)
| | Тема действительно обсуждалась много раз, достаточно взглянуть на внушительный список ссылок в теме http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3044. Но когда над скриптом сидишь долго, никакие ссылки уже не помогают... не могли бы вы приложить кусочек таблицы, для того чтобы было проще отлаживать скрипт - кодирование в слепую может привести к ошибкам. | |
|
|
|
|
|
|
|
для: cheops
(21.04.2005 в 23:38)
| | Все поля таблицы перечислены в запросе в приложенном файле, или Вы имели ввиду что-то другое под "кусочком таблицы"? Все что угодно!!! :)
$query = "SELECT id, url, img0, img, nominal, material, grade, weight, diameter, axis, obverse, reverse, ruler, note_ruler, date_start, date_end, link, mint, date1_stamp, date2_stamp, RIC, BMC, Cohen, RSC, RCTV, reference, link, notes
FROM coins
|
| |
|
|
|
|
|
|
|
для: SS
(22.04.2005 в 01:09)
| | Просто на восстановление базы данных у любого кто будет отлаживать постраничную навигацию уйдёт много времени у вас же она уже готова и если бы вы приложили файл с дампом таблицы coins (структура таблицы CREATE TABLE и несколько записей INSERT) было бы просто замечательно. Получить дамп можно при помощи Web-интерфейса phpMyAdmin (меню Экспорт), а так же при помощи консольной утилиты mysqldump
base - имя базы данных, base.txt - файл в который он будет сохранён. | |
|
|
|
|
|
|
|
для: cheops
(22.04.2005 в 12:49)
| | Я понял, прикладываю. | |
|
|
|
|
|
|
|
для: SS
(22.04.2005 в 19:14)
| | Посмотрите скрипт в аттаче. | |
|
|
|
|
|
|
|
для: cheops
(23.04.2005 в 00:11)
| | Cheops! огромное, пребольшое, человеческое спасибо! :)
Ма-а-ленький глюк: при нажатии на ссылку [31-40] она превращается в активном виде в [1-40].
Вместо
echo "[".(($i - 1)*$count + 1)."-".$i*$pnumber."]";
|
пишем
echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]";
|
Еще раз спасибо! | |
|
|
|
|
|
|
|
для: SS
(23.04.2005 в 01:25)
| | Ага есть такое дело. | |
|
|
|
|
|
|
|
для: cheops
(23.04.2005 в 11:44)
| |
$query = "SELECT *
FROM coins
WHERE
nominal = '".$nominal."'
LIMIT $begin, $pnumber";
// Выполняем запрос
$tb = mysql_query($query);
// Проверяем правильность выполнения запроса
if(!$tb) exit(mysql_error());
$i = $begin;
$idd=coins.id;
// получаем количество строк
$amount = @mysql_result(mysql_query("SELECT count(id) as goods_total FROM coins"),0);
print "Всего найдено: $amount";
|
1. Выводит все найденные записи в таблице и навигация тоже получается полной. Как $amount сделать равной только числу найденных записей?
2. Чтобы показывало навигацию не все найденные страницы, а только на 10:
Вместо
[1-9][10-19][20-29][30-39][40-49][50-59][60-69][70-79][80-89][90-99][100-109][110-119]
[120-129][130-139][140-149][150-159][160-169][170-179]
было
[1-9][10-19][20-29][30-39][40-49][50-59][60-69][70-79][80-89][90-99] [следующие 10]
или, если на середине:
[предыдущие] [80-89][90-99][100-109][110-119][120-129][130-139][140-149][150-159][160-169][170-179] [следующие] | |
|
|
|
|
|
|
|
для: SS
(01.05.2005 в 03:15)
| | 1. Для этого следует либо восстановить весь запрос, т.е.
<?php
$query = "SELECT count(id) as goods_total FROM coins WHERE nominal = '".$nominal."'";
$amount = @mysql_result(mysql_query($query),0);
?>
|
либо после блока
<?php
$query = "SELECT *
FROM coins
WHERE
nominal = '".$nominal."'
LIMIT $begin, $pnumber";
// Выполняем запрос
$tb = mysql_query($query);
// Проверяем правильность выполнения запроса
if(!$tb) exit(mysql_error());
?>
|
дописать
<?php
$amount = mysql_num_rows($tb);
?>
|
тогда второй запрос не понадобится. | |
|
|
|
|
|
|
|
для: SS
(01.05.2005 в 03:15)
| | 2. А не подойдёт ли вам движок постраничной навигации, реализованный у нас на форуме (внизу после списка тем)? | |
|
|
|
|
|
|
|
для: cheops
(01.05.2005 в 12:49)
| | Извиняюсь - был в цейтноте. Да, думаю, подойдет. | |
|
|
|
|
|
|
|
для: cheops
(01.05.2005 в 12:49)
| | Мне подойдет этот движок! | |
|
|
|
|
|
|
|
для: SS
(08.05.2005 в 03:11)
| | Хм... как-то пропустил ваше первое сообщение от 6, посмотрите скрипт в аттаче | |
|
|
|
|
|
|
|
для: cheops
(08.05.2005 в 18:37)
| | Да, спасибо, скрипт работает хорошо на обычной странице.
Но для поиска не работает. Если дописываю
<?php
$amount = mysql_num_rows($tb);
?>
|
то выводит только то количество, которое указано в $pnumber, или вообще ссылки на все страницы, если без этого кода и они при этом не работают.
Что нужно, чтобы для поиска выводил то количество ссылок для навигации, которое нашел? Т.е., если нашел 55 строк, а $pnumber=10, то ссылок навигации, соответственно, 6: [1-10] [11-20] [21-30] [31-40] [41-50] [50-55] | |
|
|
|
|
|
|
|
для: cheops
(08.05.2005 в 18:37)
| | С поиском управился, спасибо. Хочу теперь вернуться к навигации. Напоминаю про последний вопрос в этой теме, оставшийся без ответа. | |
|
|
|
|
|
|
|
для: SS
(24.05.2005 в 20:04)
| | Да, как-то пропустил это сообщение. Пользоваться конструкцией
<?php
$amount = mysql_num_rows($tb);
?>
|
совместно с ключевым словом LIMIT уже не получится - нужно делать повторный запрос к базе данных без LIMIT, но условие WHERE в котором в котором полностью совпадает с поисковым запросом,
<?php
$query = "SELECT COUNT(*) AS total FROM ... WHERE ...";
$tot = mysql_query($query);
if(!$tot) exit("Ошибка в SQL-запросе");
$amount = mysql_result($tot,0);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(24.05.2005 в 23:36)
| | Да, так показывает правильно. Но при попытке перейти по навигации на следующую страницу выдает ошибку, как если бы отправлены из формы пустые данные:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY date_start, RIC, RIC_n, RIC_add LIMIT 10' at line 4
|
Посмотрите что где не так. Файл прикладываю. | |
|
|
|
|
|
|
|
для: SS
(25.05.2005 в 02:17)
| | У нас при переходе по ссылке теряются данные переданные из формы (POST-данные), наверное их нужно будет помещать в сессию. | |
|
|
|
|
|
|
|
для: cheops
(26.05.2005 в 13:42)
| | Извиняюсь за молчание, был в отпуске, возвращаюсь к теме.
Если честно, не очень понял про сессию.
Возможно ли обойтись без нее? У нас ведь двадцать полей. | |
|
|
|
|
|
|
|
для: SS
(07.06.2005 в 00:18)
| | Ну вот как раз поэтому удобнее их в сессию запихать, ведь через строку запроса (в URL) передавать их все от странице к странице не очень удобно, да и адрес примет угрожающий вид. | |
|
|
|
|
|
|
|
для: cheops
(07.06.2005 в 01:09)
| | Хорошо, но только я понятия не имею как их запихивать в сессию. Если не трудно, то хотелось бы пример для моего случая. | |
|
|
|
|
|
|
|
для: cheops
(07.06.2005 в 01:09)
| | Мое сообщение, видимо, осталось незамеченным. Хочу сказать, что сам я с сессией в таком сложном случае не справлюсь. | |
|
|
|
|
|
|
|
для: SS
(09.06.2005 в 13:49)
| | Да... как то вас пропустил... если вам не сложно не могли бы вы выложить текущую HTML-форму и её обрботчик, дело в том, что потребуется изменить код в нескольких местах, я бы их мог пометить комментарием
Если не хотите выкладывать здесь можете прислать мне их на почту simdyanov@softtime.ru. | |
|
|
|
|
|
|
|
для: cheops
(09.06.2005 в 22:37)
| | Спасибо, сама сессия работает. Только теперь другая проблема - не происходит фактической смены страницы. Т.е. переход есть, но данные на всех страницах остаются с первой страницы. | |
|
|
|
|
|
|
|
для: SS
(26.06.2005 в 02:01)
| | А да... В запросе
<?php
$query = "SELECT *
FROM coins
WHERE $tmp1 $tmp2 $tmp3 $tmp4 $tmp5 $tmp6 $tmp7 $tmp8 $tmp9 $tmp10 $tmp11 $tmp12 $tmp13 $tmp14 $tmp15 $tmp16 $tmp17 $tmp18 $tmp19 $tmp20
ORDER BY date_start, RIC, RIC_n, RIC_add
LIMIT $pnumber";
?>
|
следует исправить конструкцию LIMIT
<?php
$query = "SELECT *
FROM coins
WHERE $tmp1 $tmp2 $tmp3 $tmp4 $tmp5 $tmp6 $tmp7 $tmp8 $tmp9 $tmp10 $tmp11 $tmp12 $tmp13 $tmp14 $tmp15 $tmp16 $tmp17 $tmp18 $tmp19 $tmp20
ORDER BY date_start, RIC, RIC_n, RIC_add
LIMIT $begin, $pnumber";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.06.2005 в 02:12)
| | ВСЁ, РАБОТАЕТ! СПАСИБО! | |
|
|
|