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 » » Вопросы новичков » Две колонки.

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

1. event - 27 Декабря, 2011 - 01:09:20 - перейти к сообщению
Привет.
Есть код:
PHP:
скопировать код в буфер обмена
  1. function languageslist() {
  2.         $ret = array();
  3.         $res = sql_query("SELECT id, name FROM languages ORDER BY sort ASC");
  4.         while ($row = mysql_fetch_array($res))
  5.                 $ret[] = $row;
  6.         return $ret;
  7. }
  8.  
  9. $cats = languageslist();
  10. foreach ($cats as $row){
  11.         $s .= "<input type='checkbox'  name=" . htmlspecialchars(strtolower($row["name"])) ." value=" . $row["id"] .">".htmlspecialchars($row["name"])."<br />";
  12.         }
  13. tr($tracker_lang['type']."<br />", $s, 1);


На выходе получаю, вот такую картину:



А как сделать чтобы все это разделилос на две колонки, и вышло так:



Заранее спасибо.
2. Pavelbeginner - 27 Декабря, 2011 - 04:35:49 - перейти к сообщению
Используйте таблицы. Прочитайте про теги table, tr, td.
3. event - 27 Декабря, 2011 - 11:56:57 - перейти к сообщению
Pavelbeginner
Спасибо, кЭп.
4. Woice - 27 Декабря, 2011 - 12:01:19 - перейти к сообщению
А чего вы хотите? Не вижу "вопроса". Человек же вам верно уже подсказал или чего вы хотите? Оо
5. EuGen - 27 Декабря, 2011 - 12:09:09 - перейти к сообщению
А что такое tr ? Где определено?
По логике так:
PHP:
скопировать код в буфер обмена
  1.     function languageslist() {
  2.             $ret = array();
  3.             $res = sql_query("SELECT id, name FROM languages ORDER BY sort ASC");
  4.             while ($row = mysql_fetch_array($res))
  5.                     $ret[] = $row;
  6.             return $ret;
  7.     }
  8.      
  9.     $cats = languageslist();
  10.     $s='<table>';
  11.     $i=0;
  12.     foreach ($cats as $row){
  13.            if(!($i%2))
  14.            {
  15.               $s.='<tr>';
  16.            }
  17.             $s .= "<td><input type='checkbox'  name=" . htmlspecialchars(strtolower($row["name"])) ." value=" . $row["id"] .">".htmlspecialchars($row["name"])."</td>";
  18.             if(!($i%2))
  19.             {
  20.               $s.='</tr>';
  21.             }
  22.             $i++;
  23.       }
  24.    $s.='</table>';
  25.     tr($tracker_lang['type']."<br />", $s, 1);

Хотя нет, вывод же перекрестный. Чуть исправить надо.
6. event - 27 Декабря, 2011 - 12:20:39 - перейти к сообщению
EuGen
Привет, вставил твой код, все по прежному.

PS: Спасибо что откликнулся.
7. EuGen - 27 Декабря, 2011 - 12:27:12 - перейти к сообщению
Верно, я уже отписал - не учел, что у Вас вначале и в конце вывод требуется. Так должно помочь:
PHP:
скопировать код в буфер обмена
  1. function languageslist() {
  2.             $ret = array();
  3.             $res = sql_query("SELECT id, name FROM languages ORDER BY sort ASC");
  4.             while ($row = mysql_fetch_array($res))
  5.                     $ret[] = $row;
  6.             return $ret;
  7.     }
  8.      
  9.     $cats = languageslist();
  10.     $s='<table>';
  11.    $rgCats=array_chunk($cats,2);
  12.    foreach($rgCats as $rgColumn)
  13.    {
  14.       $s.='<tr>';
  15.       foreach($rgColumn as $row)
  16.       {
  17.         $s .= "<td><input type='checkbox'  name=" . htmlspecialchars(strtolower($row["name"])) ." value=" . $row["id"] .">".htmlspecialchars($row["name"])."</td>";
  18.       }
  19.       $s.='</tr>';
  20.    }
  21.    $s.='</table>';
  22.     tr($tracker_lang['type']."<br />", $s, 1);
8. event - 27 Декабря, 2011 - 12:31:01 - перейти к сообщению
EuGen
Большое спасибо, работает, тыкнул спасибку.

 

Powered by ExBB FM 1.0 RC1