|
|
|
| нужна постраничная навигация + вывод в две колонки
вот скрипт он выводит то очень много то по 1 на стр. нужно чтоб например: в две колонки по 4 новости были.
<?php
// Устанавливаем соединение с базой данных
include "connect.php";
// Переменная хранит число сообщений выводимых на станице
$num = 2;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM options");
$posts = mysql_result($result, 0);
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM options LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
?>
<?php
echo "<table><tr>";
for($i = 0; $i < $num; $i++)
{
echo "
<td>".$postrow[$i]['img']."</td>
<td>".$postrow[$i]['adress']."</td>";
if ($i == '2')
{
$i = '0';
echo "</tr><tr>";
}
}
echo "</table>";
?>
<?php
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=?page=1><<</a>
<a href=?page='. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href=?page='. ($page + 1) .'>></a>
<a href=?page=' .$total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href=?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href=?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
?>
|
| |
|
|
|
|
|
|
|
для: dailik
(26.08.2010 в 12:58)
| | Копайте тут
оно конечно не то, что вам нужно, но если поковырять, то добьетесь нужного эффекта. | |
|
|
|
|
|
|
|
для: dailik
(26.08.2010 в 12:58)
| |
<table>
<?
while($postrow = mysql_fetch_assoc($result)) echo "<tr><td>" .$postrow['img']. "</td><td>" .$postrow['adress']. "</td></tr>";
?>
</table>
|
| |
|
|
|
|
|
|
|
для: sim5
(26.08.2010 в 13:57)
| | А зачем каждый раз создавать новый <tr> и <td>? | |
|
|
|
|
|
|
|
для: lElectroHardl
(26.08.2010 в 14:02)
| | А что, автор сказал, что у него таблица из одной строки? | |
|
|
|
|
|
|
|
для: sim5
(26.08.2010 в 14:04)
| | не получаеться то что выше написанно попробовал ниче не выводит, | |
|
|
|
|
|
|
|
для: dailik
(26.08.2010 в 14:22)
| | Значит вы хотите не того, что пишите. То что выше и будет давать в таблице по одной строке по две ячейки в каждой. Значит вам нужно иное - в двух ячейках изображение и текст, это одна новость, а других, соседних двух, тоже самое, но от другой новости. Так? | |
|
|
|
|
|
|
|
для: dailik
(26.08.2010 в 12:58)
| |
<?php
// Устанавливаем соединение с базой данных
include "connect.php";
// Переменная хранит число сообщений выводимых на станице
$num = 2;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM options");
$posts = mysql_result($result, 0);
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM options LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
?>
<?php
echo "<table><tr>";
while($postrow = mysql_fetch_assoc($result)) echo "<td>" .$postrow['img']. "</td><td>" .$postrow['adress']. "</td>";
echo "</tr></table>";
?>
<?php
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=?page=1><<</a>
<a href=?page='. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href=?page='. ($page + 1) .'>></a>
<a href=?page=' .$total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href=?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href=?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
?>
|
И не работает? | |
|
|
|
|
|
|
|
для: lElectroHardl
(26.08.2010 в 14:28)
| | А вы таблицу свою посмотрите внимательно, что получаете - у вас будет одна строка с множеством ячеек. | |
|
|
|
|
|
|
|
для: sim5
(26.08.2010 в 14:38)
| | Да, недоглядел. | |
|
|
|
|
|
|
|
для: lElectroHardl
(26.08.2010 в 14:50)
| | нет не получилось | |
|
|
|
|
|
|
|
для: dailik
(26.08.2010 в 15:56)
| | Значит так. Вы либо на вопросы отвечайте, либо боком....
В две колонки, надо полагать, это 4 колонки таблицы по две ячейки в строке для каждой темы. Так как вы получаете ряды записей, то во вторые две ячейки должны попасть записи каждого второго ряда, то есть четные. Значит при выводе надо проверять, если нечетная строка записи, то выводить открывающий тег TR, а если четная, то закрыващий:
<?
$q = mysql_query("SELECT * FROM table");
$i = 0;
echo "<table border=1>";
while ($row = mysql_fetch_assoc($q)) {
if(!($i & 1)) echo "<tr>";
echo "<td>" .$row['name1']. "</td><td>" . $row['name2'] . "</td>";
if($i & 1) echo "</tr>";
$i++;
}
echo "</table>";
?>
|
Но кроме этого, если вы хотите чтобы было две колонки, надо либо классы указывать средним ячейкам, либо прятать по две ячейки в DIV и посредством CSS отображать колонки. | |
|
|
|
|
|
|
|
для: sim5
(26.08.2010 в 16:12)
| |
<?php
for($i = 0; $row = mysql_fetch_assoc($q); $i++){
if(!($i & 1)) echo "<tr>";
echo "<td>" .$row['name1']. "</td><td>" . $row['name2'] . "</td>";
if($i & 1) echo "</tr>";
}
|
Люблю иногда поизвращаться. | |
|
|
|
|
|
|
|
для: nikita2206
(26.08.2010 в 16:16)
| | Извращайтесь на здоровье. | |
|
|
|
|
 11.6 Кб |
|
|
для: nikita2206
(26.08.2010 в 16:16)
| | щас попробую то что выше а вот что мне надо нарисовал в файле приклеплен | |
|
|
|
|
|
|
|
для: dailik
(26.08.2010 в 16:34)
| | Выводите как выше, в DIV обрамляйте каждые две ячейки, и им отступы указать соответствующие. | |
|
|
|
|
|
|
|
для: sim5
(26.08.2010 в 16:37)
| | большое спасибо все получилось !!!!!!!
выводиться так как я и хотел очень признателен вам !!!
спасибо всем и огромное спасибо sim5 | |
|
|
|
|
|
|
|
для: dailik
(26.08.2010 в 16:42)
| | Не за что, ибо лучший способ был бы поместить все в два элемента DIV, это и были две колонки. | |
|
|
|