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 :: Версия для печати :: Вывод данных в цикле в 3 колонки
Форумы портала PHP.SU » » Вопросы новичков » Вывод данных в цикле в 3 колонки

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

1. Рашид - 11 Июня, 2014 - 21:57:37 - перейти к сообщению
Здравствуйте ! помогите пожалуйста изменить код, чтобы из базы выводилось не в две калонки с данными , а в три. Вот рабочий код вывода в цикле из базы в две колонки:

<?PHP
$result=mysql_query("SELECT * FROM `menu`");
$row=mysql_num_rows($result);
$result2=ceil($row/2);
print '<table cellpadding="0" cellspacing="0" border="0"><tr valign="top"><td width="150">';
$i="1";
while ($array=mysql_fetch_array($result))
{
?>
<input type='checkbox' value="<?PHP print $array['name']; ?>">
<?PHP print $array['name']; ?>
<?PHP
if($result2==$i)
{
print "</td><td width='150'>";
}
$i++;
}
print "</td></tr></table>";
?>
(Добавление)
Здравствуйте ! помогите пожалуйста изменить код, чтобы из базы выводилось не в две калонки с данными , а в три. Вот рабочий код вывода в цикле из базы в две колонки:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $result=mysql_query("SELECT * FROM `menu`");
  4. $row=mysql_num_rows($result);
  5. $result2=ceil($row/2);
  6. print '<table cellpadding="0" cellspacing="0" border="0"><tr valign="top"><td width="150">';
  7. $i="1";
  8. while ($array=mysql_fetch_array($result))
  9. {
  10. ?>
  11. <input type='checkbox' value="<?PHP print $array['name']; ?>">
  12. <?PHP print $array['name']; ?>
  13. <?PHP
  14. if($result2==$i)
  15. {
  16. print "</td><td width='150'>";
  17. }
  18. $i++;
  19. }
  20. print "</td></tr></table>";
  21. ?>
2. LIME - 12 Июня, 2014 - 10:45:01 - перейти к сообщению
код глупейший
проще переписать
гуглить на выбор
block-inline
float
3. DelphinPRO - 12 Июня, 2014 - 11:16:32 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $columnCount = 3;
  2.  
  3. $result = mysql_query("SELECT * FROM `menu`");
  4. $row = mysql_num_rows($result);
  5.  
  6. $width: round(100 / $columnCount, 4);
  7. echo '<div>';
  8. while ($array=mysql_fetch_array($result))
  9. {
  10.         echo '<div style="display:inline-block;vertical-align:top;width:'.$width.'%">';
  11.         echo "<input type='checkbox' value=\"{$array['name']}\">";
  12.         echo $array['name'];
  13.         echo "</div>";
  14. }
  15. echo "</div>";


в первой строке можно задать количество колонок
4. LIME - 12 Июня, 2014 - 11:26:50 - перейти к сообщению
DelphinPRO пишет:
$width: round(100 / $columnCount, 4);
все круто кроме синтаксической ошибки и лучше всетаки floor дабы в большую не округлило
(Добавление)
5. DelphinPRO - 12 Июня, 2014 - 12:29:48 - перейти к сообщению
LIME пишет:
все круто кроме синтаксической ошибки и лучше всетаки floor дабы в большую не округлило

Да это я на sass второй день пишу Улыбка загнался
По поводу floor - согласен
(Добавление)
DelphinPRO пишет:
По поводу floor - согласен


Нет, не согласен. он же до целого округляет. А 33% это не совсем то же самое, что 33.3333%.
Поэтому именно round, но с округлением в меньшую сторону.

PHP:
скопировать код в буфер обмена
  1. round(100 / $columnCount, 4, PHP_ROUND_HALF_DOWN);
6. LIME - 12 Июня, 2014 - 12:51:29 - перейти к сообщению
DelphinPRO а разве браузеры понимают дробные % ?
они округляют до пикселей понятно но принимают ли дроби?
сомневаюсь
просвети
(Добавление)
и кстати именно из-за округления до пикселей и даже если дроби понимают я лучше использую 33% чем 33.3333%
может округлить до пикселей не туда
7. DelphinPRO - 12 Июня, 2014 - 13:51:52 - перейти к сообщению
LIME пишет:
просвети

Дроби понимают. С разной точностью. Минимальная точность у IE - четыре знака.
Это когда речь идет об относительных единицах. С пикселями не прокатит, разумеется. Но ведь у нас проценты. Смотри:

Пусть
100% - 1000px
тогда 33% - 330px
а 33.3333% - 333.3333px которые округлятся до 333px

разница в три пикселя.
8. LIME - 12 Июня, 2014 - 13:56:27 - перейти к сообщению
тогда пожалуй да
но округлять в меньшую было важным замечанием)
(Добавление)
DelphinPRO спасибо
(Добавление)
а если блок 1000px и надо 13 колонок? ))
(Добавление)
да да ))
не поленился
9. DelphinPRO - 12 Июня, 2014 - 14:12:18 - перейти к сообщению
ну и что? где проблема?
10. LIME - 12 Июня, 2014 - 14:13:03 - перейти к сообщению
до пикселя округлится в большую и последний блок перейдет вниз
нет?
11. DelphinPRO - 12 Июня, 2014 - 14:25:16 - перейти к сообщению
нет (искал что-то наподобие phpfiddle Улыбка ) нашел

http://viper-7[dot]com/dcCkzE
12. LIME - 12 Июня, 2014 - 14:31:30 - перейти к сообщению
ничего не понимаю
каждый блок по 77px а всеравно помещаются
ладно...потом если не будет лениво поставлю чистые эксперименты
13. DelphinPRO - 12 Июня, 2014 - 14:32:20 - перейти к сообщению
Кстати, если посмотреть пример в каком-нибудь древнем браузере, то там съедет последний блок по озвученной Lime`ом причине. Но современные браузеры намного умнее Улыбка

Четвертый красный блок на 1 пиксель меньше остальных ;) Но зато все в ряд стоят.
(Добавление)
На хабре была статейка по этому поводу - как браузеры округляют пиксели. К сожалению в закладках не нашел, и название не помню... Там как-раз рассказывалось об этих "умных" механизмах. Давняя статейка, год-полтора-два.
14. LIME - 12 Июня, 2014 - 14:36:26 - перейти к сообщению
стало яснее
вот бы еще f12 не врал по поводу последнего блока а честно признался что он 76px
ну тема эта чисто гипотетическая
но спасибо DelphinPRO за то что поучаствовал еще раз)
15. DelphinPRO - 12 Июня, 2014 - 14:38:11 - перейти к сообщению
у меня не последний, а четвертый красный (т.е. седьмой). Инспектор и правда врет Улыбка но я экранной линейкой мерил ;)

 

Powered by ExBB FM 1.0 RC1