[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите решить задачку.
Eretic
Здравствуйте.
Возникли трудности при решении одной задачи.
Как правильно вывести данные в таблицу?
Эталон - не php версия сайта http://themes4xp.ru.
Там контент выложен в виде таблицы в два ряда по 4 темы.
В php версии сайта я пытаюсь вывести контент из БД с помощью цикла "do while":


<table>
<caption>Темы XP, страница <a href="vehicle.php">1</a> <a href="vehicle2.php">2</a> </caption>
<?php
include ("blocks/bd.php");
$result = mysql_query("SELECT id, title,img, link FROM vihicles",$db);
$myrow = mysql_fetch_array($result);
echo "<tr>";
do {
printf (" <tr><th>%s</th></tr>
<tr><td>%s</td></tr>
<tr>
<th>%s</th>",$myrow['title'],$myrow['img'] ,$myrow['link'] );

}
while ($myrow = mysql_fetch_array ($result));
echo "</tr>";
?>

</table>


Но в результате никак не получается таблица в два ряда по 4 темы. А получается только одна колонка и много много рядов, уходящих вниз.

Подскажите пожалуйста, как осуществить корректно вывод из БД в таблицу?



Спустя 2 минуты, 17 секунд (27.03.2009 - 16:21) Stuff_f написал(а):
у тебя есть денвер??

Спустя 5 минут, 43 секунды (27.03.2009 - 16:27) Stuff_f написал(а):
SELECT * FROM `registration` WHERE 1 - это ты выделяешь в сю базу, правильно с именем registration


таблицу выделить
SELECT *
FROM `registration`
WHERE `id` - что id является таблицей
LIMIT 0 , 30


Если я правильно понял тебя конечно!!!!!!!!!

Спустя 6 минут, 21 секунда (27.03.2009 - 16:33) Нимфа написал(а):
PHP
$result mysql_query("SELECT id, title,img, link FROM vihicles",$db);
while( 
$myrow mysql_fetch_array($result))
{
echo 
"<tr>";
           echo 
"<th>".$myrow['title'].$myrow['img'] .$myrow['link']."</th>" ;
echo 
"</tr>";
}



Вот так попробуй, между тегами <th></th> выводи нужные тебе значения

Спустя 3 минуты (27.03.2009 - 16:36) Stuff_f написал(а):
Ну блин приблезительно был близок

Спустя 1 минута, 10 секунд (27.03.2009 - 16:37) Семён написал(а):
Человек пытается узнат как сделать вывод из бд в 4 колонки....... а не как выводить в строчку.

Спустя 1 минута, 50 секунд (27.03.2009 - 16:39) Семён написал(а):
Вот когда-то делал.... $ad_cat_rows_1 = '1'; по-скольку колонок необходимо выводить может пригодиться... Выводи хоть по 100 biggrin.gif

PHP
$sql1_1 = mysql_query("SELECT * FROM `ad_cats` Where hide='0' && in_cat='0'");
    $count_w1_1= 0; //Счётчик цикла (для таблиц)
    $count_с1_1 = 0; //Счётчик цикла (для значения последней ячейки)
    $ad_cat_rows_1 = '1'; //Кол-во колонок для вывода главных категорий
    $count1_1 = mysql_num_rows($sql1_1); //Кол-во категорий
    while($row1_1 = mysql_fetch_array($sql1_1))
    {
    $count_w1_1 = $count_w1_1 + 1; //Счётчик категорий
    $count_c1_1 =  $count_c1_1 +1; //Счётчик категорий
    
    if
($count_w1_1 == $ad_cat_rows_1 && $count_c1_1 != $count1_1)  { $row1_1['tr2']  = "</tr>"; $count_w1_1 = 0;}  //Если конец в колоке
    if($count_w1_1 == 1) { $row1_1['tr']  = "<tr>"; } //Если первая запись в колонке
    if($count_c1_1 == $count1_1)  { $row1_1['tr3']  = "</tr>"; } //Если последняя категория
    $row1_1['url'] = "<tr><td width='220px' bgcolor='#F8F8F8'><a href='index.php?ad&amp;ad_cat=$row1_1[id]'><small>$row1_1[name]</small></a></td>"; //Ссылка на категорию
    $ad_cats_1[] = $row1_1;
    }

Спустя 46 минут, 37 секунд (27.03.2009 - 17:26) Eretic написал(а):
да, используется дэнвер 3
спасибо.
столько сразу вариантов.
надо разобраться.

Спустя 1 час, 59 минут, 36 секунд (27.03.2009 - 19:25) Kuliev написал(а):
Eretic
Я так понимаю тебе надо что то на подобие этого!
PHP
<?
$table"<table><tr>";
 
   while (
$row mysql_fetch_assoc($result))
{
 
 
$table.="<td>".$row['cat']."</td>";

 if (++
$a%4==0){ $table.="</tr><tr>"; }

 }
 
$table.= "</tr></table>";

 echo 
$table;


Спустя 19 часов, 42 минуты, 57 секунд (28.03.2009 - 15:08) Eretic написал(а):
Последний вариант - похоже то что нужно. Главная задача решена. Сразу вытекает ещё одна.

Если пользоваться последним вариантом - какой php код надо прописать, что бы выводить по 8 тем на странице, а следущие 8 выводить нажатием кнопки "Далее" на этой же странице? (всего в БД к примеру, 30 тем).
тогда нужна будет кнопка "Назад", что бы вернуться...

И можно ли на одной странице всё это реализовать?

Спустя 3 часа, 29 минут, 2 секунды (28.03.2009 - 18:37) twin написал(а):
Вариант хоть и рабочий, но не валидный. При количестве записей не кратным 4 разметка поплывёт. Вот рабочий вариант на любое количество колонок. Константу можно в конфигу вынести.
PHP
define("COLUMNS"4);    
    
$rows mysql_num_rows($sql1_1);
        if(
$rows 0)
        { 
        
$table "\r\n<table>\r\n";
             
        
$cells COLUMNS intval(($rows COLUMNS ) / COLUMNS);  
            for(
$i=0$i $cells; )  
            { 
                if(
$i COLUMNS == 0)            
                
$table .= "<tr>\r\n";  
                
$cat "&nbsp;";  
                        if(
$i $rows)
                    {
                    
$row mysql_fetch_assoc($sql1_1);   
                    
$cat $row['cat'];
                    }
            
$table .= "<td>".$cat."</td>\r\n";    
                
                        if(++
$i COLUMNS == 0)  
                        
$table .= "</tr>\r\n"
            } 
        }  
$table .= "</table>\r\n";

Спустя 2 часа, 41 минута, 38 секунд (28.03.2009 - 21:19) Kuliev написал(а):
Цитата (Eretic @ 28.03.2009 - 12:08)


Если пользоваться последним вариантом - какой php код надо прописать, что бы выводить по 8 тем на странице, а следущие 8 выводить нажатием кнопки "Далее" на этой же странице?  (всего в БД к примеру, 30 тем).
тогда нужна будет кнопка "Назад", что бы вернуться...

И можно ли  на одной странице всё это реализовать?

Вот тебе инструкция к применению
Навигация

Спустя 1 день, 37 минут, 40 секунд (29.03.2009 - 20:56) Eretic написал(а):
Всё решено. опробовал предпоследний вариант в 5-ти лучших браузерах. Менял количество записей по всякому, количество колонок.
Вариант - рабочий. Не плывет.
Спасибо всем за все предложеные решения.
Последняя задача тоже решена, оператор LIMIT тщательно изучен .
Тему можно закрывать.

Спустя 22 минуты, 50 секунд (29.03.2009 - 21:19) twin написал(а):
Верстка просто получается не валидная. Посмотри в исходнике. Или бордер поставь ячейкам - так увидишь. Браузеры это пока прощают конечно, и слава Богу. Но на Бога надейся, а сам не плошай.

Спустя 46 минут, 3 секунды (29.03.2009 - 22:05) Eretic написал(а):
twin, ok, поменяю
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.