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

Форум MySQL

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

 

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

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

тема: Вывод данных из базы в таблицу в 3 столбца
 
 автор: CTyDEHT   (31.10.2006 в 16:23)   письмо автору
 
 

День добрый.
Ситуация такова: есть код, который выводит информацию из базы:



$sql = "SELECT id, name, phone, img FROM $dtable";
/* Исполнение SQL запроса */
$result = mysql_query($sql);
/* Проверка количества вернувшихся строчек в результате*/
$rows = mysql_num_rows($result);
/* Если нет результата или результат меньше 1, то предупредить нас об этом или вывести результат*/
if ((!$rows) || ($rows < 1)) {echo "Результатов НЕТ!!!";}
else {
echo '<table border="1" cellspacing="1" cellpadding="0">
<tr>
<td>ID</td>
<td>Имя</td>
<td>Телефон</td>
<td>Photo</td>
</tr>';
while(list($id, $name, $phone, $img) = mysql_fetch_row($result)) {
echo "<tr>
<td>$id</td>
<td>$name</td>
<td>$phone</td>
<td><img src=\"http://". $_SERVER['HTTP_HOST'] ."/$img\" alt=\"$name\" border=2></td>
</tr>";
     }
}
print "</table>\n";




Получается примерно такая таблица на html странице:
-------------------------------------------------
| ID | Имя | Телефон | Фото |
-------------------------------------------------
| 1 | имя_1| 111-11 | фото_1|
-------------------------------------------------
| 2 | имя_2| 222-22 | фото_2|
-------------------------------------------------
| 3 | имя_3| 333-33 | фото_3|
-------------------------------------------------
| ... | ........ | ............. | ......... |
-------------------------------------------------
| n | имя_n| nnn-nn | фото_n|
-------------------------------------------------

Вопрос: как сделать вывод на два столбца, на три стобца, четыре и т.п.??
Приаттачил картинку, где нарисовал желаемый итог.

Заранее спасибо...

   
 
 автор: elenaki   (31.10.2006 в 16:47)   письмо автору
 
   для: CTyDEHT   (31.10.2006 в 16:23)
 

посмотрите этот код


<table align=center border="0" cellpadding="5">
<tr>
<td align="left" colspan="2">
<?php
require "config.php";

$show_cols 4// kol-vo stolbcov na stranitce
$show_rows 4//kol-vo strok na stranice
if (!isset($start1)) $start1=1;

//opredelyaem skol'ko strolbcov i gde mi naxodimsya
$query "SELECT * FROM ecard_pics WHERE own like 'Y' and markdel = 'N' order by pic_id ";//vibiraem vse
$array=mysql_query($query); 
$num_rows mysql_num_rows($array); //kolvo strok v baze
$cols=floor($num_rows/$show_cols); //kolvo stolbcov
$pages floor($num_rows/($show_cols*$show_rows));//kol-vo stranic

if ($num_rows $show_cols*$show_rows*$pages$pages++; //esli strok v baze > chem pomeschaetsa na 1 str. perexodim na sled str.
for ($ii=1$ii<=$pages$ii++) { //cikl perebora vsex stranic
$from1=$ii*$show_rows*$show_cols-($show_rows*$show_cols-1); //kol-vo pokaz-x str-c minus kol-vo stranic minus 1
$to1=$ii*$show_rows*$show_cols//kol-vo pokazan. stranic
if ($to1 $num_rows$to1 $num_rows//esli pokaz. str-c  > chem strok v baze, to delaem =
if ($start1==$from1) echo "| <font style=\"font-face: Verdana, Arial, Helvetica, sans-serif;
    color : #ff8c00; font-weight : bold; font-size: 12px;\">
$from1 - $to1</font>"
else 
{echo 
" | <a href=\"view4.php?start1=$from1&gal=$gal\" style=\"font-face: Verdana, Arial, Helvetica, sans-serif;
    color : #000000; font-weight : bold; font-size: 12px;\"> 
$from1 - $to1</a>";}
        
}
?>
</td></tr></table><br><br>
<?
/// vivos stranicw    
if ($num_rows $pages*$show_cols*$show_rows$vid++; 
for (
$iii=0$iii<=$vid$iii++) { 

/// vivos tablicw    

if ($num_rows $show_rows$show_rows++; 
for (
$i=2$i<=$show_rows$i++) { 
$start1=$start1 1
$query "SELECT * FROM ecard_pics WHERE own = 'Y' and markdel = 'N' ORDER BY pic_id 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)
     {
     
$pic_name mysql_result($result,$j,"pic_name");
     echo
"<td align=center bgcolor=#ffffff valign=middle><img src=\"mic/".$pic_name."\" border=0></TD>";
     
$j++;
     }
// konec vivoda stroki

}// konec vivoda tablici
}// konec vivoda stranici
/// konetc
?>

</table>

   
 
 автор: CTyDEHT   (31.10.2006 в 22:12)   письмо автору
 
   для: elenaki   (31.10.2006 в 16:47)
 

Спасибо.
Вот итоговый рабочий код (может тоже поможет кому...):


<?
$host 
"localhost";    // MySQL server
$user_db "admin";        // MySQL пользователь
$pass_db "password";            // MySQL пароль
$dbase "anketa";        // MySQL база данных
$dtable "phone";        // Таблица в базе данных
mysql_connect ($host$user_db$pass_db);
mysql_select_db($dbase);
$sql "SELECT id, name, phone, img FROM $dtable";
$result mysql_query($sql);
$rows mysql_num_rows($result);
if ((!
$rows) || ($rows 1)) {echo "Результатов НЕТ!!!";}
else {
echo 
"<table border=1 cellspacing=1 cellpadding=0>";
$tr 0// счётчик ячеек 
while (list($id$name$phone$img) = mysql_fetch_row($result)) {  
  if (
$tr == 0) echo "<tr>"// открываем строку 
echo "<td>$id</td><td>$name</td><td>$phone</td><td><img src=\"http://"$_SERVER['HTTP_HOST'] ."/$img\" alt=\"$name\" border=2></td>";
$tr++; // увеличиваем счётчик  ячеек 
if ($tr == 3) { 
 echo 
"</tr>"// закрываем строку 
$tr 0// обнуляем счётчик 
  

}
print 
"</table>\n";
}
?>

   
 
 автор: NIK   (31.10.2006 в 18:05)   письмо автору
 
   для: CTyDEHT   (31.10.2006 в 16:23)
 

я всегда пользуюсь таким кодом

$td = 0; // счётчик ячеек
# Выводишь заголовки ячеек
while (// выборка из бд) { 
  if ($td == 0) echo "<tr>"; // открываем строку
  # выводишь ячеку
  $td++; // увеличиваем счётчик  ячеек
  if ($td == 3) {
    echo "</tr>"; // закрываем строку
    $td = 0; // обнуляем счётчик
  }
}


всё, подставляешь в свой код

   
 
 автор: cheops   (31.10.2006 в 19:03)   письмо автору
 
   для: CTyDEHT   (31.10.2006 в 16:23)
 

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

   
 
 автор: CTyDEHT   (31.10.2006 в 20:21)   письмо автору
 
   для: CTyDEHT   (31.10.2006 в 16:23)
 

Спасибо за внимание к вопросу. Вечером опробую непременно.

На этом форуме принято отписываться при положительных результатах? А то как только человеку помогают найти решение задачи, то он пропадает безследно.
Например я прочитал форум от корки до корки, очень много попадалось тем брошеных. И не ясно, верное ли решение, приведенное в последнем сообщении или нет...

   
 
 автор: cheops   (31.10.2006 в 23:24)   письмо автору
 
   для: CTyDEHT   (31.10.2006 в 20:21)
 

Какждый решает сам, отчитываться о результатах или нет... Действуйте как вам удобнее.

   
Rambler's Top100
вверх

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