Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод в две колонки
Форумы портала PHP.SU » PHP » Программирование на PHP » Вывод в две колонки

Страниц (1): [1]
 

1. nsbox - 03 Сентября, 2008 - 11:19:23 - перейти к сообщению
Помогите! пишу галерею и застрял на выводе категорий.
В базе имеется некоторое колличество категорий и нужно чтобы все категории выводились в два столбца. Вот код (допишите пожалуйста или подскажите как сделать):
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $categoryquery = mysql_query("SELECT * FROM tatoo_category");
  4. while ($categoryresquery = mysql_fetch_array($categoryquery)) {
  5. echo "
  6. <tr>
  7. <td align=\"center\"><a href=\"/gallery.php?category=".$categoryresquery["id"]."\">
  8. <img src=\"gallery/category/".$categoryresquery["foto"]."\"><br>".$categoryresquery["name"]."
  9. </a>
  10. </td>
  11. </tr>
  12. ";
  13. ?>
2. Вездеход - 03 Сентября, 2008 - 11:59:36 - перейти к сообщению
или делайте в 2-3 запроса - для 1го слобца и для второго по половине данных.
или же все данные вписывайте в массив и его уже обрабатывайте - через count() получайте количество элементов и пополам делите на 2 столбца
3. nsbox - 03 Сентября, 2008 - 12:19:04 - перейти к сообщению
мне по душе вариант в два запроса. как располовинеть данные и вывести первую половину и вторую (как располовинеть я уже вроде понял).
4. Ыыы - 03 Сентября, 2008 - 14:44:35 - перейти к сообщению
if($i%2==0) echo '</tr>';

и все
5. Andrey5555 - 03 Сентября, 2008 - 15:33:36 - перейти к сообщению
$query = mysql_query ("SELECT id, title, image FROM gallery ORDER BY id");
while ($array[]=mysql_fetch_array($query));
unset($array[(count($array)-1)]);
echo "<table border='1'>";
foreach ($array as $value)
{
echo "<tr>";
echo "<td>".$value['image']."</td><td>".$value['image']."</td>";
echo "</tr>";
}
echo "</table>";
6. Вездеход - 03 Сентября, 2008 - 16:45:01 - перейти к сообщению
Andrey5555
я только не заметил как в вашем запросе происходит ограничение на количество выводимых данных и где разделение на 2 столбца )))
7. Andrey5555 - 03 Сентября, 2008 - 17:08:13 - перейти к сообщению
))) Все работает нормально выводит в 2 колонки, но ожинакового содержания))Вездеход
Предложите свой вариант)
8. nsbox - 03 Сентября, 2008 - 17:18:13 - перейти к сообщению
Andrey5555 пишет:
Вездеход,
Предложите свой вариант)

+1 очень нужно.

И если в таблице будет нечётное число строк. нужно чтобы все строки делились на 2 столбца.
9. A.St. - 03 Сентября, 2008 - 17:57:32 - перейти к сообщению
Такие вещи делаются либо с флагом, либо дивами с style="float:left; width=49%" - имхо.
Z.B.:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?
  3. $categoryquery = mysql_query("SELECT * FROM tatoo_category");
  4. $flag = 0;
  5. echo "<tr>";
  6. while ($categoryresquery = mysql_fetch_array($categoryquery)) {
  7. if ( $flag == 1) {
  8. echo "</tr><tr>";
  9. $flag = 0;
  10. } else {
  11. $flag = 1;
  12. }
  13. echo "<td align=\"center\"><a href=\"/gallery.php?category=".$categoryresquery["id"]."\">
  14. <img src=\"gallery/category/".$categoryresquery["foto"]."\"><br>".$categoryresquery["name"]."
  15. </a>
  16. </td>
  17. ";
  18. }
  19. echo "</tr>";
  20. ?>
  21.  
10. pifon1989 - 03 Сентября, 2008 - 20:24:26 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $categoryquery = mysql_query("SELECT * FROM tatoo_category");
  4. $flag = 0;
  5. echo "<tr>";
  6. while ($categoryresquery = mysql_fetch_array($categoryquery)) {
  7. if ( $flag == 1) {
  8. echo "</tr><tr>";
  9. $flag = 0;
  10. } else {
  11. $flag = 1;
  12. }
  13. echo "<td align=\"center\"><a href=\"/gallery.php?category=".$categoryresquery["id"]."\">
  14. <img src=\"gallery/category/".$categoryresquery["foto"]."\"><br>".$categoryresquery["name"]."
  15. </a>
  16. </td>
  17. ";
  18. }
  19. echo "</tr>";
  20. ?>
  21.  

Я называю это по-разному: "танец операнды", "хирург понтуется" или "режь его тильдой!!!"
но суть одна: здесь он не подходит, т.к. в случае если число ячеек нечётное, и никак не будет упомянута последняя, чётная ячейка, таблица примет непредсказуемый вид - правила html4.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo '<table border="1" bordercolor="white">';
  4. $categoryquery = mysql_query("SELECT * FROM tatoo_category");
  5. while($categoryresquery = mysql_fetch_array($categoryquery))
  6. {
  7. // обработчик
  8. $tds[] = '<td align="center"><a href="/gallery.php?category='.$categoryresquery["id"].'"><img src="gallery/category/'.$categoryresquery["foto"].'"><br>'.$categoryresquery["name"].'</a></td>';
  9. }
  10. $i = count($tds);
  11. if(!is_int($i/2))
  12. {
  13. $tds[] = "&nbsp";
  14. }
  15. $tor = array_chunk($tds, 2);
  16.  
  17. // генератор
  18. foreach($tor as $value)
  19. {
  20. echo '<tr>';
  21.  foreach($value as $value2)
  22.  {
  23.  echo $value2;
  24.  }
  25. echo '</tr>';
  26. }
  27. echo '</table>';
  28. ?>
  29.  

Таким образом таблица должна встроиться верно.
11. nsbox - 03 Сентября, 2008 - 20:54:18 - перейти к сообщению
pifon1989 пишет:
Таким образом таблица должна встроиться верно.


Огромное спасибо всё
<?php
echo "ok";
?> Радость
12. A.St. - 04 Сентября, 2008 - 13:10:33 - перейти к сообщению
pifon1989 пишет:
здесь он не подходит, т.к. в случае если число ячеек нечётное, и никак не будет упомянута последняя, чётная ячейка, таблица примет непредсказуемый вид - правила html4.


С одним циклом и проще, и быстрее.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $categoryquery = mysql_query("SELECT * FROM tatoo_category");
  4. $flag = 1;
  5. echo "<tr>";
  6. while ($categoryresquery = mysql_fetch_array($categoryquery)) {
  7. if ( $flag % 2 == 0) {
  8. echo "</tr><tr>";
  9. }
  10. echo "<td align=\"center\"><a href=\"/gallery.php?category=".$categoryresquery["id"]."\">
  11. <img src=\"gallery/category/".$categoryresquery["foto"]."\"><br>".$categoryresquery["name"]."
  12. </a>
  13. </td>
  14. ";
  15. // -> сюда иф вставить проще будет.
  16. if ( $flag == count( $categoryresquery) && $flag % 2 != 0) {
  17.     echo "<td></td>";
  18. } else {
  19.     $flag ++ ;
  20. }
  21. }
  22. echo "</tr>";
  23. ?>
  24.  

 

Powered by ExBB FM 1.0 RC1