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

Форум PHP

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

 

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

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

тема: вывести массив в таблицу
 
 автор: Лена   (26.08.2008 в 10:32)   письмо автору
 
 

Нужно вывести массив в таблицу, в которой 3 ряда по три столбца - всего 9 ячеек.
Я пробовала вот так сделать:

<?php
$d 
= array("a""s""e""r""f""d""c""w""s");

echo 
"<table border = 4>";
for(
$n 0$n count($d);$n++){
echo 
"<tr>";
    for(
$i 0$i 3$i++){
        if(!empty(
$d[$n][$i]))    echo "<td>" $d[$n][$i] . "</td>";
        else echo 
"<td>&nbsp;</td>";    
    }
echo 
"</tr>";
}
echo 
"</table>";

?>


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

  Ответить  
 
 автор: sim5   (26.08.2008 в 10:55)   письмо автору
 
   для: Лена   (26.08.2008 в 10:32)
 

<?
$d 
= array("a""s""e""r""f""d""c""w""s"); 
$col 3//число колонок  
$n = ($col>count($d) || !(count($d)%$col)) ? count($d) : count($d)+($col-count($d)%$col); 
print 
'<TABLE cellpadding="4" cellspacing="1" bgcolor="#000000">'
for (
$i=0$i<$n$i++) { 
  if (!(
$i $col)) print '<TR bgcolor="#ffffff">'
  
$d[$i] ? print "<TD>" $d[$i] . "</TD>" : print "<TD>&nbsp;</TD>";
  if (!(
$i+$col)) print "</TR>"

print 
"</TABLE>";
?>

  Ответить  
 
 автор: Лена   (27.08.2008 в 10:43)   письмо автору
 
   для: sim5   (26.08.2008 в 10:55)
 

Делаю подобным образом, вывожу значения из базы в таблицу:

<?php
include("../configs/dbopen.php");
$sql "SELECT * FROM `menu` WHERE `pid` = 0 ORDER BY `id_menu`";
$result mysql_query($sql) or die (mysql_error());

while(
$row mysql_fetch_row($result)) {
$title $row[2];
$col 2
$n = ($col>count($title) || !(count($title)%$col)) ? count($title) : count($title)+($col-count($title)%$col); 
echo 
"<table cellspacing=''">;
for (
$i=0$i<$n$i++) { 
  if (!(
$i $col)) print '<TR>'
      
      
$title[$i] ? print "<TD><input type = 'checkbox' name = 'typeWork'>" $title[$i] . "</TD>" : print "<TD>&nbsp;</TD>";
      
  if (!(
$i+$col)) print "</TR>"

echo 
"</table>";
}
?>


Выводится только первая буква слова. Как вытянуть все слово?

  Ответить  
 
 автор: sim5   (27.08.2008 в 10:56)   письмо автору
 
   для: Лена   (27.08.2008 в 10:43)
 

А что такое $title? Если это строка текста, то почему по ее длине строится таблица? И еще:
[$i] ? print.... тут ошибка. Вы просто узнаете существует ли у итерации значение, а у меня в примере, итерация служит индексом массива к которому обращаемся ($d). Ну и последнее. Строка в примере:
$n = ($col>count($d) || !(count($d)%$col)) ? count($d) : count($d)+($col-count($d)%$col);
служит для того, чтобы независимо от числа элементов раскладываемого массива, присвоить счетчику цикла величину кратную числу колонок получаемой таблицы. Это важно тогда, когда таблицу надо визуализировать, в противном случае она не нужна, как и вывод <TD>&nbsp;</TD>.

PS. Стоит добавить, что, например, слово, это тоже массив, и обращаясь к нему как $s[$i], например, вы будете получать по одной букве этого слова (это к тому, почему одну буковку получаете).

  Ответить  
 
 автор: Лена   (27.08.2008 в 11:57)   письмо автору
 
   для: sim5   (27.08.2008 в 10:56)
 

Давайте разбираться.
Не знаю, как грамотно спросить, постараюсь, чтобы вы меня поняли.
$title - это заголовки для чекбоксов, которые вытягиваются из базы в виде строки.
Я так понимаю, эту строку нужно разбить на отдельные части и по количеству частей формировать таблицу.
Вот из базы я вытягиваю $title = $row[2]. Как можно разбить эту строку? По чем можно ее бить, чтобы получились отдельные слова-заголовки? В заголовках одно-два-три слова.

  Ответить  
 
 автор: sim5   (27.08.2008 в 12:04)   письмо автору
 
   для: Лена   (27.08.2008 в 11:57)
 

explode по пробелу, например, если в строке нет других разделителей. И вообще, что представялет собой в итоге (после "вытягивания" из базы) эта строка? Чтобы разложить это в while, нужен естественно цикл для разложения этого массива (чекбоксов). Или нужна общая таблица, в которой должны быть разложены еще и чекбоксы?

  Ответить  
 
 автор: Лена   (27.08.2008 в 13:16)   письмо автору
 
   для: sim5   (27.08.2008 в 12:04)
 

explode по пробелу не получится. На выходе из базы получается строка типа:

БегемотКрокодил опасныйЖирафМартышка

Каждый заголовок - с большой буквы. С помощью регулярных выражений? Если да, то буду дальше думать
В конечном счете должна получиться таблица, где три ряда, три столбца, где в каждой ячейке вот такое:

<TD><input type = 'checkbox' name = 'typeWork'>заголовок</TD>

  Ответить  
 
 автор: sim5   (27.08.2008 в 13:25)   письмо автору
 
   для: Лена   (27.08.2008 в 13:16)
 

А зачем тогда объеденять эти заголовки в строку, чтобы потом мучиться при выводе? Может стоит привести сперва таблицу к нормальному виду, а уж потом...

  Ответить  
 
 автор: Valick   (26.08.2008 в 10:59)   письмо автору
 
   для: Лена   (26.08.2008 в 10:32)
 

<?php 
$d 
= array("a""s""e""r""f""d""c""w""s"); 

echo 
"<table border = 4>";
echo 
"<tr>"
for(
$n 0$n count($d); $n++)
    {
     for(
$i 0$i 3$i++){ 
        if(!empty(
$d[$n+$i]))    echo "<td>" $d[$n+$i] . "</td>"
        else echo 
"<td>&nbsp;</td>";    
    } 
echo 
"</tr><tr>";
$n=$n+3;
}
echo 
"</tr>"
echo 
"</table>"

?>

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

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