Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: постраничный вывод помогите, вывод в две колонки
 
 автор: dailik   (26.08.2010 в 12:58)   письмо автору
 
 

нужна постраничная навигация + вывод в две колонки
вот скрипт он выводит то очень много то по 1 на стр. нужно чтоб например: в две колонки по 4 новости были.




<?php 
// Устанавливаем соединение с базой данных 
include "connect.php"
// Переменная хранит число сообщений выводимых на станице 
$num 2
// Извлекаем из URL текущую страницу 
$page $_GET['page']; 
// Определяем общее число сообщений в базе данных 
$result mysql_query("SELECT COUNT(*) FROM options"); 
$posts mysql_result($result0); 
// Находим общее число страниц 
$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 0$page2left ' <a href=?page='. ($page 2) .'>'. ($page 2) .'</a> | '
if(
$page 0$page1left '<a href=?page='. ($page 1) .'>'. ($page 1) .'</a> | '
if(
$page <= $total$page2right ' | <a href=?page='. ($page 2) .'>'. ($page 2) .'</a>'
if(
$page <= $total$page1right ' | <a href=?page='. ($page 1) .'>'. ($page 1) .'</a>';

// Вывод меню 
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage

?> 

  Ответить  
 
 автор: lElectroHardl   (26.08.2010 в 13:27)   письмо автору
 
   для: dailik   (26.08.2010 в 12:58)
 

Копайте тут
оно конечно не то, что вам нужно, но если поковырять, то добьетесь нужного эффекта.

  Ответить  
 
 автор: sim5   (26.08.2010 в 13:57)   письмо автору
 
   для: 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>  

  Ответить  
 
 автор: lElectroHardl   (26.08.2010 в 14:02)   письмо автору
 
   для: sim5   (26.08.2010 в 13:57)
 

А зачем каждый раз создавать новый <tr> и <td>?

  Ответить  
 
 автор: sim5   (26.08.2010 в 14:04)   письмо автору
 
   для: lElectroHardl   (26.08.2010 в 14:02)
 

А что, автор сказал, что у него таблица из одной строки?

  Ответить  
 
 автор: dailik   (26.08.2010 в 14:22)   письмо автору
 
   для: sim5   (26.08.2010 в 14:04)
 

не получаеться то что выше написанно попробовал ниче не выводит,

  Ответить  
 
 автор: sim5   (26.08.2010 в 14:36)   письмо автору
 
   для: dailik   (26.08.2010 в 14:22)
 

Значит вы хотите не того, что пишите. То что выше и будет давать в таблице по одной строке по две ячейки в каждой. Значит вам нужно иное - в двух ячейках изображение и текст, это одна новость, а других, соседних двух, тоже самое, но от другой новости. Так?

  Ответить  
 
 автор: lElectroHardl   (26.08.2010 в 14:28)   письмо автору
 
   для: 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($result0);  
// Находим общее число страниц  
$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 0$page2left ' <a href=?page='. ($page 2) .'>'. ($page 2) .'</a> | ';  
if(
$page 0$page1left '<a href=?page='. ($page 1) .'>'. ($page 1) .'</a> | ';  
if(
$page <= $total$page2right ' | <a href=?page='. ($page 2) .'>'. ($page 2) .'</a>';  
if(
$page <= $total$page1right ' | <a href=?page='. ($page 1) .'>'. ($page 1) .'</a>'

// Вывод меню  
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;  

?>

И не работает?

  Ответить  
 
 автор: sim5   (26.08.2010 в 14:38)   письмо автору
 
   для: lElectroHardl   (26.08.2010 в 14:28)
 

А вы таблицу свою посмотрите внимательно, что получаете - у вас будет одна строка с множеством ячеек.

  Ответить  
 
 автор: lElectroHardl   (26.08.2010 в 14:50)   письмо автору
 
   для: sim5   (26.08.2010 в 14:38)
 

Да, недоглядел.

  Ответить  
 
 автор: dailik   (26.08.2010 в 15:56)   письмо автору
 
   для: lElectroHardl   (26.08.2010 в 14:50)
 

нет не получилось

  Ответить  
 
 автор: sim5   (26.08.2010 в 16:12)   письмо автору
 
   для: 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 отображать колонки.

  Ответить  
 
 автор: nikita2206   (26.08.2010 в 16:16)   письмо автору
 
   для: 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>";
}

Люблю иногда поизвращаться.

  Ответить  
 
 автор: sim5   (26.08.2010 в 16:17)   письмо автору
 
   для: nikita2206   (26.08.2010 в 16:16)
 

Извращайтесь на здоровье.

  Ответить  
 
 автор: dailik   (26.08.2010 в 16:34)   письмо автору
11.6 Кб
 
   для: nikita2206   (26.08.2010 в 16:16)
 

щас попробую то что выше а вот что мне надо нарисовал в файле приклеплен

  Ответить  
 
 автор: sim5   (26.08.2010 в 16:37)   письмо автору
 
   для: dailik   (26.08.2010 в 16:34)
 

Выводите как выше, в DIV обрамляйте каждые две ячейки, и им отступы указать соответствующие.

  Ответить  
 
 автор: dailik   (26.08.2010 в 16:42)   письмо автору
 
   для: sim5   (26.08.2010 в 16:37)
 

большое спасибо все получилось !!!!!!!
выводиться так как я и хотел очень признателен вам !!!

спасибо всем и огромное спасибо sim5

  Ответить  
 
 автор: sim5   (26.08.2010 в 17:11)   письмо автору
 
   для: dailik   (26.08.2010 в 16:42)
 

Не за что, ибо лучший способ был бы поместить все в два элемента DIV, это и были две колонки.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования