Версия для печати темы
Форум веб-мастеров _ Веб-программирование (PHP, CGI, ASP, ...) _ построение таблицы
Автор: Veto-Irina 28.4.2008, 13:55
Здравствуйте, подскажите пожалуйста,
Как сделать вывод данных из базы MySQL , чтобы вывод был в формате
Код
|$data1| |$data2|
|$data3| |$data4| ну и т,д,
Вот цикл вывода
while ($data=mysql_fetch_row($result))
{ echo ("<tr> <td> <img src='$data[0]'</td></tr>");}
Автор: gid 28.4.2008, 16:16
Простой пример:
Код
<?php
/* Соединение, выбор БД */
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Could not connect");
print "Connected successfully";
mysql_select_db("my_database") or die("Could not select database");
/* Выполнение SQL query */
$query = "SELECT * FROM my_table";
$result = mysql_query($query) or die("Query failed");
/* Печать результатов в HTML */
print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</table>\n";
/* Освобождение resultset */
mysql_free_result($result);
/* Закрытие соединения */
mysql_close($link);
?>
Автор: gid 28.4.2008, 16:19
C разделением данных из массива на N-ное число колонок:
Код
function print_as_table($rub_array, $colon=2)
{
$count = sizeof($rub_array);
$id = 0;
if ($colon<$count) $count_r_in_col = ceil($count/$colon);
else $count_r_in_col = $count;
$cel_percent = ceil(100/$colon);
$sh = '
<table width="100%">
';
for ($c=1; $c<=$count_r_in_col; $c++)
{
$sh .= '
<tr align="left">
';
for ($cr=1; $cr<=$colon; $cr++)
{
$sh .= "
<td width=\"$cel_percent%\" valign=\"top\">".$rub_array[$id]."</td>
";
if ($id >= $count) break;
$id++;
}
$sh .= '
</tr>
';
}
$sh .= '
</table>
';
return $sh;
}
Автор: Veto-Irina 29.4.2008, 12:26
Gid, поясните пожалуйста вот эту строчку:
Код
foreach ($line as $col_value) {
И я не пойму как функцию связать с выводом, куда ее ставить?
$rub_array - это переменная в которой хранится массив данных?
Автор: gid 29.4.2008, 13:27
Цитата
foreach ($line as $col_value)
Массив $line, "разбирается" попорядку, от начала к концу, в переменной $col_value содержится значение элемента массива в данный момент времени. подробнее http://forum.wm-help.net/go/?http://php-manual.info/foreach.html
Цитата
И я не пойму как функцию связать с выводом, куда ее ставить?$rub_array - это переменная в которой хранится массив данных?
Ну напримар так:
Код
<?php
function print_as_table($rub_array, $colon=2)
{
....
}
$colon = 2; // число колонок в таблице
$arr = array("значение 1", "значение 2", "значение 3", "значение 4"); // массив с данными, каждый элемент массива будет в своей ячейке.
echo print_as_table($arr, $colon); // печать результата работы функции
?>
Автор: Veto-Irina 29.4.2008, 14:20
Вы знаете я наверно что-то не догнала
, ошибку выдает ,вот такой код у меня
Код
<?php
function print_as_table($rub_array, $colon=2)
{
}
$db_name=" "; //база данных
$table=" "; //таблица
$link=@mysql_connect("localhost","root"," ") or die ("Подключиться невозможно");
$db=@mysql_select_db( $db_name,$link) or die ("Подключиться невозможно");
$result=mysql_query("SELECT * FROM $table") or die(mysql_errno($link).mysql_error($link));
print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
echo print_as_table($col_value,$colon);}
}
print "\t</tr>\n";
}
print "</table>\n";
?>
Выводит ошибку
Division by zero in /localhost/pp.php on line 11 и в 13
это строчки в функции
Код
(11) if ($colon<$count) $count_r_in_col = ceil($count/$colon);
(13) $cel_percent = ceil(100/$colon);
Автор: gid 29.4.2008, 14:34
А попробуйте так:
Код
<?php
function print_as_table($rub_array, $colon=2)
{
// код функции
}
$db_name=" "; //база данных
$table=" "; //таблица
$link=@mysql_connect("localhost","root"," ") or die ("Подключиться невозможно");
$db=@mysql_select_db( $db_name,$link) or die ("Подключиться невозможно");
$result=mysql_query("SELECT * FROM $table") or die(mysql_errno($link).mysql_error($link));
$t_arr = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$_str = "";
foreach($row as $key=>$val)
{
$_str .= $key." => ".$val."<br>";
}
$t_arr[] = $_str;
}
echo print_as_table($t_arr, 2);
?>
Автор: gid 29.4.2008, 14:42
В последующем нужно будет заменить кусок кода:
Код
$_str = "";
foreach($row as $key=>$val)
{
$_str .= $key." => ".$val."<br>";
}
$t_arr[] = $_str;
на шаблонизатор для записи из данной таблицы, т.е. на что-то типа:
Код
$t_arr[] = <<<EOF
Заголовок: {$row['title']}
<br>
Текст:
<br>
{$row['text']}
EOF;
где title и text - имена полей в таблице mysql
Автор: Veto-Irina 29.4.2008, 15:42
Вариант с этим кодом работает:
Код
$_str = "";
foreach($row as $key=>$val)
{
$_str .= $key." => ".$val."<br>";
}
$t_arr[] = $_str;
а вот когда меняю на шаблонизатор пишет следующее
unexpected $end in (строчке EOF;)
(все скобки проверила все на месте)
Автор: gid 29.4.2008, 15:48
Перед и после EOF; не должно быть побелов или других символов! и сточка с EOF; должна начинаться с новой строки!
Автор: Veto-Irina 29.4.2008, 16:39
А я символы никакие не ставила, я скопировала код и поменяла поля как вы сказали, отсебятину вроде не писала, вот код, ,может я что-то не так поняла
Надеюсь я вас еще не сильно достала?
Код
$result=mysql_query("SELECT * FROM $table") or die(mysql_errno($link).mysql_error($link));
$t_arr = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
$t_arr[] = <<<EOF
Заголовок: {$row['partn']}
EOF;
echo print_as_table($t_arr, 2);
Автор: gid 29.4.2008, 17:01
Можно еще так попробовать:
Код
$result=mysql_query("SELECT * FROM $table") or die(mysql_errno($link).mysql_error($link));
$t_arr = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$t_str = <<<EOF
Заголовок: {$row['partn']}
EOF;
$t_arr[] = $t_str;
}
echo print_as_table($t_arr, 2);
Автор: Veto-Irina 29.4.2008, 17:17
Пишет syntax error, unexpected ']', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /ppp.php on line 43
(43) $t_arr[] = $t_str;
А если написать $t_arr = $t_str; то опять предыдущая ошибка (unexpected $end in)
А нельзя в таком виде оставить по крайней мере выводит то что мне нужно
Код
$t_arr = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$_str = "";
foreach($row as $val)
{
$_str .=" <img src= '$val'>";
}
$t_arr[] = $_str;
}
echo print_as_table($t_arr, 2);
Автор: gid 29.4.2008, 20:35
Цитата
А нельзя в таком виде оставить по крайней мере выводит то что мне нужно
Можно, но для понимания всей сути скрипто-писания на php, лучше всего один раз разобраться до конца.
ps
правильней было бы тогда писать так:
Код
$t_arr = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
foreach($row as $val)
{
$t_arr[] = " <img src= '$val'>";
}
}
echo print_as_table($t_arr, 2);
или еще лучше так:
Код
$t_arr = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$t_arr[] = " <img src= '{$row['partn']}'>";
}
echo print_as_table($t_arr, 2);
Автор: Veto-Irina 30.4.2008, 10:43
Спасибо большое Gid за ваши советы и терпение, а в скрипто-писании мне еще разбираться и разбираться
Invision Power Board ()
© Invision Power Services ()