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

Форум MySQL

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

 

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

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

тема: Вывод результатов из базы данных в несколько столбцов
 
 автор: franko   (31.03.2011 в 19:42)   письмо автору
 
 

Добрый вечер!

есть цикл
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));
}


но смотрится тяжело. список большой. а как вывести это к примеру в два (или в три) столбца?

  Ответить  
 
 автор: cheops   (31.03.2011 в 20:33)   письмо автору
 
   для: franko   (31.03.2011 в 19:42)
 

Возможно вас заинтересует решение по ссылке http://softtime.ru/forum/read.php?id_forum=3&id_theme=8325.

  Ответить  
 
 автор: elenaki   (31.03.2011 в 20:46)   письмо автору
 
   для: 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>
<?
}// конец выводы страницы
/// конец всего
?>

  Ответить  
 
 автор: Dinya_1   (31.03.2011 в 23:06)   письмо автору
 
   для: 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>"
}}
    
?>


  Ответить  
 
 автор: franko   (01.04.2011 в 14:18)   письмо автору
 
   для: 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-й стоблик, а потом второй...

  Ответить  
 
 автор: cheops   (01.04.2011 в 14:32)   письмо автору
 
   для: franko   (01.04.2011 в 14:18)
 

1. Разрыв идет по пробелу, это типичное поведение в таблицах, чтобы запретить такой перевод строк добавьте атрибут nowrap в тэг <td>

  Ответить  
 
 автор: cheops   (01.04.2011 в 14:37)   письмо автору
 
   для: 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>";
?>

  Ответить  
 
 автор: franko   (01.04.2011 в 15:17)   письмо автору
 
   для: cheops   (01.04.2011 в 14:37)
 

Что здесь подразумевается под ссылками?

  Ответить  
 
 автор: cheops   (01.04.2011 в 16:58)   письмо автору
 
   для: franko   (01.04.2011 в 15:17)
 

>Что здесь подразумевается под ссылками?
<a href='post_regions.php?id_region=$row[id_region]'>$row[title]</a>

  Ответить  
 
 автор: franko   (01.04.2011 в 18:29)   письмо автору
 
   для: cheops   (01.04.2011 в 16:58)
 

т.е должно выглядеть следующим образом?

<?php
$filename = array("post_regions.php");

верно?

  Ответить  
 
 автор: cheops   (01.04.2011 в 18:55)   письмо автору
 
   для: franko   (01.04.2011 в 18:29)
 

Нет, лучше в цикле while, который обрабатывает результирующую таблицу, этому массиву присвоить уже готовые ссылки
<?php
  
...
  
$filenamep[] = "<a href='post_regions.php?id_region=$row[id_region]'>$row[title]</a>";
  ...
?>

  Ответить  
 
 автор: franko   (01.04.2011 в 23:21)   письмо автору
 
   для: 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>"
?>

верно?

  Ответить  
 
 автор: cheops   (02.04.2011 в 00:46)   письмо автору
 
   для: 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 заполнен, можно использовать приведенный выше скрипт.

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

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