За последние 24 часа нас посетили 15624 программиста и 1540 роботов. Сейчас ищут 827 программистов ...

Вывод данных в цикле в 2 колонки

Тема в разделе "PHP для новичков", создана пользователем Russianmaniac, 31 май 2011.

  1. Russianmaniac

    Russianmaniac Активный пользователь

    С нами с:
    29 дек 2010
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте! Помогите пожалуйста вывести следующим образом данные для каталога, заполняя строки в 2 колонки слева на право. Для того чтобы так же выводить в 2 колонки с базы данных статьи , новости и например каталог.

    [​IMG]
    или
    [​IMG]
     
  2. ATI

    ATI Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Зачем дублировать тему?

    PHP:
    1.  
    2. <?php
    3.  
    4. $array = array(
    5.     0=>'post1',
    6.     1=>'post2',
    7.     2=>'post3',
    8.     3=>'post4',
    9.     4=>'post5',
    10.     5=>'post6',
    11.     6=>'post7',
    12. );
    13.  
    14. ?>
    15.  
    16. <?php foreach($array as $key => $value): ?>
    17.     <span style="float:<?php echo $key % 2 ? 'right' : 'left'; ?>">
    18.         <?php echo $value; ?>
    19.     </span>
    20. <?php endforeach; ?>
    21.  
    22.  
    Пойми алгоритм и решишь свою задачу.
     
  3. Russianmaniac

    Russianmaniac Активный пользователь

    С нами с:
    29 дек 2010
    Сообщения:
    14
    Симпатии:
    0
    а как в мой код это можно внедрить ? (
     
  4. ATI

    ATI Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Нужно отказаться от do while и использовать либо цикл как в моем примере т.е. foreach, также можно заюзать просто while, ну или for.
     
  5. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    не, foreach не прокатит - на входе же мускульный рекордсет, его можно фетчить только мускульными функциями типа mysql_fetch_assoc. чтобы использовать foreach, нужно сначала профетчить весь рекордсет в ассоциативный массив.
    do while действительно в данном случае не приемлим, поскольку является циклом с пост-условием, что означает, что тело цикла выполнится хотя бы раз, а если запрос ничего не вернул? самое разумное - обычный while
    короче, вываливай сюда весь код, что есть
     
  6. Russianmaniac

    Russianmaniac Активный пользователь

    С нами с:
    29 дек 2010
    Сообщения:
    14
    Симпатии:
    0
    НА 2 столба делится, но постраничная навигация при этом косячит. Например расчитывается 3 страницы , по логике должно выйти по 2 статьи на двух страницах и 1 статься на послденей странице, а выходят по 5 страниц одинаковых на трех страницах .

    Код (Text):
    1.       
    2.  $num2 = 20;
    3. $cols2 = 2;
    4. $i = 0;
    5.  
    6. echo "<table><tr>";
    7.  
    8. $result2 = mysql_query("SELECT * FROM articles  WHERE cat='$cat' LIMIT 0 , $num2",$db);
    9. $n = mysql_num_rows($result2);
    10. $m = $cols2 * ceil($n / $cols2);
    11. while($i < $m)
    12.  {
    13.  $i++;
    14.  $row = mysql_fetch_assoc($result2);
    15.  if ($i <= $n)
    16.      echo "<td><p class='news_title'><a href=view_post.php?id=$row[id]>$row[title]  </a><br> $row[description]</p></td> ";
    17.  
    18.  else
    19.      echo "<td> </td>";
    20.  
    21.  if ($i < $m and $i % $cols2 == 0)
    22.      echo "</tr><tr>";
    23.  }
    24. echo "</tr></table>";
    25.  
    26.  $result77 = mysql_query("SELECT str FROM options", $db);   //узнаем количество постов
    27. $myrow77 = mysql_fetch_array($result77);
    28. $num = $myrow77["str"];
    29. // Извлекаем из URL текущую страницу
    30. @$page = $_GET['page'];
    31. // Определяем общее число сообщений в базе данных
    32. $result00 = mysql_query("SELECT COUNT(*) FROM articles WHERE cat='$cat'");
    33. $temp = mysql_fetch_array($result00);
    34. $posts = $temp[0];
    35. // Находим общее число страниц
    36. $total = (($posts - 1) / $num) + 1;
    37. $total =  intval($total);
    38. // Определяем начало сообщений для текущей страницы
    39. $page = intval($page);
    40. // Если значение $page меньше единицы или отрицательно
    41. // переходим на первую страницу
    42. // А если слишком большое, то переходим на последнюю
    43. if(empty($page) or $page < 0) $page = 1;
    44.  if($page > $total) $page = $total;
    45. // Вычисляем начиная с какого номера
    46. // следует выводить сообщения
    47. $start = $page * $num - $num;
    48. // Выбираем $num сообщений начиная с номера $start  
    49.  
    50. $result = mysql_query("SELECT id,title,description,date,author FROM articles WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db);
    51.  
    52.  if (!$result)
    53.  {
    54.  echo "Запрос на выборку данных из базы не прошел"
    55. ;
    56.   exit(mysql_error());
    57.  }
    58. if (mysql_num_rows($result) > 0)
    59.  
    60. {
    61. $myrow = mysql_fetch_array($result);
    62.  
    63.  
    64. // Проверяем нужны ли стрелки назад
    65. if ($page != 1) $pervpage = '<a href=view_cat.php?cat='.$cat.'&page=1>Первая</a> | <a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
    66. // Проверяем нужны ли стрелки вперед
    67. if ($page != $total) $nextpage = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_cat.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';
    68.  
    69. // Находим две ближайшие станицы с обоих краев, если они есть
    70. if($page - 5 > 0) $page5left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
    71. if($page - 4 > 0) $page4left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
    72. if($page - 3 > 0) $page3left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
    73. if($page - 2 > 0) $page2left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
    74. if($page - 1 > 0) $page1left = '<a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
    75.  
    76. if($page + 5 <= $total) $page5right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
    77. if($page + 4 <= $total) $page4right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
    78. if($page + 3 <= $total) $page3right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
    79. if($page + 2 <= $total) $page2right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
    80. if($page + 1 <= $total) $page1right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
    81.  
    82. // Вывод меню если страниц больше одной
    83.  
    84. if ($total > 1)
    85. {
    86. Error_Reporting(E_ALL & ~E_NOTICE);
    87. echo "<div class=\"pstrnav\">";
    88. echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
    89. echo "</div>";
    90. }
    91.  
    92. }
    93. else
    94. {
    95.  echo "информация не может быть извлечена";
    96.  exit();
    97.  }  
     
  7. Russianmaniac

    Russianmaniac Активный пользователь

    С нами с:
    29 дек 2010
    Сообщения:
    14
    Симпатии:
    0
    Может там просто DIV , [1] [2] а третья не помещается и уходит вниз..а вывод из базы обычный ?
     
  8. Russianmaniac

    Russianmaniac Активный пользователь

    С нами с:
    29 дек 2010
    Сообщения:
    14
    Симпатии:
    0
    УРА !!! РЕШИЛ ПРОБЛЕМУ ВСЕМ СПАСИБО ! СДЕЛАЛ ПРОСТО используя CSS
     
  9. ATI

    ATI Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Я тебе изначально это написал, в другой теме.