[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл в таблице
Athlete
Здравствуйте! Помогите, пожалуйста, решить задачку: пишу запрос, результат вывожу в таблицу:

PHP
$sql = ("SELECT * 
FROM upp_ttn 
WHERE to_days(date)>=to_days(curdate())-5 
AND pokup=0 
AND rastvor=1"
);

$result = mysql_query($sql);
$sql1 = ("SELECT DISTINCT beton 
FROM upp_ttn 
WHERE to_days(date)>=to_days(curdate())-5 
AND pokup=0 
AND rastvor=1"
);

$result1 = mysql_query($sql1);

$table .= "<table border=1 align=center cellspacing=1><tr bgcolor=#C0c0c0>";
$table .= "<td>№</td><td>Продукция</td><td>Марка</td><td>Кол-во</td><td>Цена</td>
<td>Прораб</td><td>Объект</td><td>Водитель</td>
<td>Номер авто</td><td>Путевой лист</td></tr>"
;

     while ($row = mysql_fetch_assoc($result))
     {
         $table .= "<tr bgcolor=#FFDD33><td>".$row['sernom']."</td><td>".$row['beton']."</td>
<td>"
.$row['marka']."</td><td>".$row['cube']."</td>
<td>"
.$row['cost']."</td><td> </td><td> </td>
<td>"
.$row['driver']."</td><td>".$row['garn']."</td>
<td>"
.$row['list']."</td>";
        

     
}

    
    $table 
.= "</table>";

    echo $table;

Мне надо, чтобы данные из запроса sql1 выводились как заголовок данной таблицы. Т.е. если там одна, две, три и т.д. позиции, надо чтобы добавлялось один, два, три и т.д. столбца. Помогите, пожалуйста.

Все, что нарыл в мануале это:
PHP
print "<table>\n";
    while ($line = mysql_fetch_array($result1, MYSQL_ASSOC)) {
        
        foreach 
($line as $col_value) {
            print "\t<tr>$col_value\n";
        }
        print "\t\t<td></td>\n";
        print "\t</tr>\n";
    }
    print "</table>\n";


Подскажите, как это можно использовать для моей таблицы?



Спустя 10 минут, 10 секунд (27.05.2009 - 06:57) Kuliev написал(а):
Athlete
PHP
while ($row mysql_fetch_assoc($result))
     {
         
$table .= "<td>".++$i."</td>"
        

     
}


Спустя 57 минут, 18 секунд (27.05.2009 - 07:55) Athlete написал(а):
Какая то ерунда получается. Выводится похоже не сами элементы массива, а их порядковые номера 1, 2, 3, 4, 5.

Спустя 21 минута, 38 секунд (27.05.2009 - 08:16) Kuliev написал(а):
Цитата (Athlete @ 27.05.2009 - 09:55)
Какая то ерунда получается. Выводится похоже не сами элементы массива, а их порядковые номера 1, 2, 3, 4, 5.

Так оно и есть, выводится порядковый номер. Просто не внимательно пост прочел.
в общем делай так:
PHP
$sql = ("SELECT * 
FROM upp_ttn 
WHERE to_days(date)>=to_days(curdate())-5 
AND pokup=0 AND rastvor=1"
);

$result mysql_query($sql);

$sql1 = ("SELECT DISTINCT beton 
FROM upp_ttn 
WHERE to_days(date)>=to_days(curdate())-5 
AND pokup=0 AND rastvor=1"
);

$result1 mysql_query($sql1);

while (
$row mysql_fetch_assoc($result1))
{

$arr_beton[] = $row['beton'];

}

// Вот теперь у тебя есть массив ($arr_beton) с данными из запроса $sql1
// Теперь делай с ним что хочешь

$table .= "<table border=1 align=center cellspacing=1><tr bgcolor=#C0c0c0>";

$table .= "<td>№</td><td>Продукция</td><td>Марка</td><td>Кол-во</td>
<td>Цена</td><td>Прораб</td><td>Объект</td><td>Водитель</td>
<td>Номер авто</td><td>Путевой лист</td></tr>"
;

     while (
$row mysql_fetch_assoc($result))
     {
         
$table .= "<tr bgcolor=#FFDD33><td>".$row['sernom']."</td><td>".$row['beton']."</td>
<td>"
.$row['marka']."</td><td>".$row['cube']."</td><td>".$row['cost']."</td><td> 
</td><td> </td><td>"
.$row['driver']."</td>
<td>"
.$row['garn']."</td><td>".$row['list']."</td>";
        

     }

    
    
$table .= "</table>";

    echo 
$table;


Спустя 27 минут, 36 секунд (27.05.2009 - 08:44) Kuliev написал(а):
Athlete
Цитата

Мне надо, чтобы данные из запроса sql1 выводились как заголовок данной таблицы. Т.е. если там одна, две, три и т.д. позиции, надо чтобы добавлялось один, два, три и т.д. столбца. Помогите, пожалуйста.


Куда должно добавляться, объясни толком, а то как то скудновато ты написал.

Спустя 14 минут, 47 секунд (27.05.2009 - 08:59) Athlete написал(а):
Что то типа этого

Спустя 8 минут, 43 секунды (27.05.2009 - 09:08) Kuliev написал(а):
Цитата (Athlete @ 27.05.2009 - 10:59)
Что то типа этого

PHP
<?php
$sql 
= ("SELECT *
FROM upp_ttn
WHERE to_days(date)>=to_days(curdate())-5
AND pokup=0 AND rastvor=1"
);

$result mysql_query($sql);

$sql1 = ("SELECT DISTINCT beton
FROM upp_ttn
WHERE to_days(date)>=to_days(curdate())-5
AND pokup=0 AND rastvor=1"
);

$result1 mysql_query($sql1);

while (
$row mysql_fetch_assoc($result1))
{

$arr_beton[] = $row['beton'];

}

// Вот теперь у тебя есть массив ($arr_beton) с данными из запроса $sql1
// Теперь делай с ним что хочешь

$table .= "<table border=1 align=center cellspacing=1><tr bgcolor=#C0c0c0>";

$table .= "<td>№</td><td>Продукция</td><td>Марка</td><td>Кол-во</td>
<td>Цена</td><td>Прораб</td><td>Объект</td><td>Водитель</td>
<td>Номер авто</td><td>Путевой лист</td>"
;

foreach (
$arr_beton as $val)
{
  
$table .= "<td>".$val."</td>";
}

$table .="</tr>";

     while (
$row mysql_fetch_assoc($result))
     {
         
$table .= "<tr bgcolor=#FFDD33><td>".$row['sernom']."</td><td>".$row['beton']."</td>
<td>"
.$row['marka']."</td><td>".$row['cube']."</td><td>".$row['cost']."</td><td>
</td><td> </td><td>"
.$row['driver']."</td>
<td>"
.$row['garn']."</td><td>".$row['list']."</td>";


     }


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

    echo 
$table;


Спустя 49 минут, 33 секунды (27.05.2009 - 09:57) Athlete написал(а):
Спасибо огромное за помощь!

Спустя 1 час, 8 секунд (27.05.2009 - 10:57) Kuliev написал(а):
Цитата (Athlete @ 27.05.2009 - 11:57)
Спасибо огромное за помощь!

Пожалуйста, обращайся. biggrin.gif biggrin.gif

Спустя 4 дня, 21 час, 2 минуты, 45 секунд (2.06.2009 - 08:00) Athlete написал(а):
Вынужден опять просить помощи, сейчас заголовок таблицы выводиться как надо, но таблица получается не заполненная (см. скрин). Мне надо раскидать данные из БД как на скрине в след. посте.

Спустя 7 минут, 5 секунд (2.06.2009 - 08:07) Athlete написал(а):
Подскажите в каком направлении мыслить, какой цикл тут нужен, может и не цикл. Я думаю так: каждой позиции в поле продукция соответствует один из заголовков, которые мы получили из цикла foreach. На этом пересечении и надо подставить данные из БД. Как это реализовать хотя бы в теории?

Спустя 20 минут, 16 секунд (2.06.2009 - 08:27) Kuliev написал(а):
Athlete
Что-то я ничего не понял. Может вам одним запросом все это выбрать из нескольких таблиц и выводить.

Спустя 4 минуты, 41 секунда (2.06.2009 - 08:32) Athlete написал(а):
ну это и выбирается одним запросом, у меня вопрос в том как расставить данные в нужном порядке, примерно таким образом, как показано на скрине.

PHP
$sql = ("SELECT * FROM upp_ttn WHERE to_days(date)>=to_days(curdate())-5 AND  pokup=0 AND rastvor=1");

Этот запрос выбирает все нужные мне данные, я просто не соображу как их так хитро расставить

Спустя 4 минуты, 41 секунда (2.06.2009 - 08:37) Kuliev написал(а):
Цитата (Athlete @ 2.06.2009 - 10:32)
ну это и выбирается одним запросом, у меня вопрос в том как расставить данные в нужном порядке, примерно таким образом, как показано на скрине.

PHP
$sql = ("SELECT * FROM upp_ttn WHERE to_days(date)>=to_days(curdate())-5 AND  pokup=0 AND rastvor=1");

Этот запрос выбирает все нужные мне данные, я просто не соображу как их так хитро расставить

Ну так все просто, в запросе выдели поля которые нужны
PHP
$sql = ("SELECT id, bla, bla1, bla2 
FROM upp_ttn
WHERE to_days(date)>=to_days(curdate())-5 AND  pokup=0 AND rastvor=1"
);


что то типа этого а потом выводи
PHP
while ()
{

echo 
"<td>".$row['id']."</td><td>".$row['bla']."</td><td>".$row['bla1']."</td>";
}

// и так далее



Спустя 8 минут (2.06.2009 - 08:45) Athlete написал(а):
Тут дело осложняется тем, что последние столбцы формируются в зависимости от БД. На скрине у меня 5 столбцов, их может быть больше, может быть меньше, вот я и думаю как расставить данные. Если бы все было статично, то проблем бы не было

Спустя 4 минуты, 53 секунды (2.06.2009 - 08:50) Kuliev написал(а):
Athlete
Используй функцию mysql_num_fields()

Спустя 12 минут, 42 секунды (2.06.2009 - 09:02) sergeiss написал(а):
Цитата (Athlete @ 2.06.2009 - 09:45)
Тут дело осложняется тем, что последние столбцы формируются в зависимости от БД. На скрине у меня 5 столбцов, их может быть больше, может быть меньше, вот я и думаю как расставить данные. Если бы все было статично, то проблем бы не было

А нафига их "расставлять", и какое это имеет отношение к запросу?
Запрашивай выбранные из таблицы данные через mysql_fetch_assoc, и используй полученный ассоциативный массив. Если надо - анализируй ключи, и в зависимости от наличия/отсутствия полей делай какой-то вывод данных.
Быстрый ответ:

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