|
|
|
| Добрый вечер!
есть цикл
if (mysql_num_rows($result3) > 0)
{
$myrow3 = mysql_fetch_array($result3);
do
{
printf ("<h4><a href='post.php?id=%s'>%s</a></h4><br>
", $myrow3["id"], $myrow3["title"]);
}
while ($myrow3 = mysql_fetch_array($result3));
}
|
но смотрится тяжело. список большой. а как вывести это к примеру в два (или в три) столбца? | |
|
|
|
|
|
|
|
|
для: franko
(31.03.2011 в 19:42)
| | примерно так. вывод данных в таблицу с заданным количеством столбцов и строк (3х3 или 6х8) и линками для постраничного листания
<?
$show_cols = 3; // кол-во колонок
$show_rows = 3; // кол-во строк
$start1 = $_GET["start1"];
if (!isset($start1)) $start1=1;
//определяем, сколько столбцов и где мы находимся
$query = ("SELECT * FROM store order by id ");//выбираем все
$array=mysql_query($query);
$num_rows = mysql_num_rows($array); //кол-во строк в базе
$cols=floor($num_rows/$show_cols); //кол-во столбцов в таблице вывода
$pages = floor($num_rows/($show_cols*$show_rows));// кол-во страниц
?>
<table border=0 width="100%"><tr><td>
<? if ($num_rows > $show_cols*$show_rows*$pages) $pages++;
//если строк в базе больше чем помещается на одной странице, переходим на след.стр-цу
for ($ii=1; $ii<=$pages; $ii++) { //цикл перебора страниц
$from1=$ii*$show_rows*$show_cols-($show_rows*$show_cols-1); //количество показанных страниц минус кол-во всех страниц
$to1=$ii*$show_rows*$show_cols; //количество показанных страниц
if ($to1 > $num_rows) $to1 = $num_rows; //esli pokaz. str-c > chem strok v baze, to delaem =
if ($start1==$from1) echo "| <font class=opanki >$from1 - $to1</font>";
else
{echo " | <a href=\"view.php?start1=$from1&step=$step\"> $from1 - $to1</a>";}
}?>
</td></tr></table>
<?/// вывод страницы
if ($num_rows > $pages*$show_cols*$show_rows) $vid++;
for ($iii=0; $iii<=$vid; $iii++) {
/// вывод таблицы
$query0 = "SELECT * FROM sub_menu where id = $step";
$result0 = mysql_query($query0);
$row0 = mysql_fetch_array($result0);
$title_sub = $row0["title_sub"];
echo "<h3 class=header>$title_sub</h3>";
if ($num_rows > $show_rows) $show_rows++;
for ($i=2; $i<=$show_rows; $i++) {
$start1=$start1 - 1;
$query = "SELECT * FROM store order by id DESC limit $start1,$show_cols";
$start1=$start1+$show_cols + 1;
$result = mysql_query($query);
$number = mysql_num_rows($result);
echo"<table align=center border=\"0\" cellpadding=5 cellspacing=2 >";
$j = 0;
WHILE ($j < $number)
{
$id = mysql_result($result,$j,"id");
$image = mysql_result($result,$j,"image");
$descr = mysql_result($result,$j,"descr");
$link = mysql_result($result,$j,"link");
$title = mysql_result($result,$j,"title");
echo"<td>";
if ($link !="") { echo "<img src=\"img/mic/".$image.".jpg\" border=0 ></TD>";}
else echo "<img src=\"img/mic/".$image.".jpg\" border=0 ></TD>";
$j++;
}// конец вывода строки
?>
</tr>
<?
}// конец вывода таблицы
?>
</table>
<?
}// конец выводы страницы
/// конец всего
?>
|
| |
|
|
|
|
|
|
|
для: franko
(31.03.2011 в 19:42)
| | Вот хороший пример
<?php
$sql = mysql_query("SELECT id,name foto_name FROM katalog ORDER BY id ");
if(!$sql)
{echo "<br>В данном разделе пока нет информации";}
else
{
if(mysql_num_rows($sql) > 0)
{
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
$i = 0;
while ($row = mysql_fetch_array($sql))
{
$i++;
if($i == 1) echo "<tr >";
echo "<td><table class='t14' width='100px' border='0' cellspacing='0' cellpadding='0' >
<tr>
<td><strong class='t16'>$row[name]</strong></td>
</tr>
<tr>
<td><a href='descript.php?id=$row[id]'><img class='img' border='0' width='100px' height='75px' src='img/tovar/small/".$row['foto_name']."'></a></a></td>
</tr>
<tr>
<td><span class='t15'>Цена: </span></td>
</tr>
<tr>
<td align='center'><center><a class='b11_1' href='add_korzina.php?id=$row[id]&action=1'></a></center></td>
</tr>
</table></td>";
//Указываем количество столбцов на странице
if($i == 4)
{
echo "</tr>";
$i = 0;
}
}
echo "</table>";
}}
?>
|
| |
|
|
|
|
|
|
|
для: Dinya_1
(31.03.2011 в 23:06)
| | воспользовался вашим примером
есть вопросы.
<?php
$sql = mysql_query("SELECT * FROM regions ORDER by title");
if(!$sql)
{echo "<br>В данном разделе пока нет информации";}
else
{
if(mysql_num_rows($sql) > 0)
{
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
$i = 0;
while ($row = mysql_fetch_array($sql))
{
$i++;
if($i == 1) echo "<tr>";
echo "<td><table width='100px' border='0' cellspacing='0' cellpadding='0' >
<tr>
<td><a href='post_regions.php?id_region=$row[id_region]'>$row[title]</a></td>
</tr>
</table></td>";
//Указываем количество столбцов на странице
if($i == 4)
{
echo "</tr>";
$i = 0;
}
}
echo "</table>";
}}
?>
|
1. Почему-то происходит разрыв в title, т.е на вывод идет название, к примеру так
Московский
университет
а не в строчку. не могу понять где разрывается...
2. Вывод идет построчно в этом коде, а как вывести постолбно. заполняем вначале 1-й стоблик, а потом второй... | |
|
|
|
|
|
|
|
для: franko
(01.04.2011 в 14:18)
| | 1. Разрыв идет по пробелу, это типичное поведение в таблицах, чтобы запретить такой перевод строк добавьте атрибут nowrap в тэг <td> | |
|
|
|
|
|
|
|
для: franko
(01.04.2011 в 14:18)
| | 2. Для этого все ссылки необходимо предварительно поместить в массив, который потом выводить при помощи скрипта, который приведен ниже
<?php
$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");
// Вычисляем количество элементов в массиве
$total = count($filename);
// Количество столбцов в таблице
$numcols = 3;
// Вычисляем количество строк
$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 border=1>";
for($i = 0; $i < $number; $i++)
{
echo "<tr>";
for($j = 0; $j < $numcols; $j++)
{
echo "<td>".$arr[$i][$j]."</td>";
}
echo "</tr>";
}
echo "</table>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.04.2011 в 14:37)
| | Что здесь подразумевается под ссылками? | |
|
|
|
|
|
|
|
для: franko
(01.04.2011 в 15:17)
| | >Что здесь подразумевается под ссылками?
<a href='post_regions.php?id_region=$row[id_region]'>$row[title]</a> | |
|
|
|
|
|
|
|
для: cheops
(01.04.2011 в 16:58)
| | т.е должно выглядеть следующим образом?
<?php
$filename = array("post_regions.php");
верно? | |
|
|
|
|
|
|
|
для: franko
(01.04.2011 в 18:29)
| | Нет, лучше в цикле while, который обрабатывает результирующую таблицу, этому массиву присвоить уже готовые ссылки
<?php
...
$filenamep[] = "<a href='post_regions.php?id_region=$row[id_region]'>$row[title]</a>";
...
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.04.2011 в 18:55)
| | т.е в итоге будет вот так?
<?php
$filenamep[] = "<a href='post_regions.php?id_region=$row[id_region]'>$row[title]</a>";
// Вычисляем количество элементов в массиве
$total = count($filename);
// Количество столбцов в таблице
$numcols = 3;
// Вычисляем количество строк
$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 border=1>";
for($i = 0; $i < $number; $i++)
{
echo "<tr>";
for($j = 0; $j < $numcols; $j++)
{
echo "<td>".$arr[$i][$j]."</td>";
}
echo "</tr>";
}
echo "</table>";
?>
|
верно? | |
|
|
|
|
|
|
|
для: franko
(01.04.2011 в 23:21)
| | Нет. Вам нужно получить массив.
$sql = mysql_query("SELECT * FROM regions ORDER by title");
if(!$sql)
{echo "<br>В данном разделе пока нет информации";}
else
{
if(mysql_num_rows($sql) > 0)
{
while ($row = mysql_fetch_array($sql))
{
$filename[] = "<a href='post_regions.php?id_region=$row[id_region]'>$row[title]</a>";
}
}
}
?>
| А вот уже после того, как массив $filename заполнен, можно использовать приведенный выше скрипт. | |
|
|
|