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



 

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

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

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Деление количества вывода позиций
pomp
pomp
Topic Starter сообщение 2.12.2008, 1:43; Ответить: pomp
Сообщение #1


Есть форма. POST-ит данные в БД. Есть админка. Вывод, редактирование, скрыть \показать, удалить. При посте каждой записи БД присваеваеться свой ID. Далее... В админке изымаються все новости из БД и выводяться на одной странице, не смотря на то что присвоено позиции. hide\show. Єто тоже думаю понятно. Далее. На транице вывода переменная определяет строку hide, и выводит только те у которых show. казалось бы все просто. НО.....

Мне нужно по 5 позиций на странице:
Есть у меня такой код:
[php]
\\Тут у меня ссылка на следующие 5 новостей. $all_number = 5 (забито в конфиге)
if($start > 0) echo "<a class='linkblock' href='index.php?start=".($start - $all_number)."'>Следующие $all_number ";
\\это просто разделитель
if($start > 0 && $start + $all_number < $total)
{
\\тут картинка
}
\\Ссылка на предыдущие 5 новостей
if($start + $all_number < $total) echo "<a class='linkblock' href='index.php?start=".($start + $all_number)."'>Предыдущие $all_number ";
[/php]
Все рабоает, НО: (долго я шел к этому:rolleyes:)
При удалении позиций, её порядковый номер почемуто остаеться. Тоесть У меня есть 5 позиций, 3 я удалил. Осталось 2. Публикую новую, а она вместо "3" получаеть ID "6". Проблема в том что когда новостей больше. Появляються пустые "прошелкивания". Надеюсь изложил доступно)))
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 2.12.2008, 2:05; Ответить: Webmaster_hb
Сообщение #2


естественно, это поле автоинкремент, и его использовать для количества сообщений нельзя

для подсчета сообщений используйте дополнительный запрос select count(*) с таким же условием, получите количество постов
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pomp
pomp
Topic Starter сообщение 2.12.2008, 2:08; Ответить: pomp
Сообщение #3


[php]
$tot = mysql_query("SELECT count(*) FROM legkovie WHERE hide='show'");
if ($tot) $total = mysql_result($tot,0);
[/php]
Дык использую
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 2.12.2008, 2:11; Ответить: Webmaster_hb
Сообщение #4


так причем тогда тут ID?
надо просто использовать LIMIT $all_number*($page-1),$all_number в конце запроса
когда находишься на первой странице LIMIT 0,5
когда на второй - LIMIT 5,5
на третей - LIMIT 10,5

а поле ID идет боком
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pomp
pomp
Topic Starter сообщение 2.12.2008, 16:59; Ответить: pomp
Сообщение #5


Запутался... Хорошо. Поле ID являеться ключем. Его опускаем. А подсчет по какому полу тогла вести? Условия [B]WHERE hide='show'[/B] достаточно?
Ставлю лимит $all_number=5
[php]
$new = mysql_query("SELECT * FROM legkovie
WHERE hide='show'
ORDER BY putdate DESC
LIMIT $all_number");
[/php]
Результат - показ 5-ти последних позиций. Теперь нужно огранизовать переход на "псевдо" страницу. Страница получаеться таже, но другие значения. Каким оператором пользываться?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 2.12.2008, 17:07; Ответить: Webmaster_hb
Сообщение #6


LIMIT $all_number*($page-1),$all_number

$page - номер текущей страницы

естественно что рассчет этих параметров надо произвести в PHP и в запрос вставить уже сами значения
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pomp
pomp
Topic Starter сообщение 2.12.2008, 17:18; Ответить: pomp
Сообщение #7


Тоесть я делаю 2 конекта к базе, первым делаю расчет, а вторым (с LIMIT $all_number*($page-1),$all_number) получаю уже расчитаные значения, так?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 2.12.2008, 17:43; Ответить: Webmaster_hb
Сообщение #8


правильно, я писал об этом ранее
первый запрос, чтобы получить количество всех сообщений! count(*) работает очень быстро независимо от количества записей в таблице
имя общее количество записей и количество выводимых на одну страницу, не сложно посчитать какое будет количество страниц
+ самое главное, ограничить количество получаемых строк в запросе используя LIMIT
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pomp
pomp
Topic Starter сообщение 2.12.2008, 18:39; Ответить: pomp
Сообщение #9


Ну у меня получилось так. Вроде работает.
[php]
<?php
require_once("config.php");
$tot = mysql_query("SELECT count(*) FROM legkovie WHERE hide='show'");
if ($tot)
{
$all_number = mysql_result($tot,0); //колиичество позиций
}
else puterror("Ошибка!");

$pages=ceil($all_number/$pnumber); //колличество страниц
?>
[/php]

а вот переключение страниц
[php]
<?
for ($i=0; $i<$pages; $i++){
$page_number=$i*$pnumber;
if ($page_number!=$page) {
echo "<a href=test.php?page=$page_number target=_self>".($i+1)."</a>";
} else {
echo ($i+1);
};
};
?>
[/php]
Вторым запросом к БД я вывожу позиции уже с LIMIT. А как тогда организовать переключение? Как с подлкючением связать? Когда я ставлю LIMIT $all_number*($page-1),$all_number после этого всего, мне выдает ошибку конекта (
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 2.12.2008, 18:49; Ответить: Webmaster_hb
Сообщение #10


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Проверка позиций сайтов в поисковых системах с помощью Positon.ru
Мониторинг продвижения сайтов
183 Positon 179462 12.4.2024, 8:32
автор: Positon
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПродвижение сайтов в ТОП Яндекса за 2 недели. Рост позиций и трафика
Бесплатный тест
19 Konrod 9876 18.3.2024, 10:04
автор: Konrod
Горячая тема (нет новых ответов) Superobmen.biz - сервис ручного ввода и вывода Приват24 (грн) <--> WM, ЯД, QIWI
удобство, низкие комиссии, скидки постоянным клиентам!
52 Sostavitel 38706 10.2.2023, 1:04
автор: Sostavitel
Открытая тема (нет новых ответов) Сервис ввода, вывода электронных денег | Tochkaobmena.com
Сервис ввода, вывода электронных денег
11 tochkaobmena 6497 1.2.2021, 12:33
автор: tochkaobmena
Открытая тема (нет новых ответов) Внешнее SEO продвижение и поддержка позиций сайта
4 Jaguar777 7413 1.5.2020, 20:27
автор: Jaguar777


 



RSS Текстовая версия Сейчас: 18.4.2024, 6:42
Дизайн