|
|
|
| Как реализовать данный пример?
В таблице есть id |название раздела | категория раздела
1 | первый раздел | основная категория
2 | второй раздел | первый раздел
3 | третий раздел | основная категория
4 | четвертый раздел | основная категория
5 | пятый раздел | третий раздел
|
Необходимо:
если $col = 1, то
<table>
<tr>
<td>
первый раздел<br />
третий раздел<br />
четвертый раздел<br />
</td>
</tr>
<tr><td colspan={$col}></td></tr>
</table>
|
если $col = 2, то
<table>
<tr>
<td>
первый раздел<br />
четвертый раздел<br />
</td>
</tr>
<tr>
<td>
третий раздел<br />
</td>
</tr>
<tr><td colspan={$col}></td></tr>
</table>
|
если $col = 3, то
<table>
<tr>
<td>
первый раздел<br />
</td>
</tr>
<tr>
<td>
третий раздел<br />
</td>
</tr>
<tr>
<td>
четвертый раздел<br />
</td>
</tr>
<tr><td colspan={$col}></td></tr>
</table>
|
$col - в админке будет меняться количество столбцов. Заранее спасибо | |
|
|
|
|
|
|
|
|
для: cheops
(27.03.2011 в 21:25)
| | а как в этот массив занести данные из бд?
$filename = array("all.php", "auth.php",
"auth.txt", "base.txt",
"chat.html", "config.php",
"count.txt", "count_new.txt",
"counter.dat", "counter.php",
"create.php", "dat.db");
|
| |
|
|
|
|
|
|
|
для: clubxaliav
(27.03.2011 в 22:37)
| | А вы его формируйте при выборке результирующей таблицы циклом while(). Т.е. не сразу формируйте таблицу, а сначала создайте промежуточный массив. | |
|
|
|
|
|
|
|
для: cheops
(28.03.2011 в 11:32)
| | Так я пробывал, чет не получаеться:
Вот пример.
$query = ( "SELECT * FROM $tables[t_dirs] WHERE razdel = 'Основная категория' ORDER BY position ASC" );
$result = mysql_query ( $query );
$total = mysql_num_rows ( $result );
while ($row = mysql_fetch_array($result)) {
$name = $row['name'];
}
$numcols = 2;
$filename = array($name);
|
Выводит только первую категорию, остальных нет! Где ошибка? | |
|
|
|
|
|
|
|
для: clubxaliav
(29.03.2011 в 14:05)
| | Нет, я имею в виду вот что
$query = ( "SELECT * FROM $tables[t_dirs]
WHERE razdel = 'Основная категория'
ORDER BY position ASC" );
$result = mysql_query ( $query );
$total = mysql_num_rows ( $result );
while ($row = mysql_fetch_array($result)) {
$filename[] = $row['name'];
}
$numcols = 2;
|
| |
|
|
|
|
|
|
|
для: cheops
(29.03.2011 в 14:25)
| | Во получилось, спасибо огромное очередной раз,... вам надо сделать кнопку спасибо на форум ))) | |
|
|
|
|
|
|
|
для: cheops
(29.03.2011 в 14:25)
| | Игорь, можете помочь еще с этим примером по этой теме.
При обычном запросе у меня это работает, а в этом примере нет.
у меня есть еще один запрос в:
$query = ( "SELECT * FROM $tables[t_dirs]
WHERE razdel = 'Основная категория'
ORDER BY position ASC" );
$result = mysql_query ( $query );
$total = mysql_num_rows ( $result );
while ($row = mysql_fetch_array($result)) {
$filename[] = $row['name'];
}
$numcols = 2;
// Вычисляем число строк
$number = (int)($total/$numcols);
if((float)($total/$numcols) - $number != 0) $number++;
// Формируем промежуточный двумерный массив
for($i = 0; $i < $number; $i++)
{
for($j = 0; $j < $numcols; $j++)
{
$arr[$i][$j] = $filename[$j*$number + $i];
}
}
// Выводим таблицу
echo "<table width=664 height=100% cellspacing=0 cellpadding=0>";
for($i = 0; $i < $number; $i++)
{
echo "<tr>";
for($j = 0; $j < $numcols; $j++)
{
$links = ( "SELECT * FROM `byp_links`, `byp_dirs`
WHERE byp_links.dir = byp_dirs.name AND
byp_dirs.razdel = '".$arr[$i][$j]."'" );
$dirlink = mysql_query ( $links );
$n = mysql_num_rows ( $dirlink );
if ( $n == 0 ) { $n = "0"; }
echo "<td valign=top><font color=\"#0a7e3f\"><strong>".$arr[$i][$j]."</strong></font> [$n]<br />";
$sql = ( "SELECT * FROM `byp_dirs`
WHERE razdel = '".$arr[$i][$j]."'
ORDER BY id ASC" );
$subraz = mysql_query ( $sql );
while ($sub = mysql_fetch_array($subraz)) {
$subname = $sub['name'];
$sublinks = ( "SELECT * FROM `byp_links`, `byp_dirs`
WHERE byp_links.dir = byp_dirs.name AND
byp_links.dir = '$subname'" );
$subdirlink = mysql_query ( $sublinks );
$ns = mysql_num_rows ( $subdirlink );
if ( $ns == 0 ) { $ns = "0"; }
echo " - $subname [ $ns ]<br />";
}
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
| он должен вывести количество [ $n ] добавленных ссылок в подразделы по каждой категории.
вот тут:
echo "<td valign=top><font color=\"#0a7e3f\"><strong>".$arr[$i][$j]."</strong></font> [$n]<br />";
|
Он то их показывает, но при 2х столбцах и допустим 3 категории, вот такая [0] появляется в пустой ячейки таблицы
Первая категория [1] Вторая категория [1]
Третья категория [0] [0]
|
Как избавиться от [0] в пустой ячейки таблицы? | |
|
|
|
|
|
|
|
для: clubxaliav
(29.03.2011 в 16:34)
| | А вы вот эту проверку
if ( $n == 0 ) { $n = "0"; }
| Замените следующей
if (!empty($arr[$i][$j])) $n = "[".intval($n)."]";
else $n = "";
| А при выводе вместо [$n] выводите просто $n. | |
|
|
|
|
|
|
|
для: cheops
(29.03.2011 в 16:41)
| | Во, получилось,.... еще разок спасибо + | |
|
|
|
|
|
|
|
для: cheops
(29.03.2011 в 16:41)
| | Игорь, а как убрать здесь пустое значение с обводкой, а то при выводе 2х картинок почему-то 3я картинка которой нет имеет обводку border (в стилях задана обводка).
$numcols = 3;
$sql = ( "SELECT * FROM `byp_persona`, `byp_fotogalery`
WHERE byp_persona.id_pers = byp_fotogalery.persid AND
byp_persona.alt_pers = '$name_alt'
ORDER BY byp_fotogalery.id_galery ASC" );
$result = mysql_query( $sql );
$total = mysql_num_rows ( $result );
if ( 0 < $total ) {
while ($row = mysql_fetch_array($result)) {
$filename[] = $row['img_galery'];
}
// Вычисляем число строк
$number = (int)($total/$numcols);
if((float)($total/$numcols) - $number != 0) $number++;
// Формируем промежуточный двумерный массив
for($i = 0; $i < $number; $i++)
{
for($j = 0; $j < $numcols; $j++)
{
$arr[$i][$j] = $filename[$j*$number + $i];
}
}
// Выводим таблицу
echo "<table cellspacing=0 cellpadding=0 class=\"table_razdel\">";
for($i = 0; $i < $number; $i++)
{
echo "<tr>";
for($j = 0; $j < $numcols; $j++)
{
echo "<td valign=top><div id=\"img_galery\">
<img src=\"../images/galery/$name_alt/".$arr[$i][$j]."\"></div></td>";
}
echo "</tr>";
}
echo "</table>";
}
|
| |
|
|
|
|
|
|
|
для: clubxaliav
(22.06.2011 в 16:52)
| | т.е он видет картинку как <img src=\"../images/galery/$name_alt/\"> и обводит ее! соответственно ее не существует. | |
|
|
|
|
|
|
|
для: clubxaliav
(22.06.2011 в 17:29)
| | А вы проверяйте существование изображения при помощи фукнции file_exists() | |
|
|
|
|
|
|
|
для: cheops
(22.06.2011 в 20:18)
| | нет не проверяю, а на каком этапе ее нужно проверять?
И еще почему картинки располагаются вот так
1 9 17
2 10 18
3 11 19
4 12 20
5 13 21
6 14 22
7 15 23
8 16 24
а должно быть, вот так
1 2 3
4 5 6
7 8 9
10 11 12 и т.д | |
|
|
|
|
|
|
|
для: clubxaliav
(25.06.2011 в 11:44)
| | 1) Там где вам удобнее, эта функция скажет вам есть такое изображение или нет, в зависимости от ответа вы можете принять то или иное решение
2) Чтобы добиться этого, все ячейки нужно сохранить в массив и формировать таблицу уже из массива. Эта ситуация подробно рассматривается в скрипте по ссылке http://softtime.ru/scripts/calendar.php
PS Под новые вопросы лучше заводить новые темы - больше ответов можно получить и ссылаться на них удобнее. Давайте эту тему закроем, а если остались вопросы, создадим новые темы под них? | |
|
|
|
|
|
|
|
для: clubxaliav
(22.06.2011 в 16:52)
| | Может написать как нибудь так:
if ($total = 2) { $numcols = 2; }
хотя при 4 картинках в $numcols = 3, будет 2 обводки без картинок.... | |
|
|
|
|
|
|
|
для: clubxaliav
(22.06.2011 в 16:52)
| | Разбил тег картинки на 2 части и посредине прописал если пусто, то нечего не вставляем, если что то есть, то вставляем стиль, а <div> убрал! Пустая обводка убралась! Метод тыка рулит )))) | |
|
|
|