Athlete
27.05.2009 - 07:47
Здравствуйте! Помогите, пожалуйста, решить задачку: пишу запрос, результат вывожу в таблицу:
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) |
Спасибо огромное за помощь! |
Пожалуйста, обращайся.
Спустя 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, и используй полученный ассоциативный массив. Если надо - анализируй ключи, и в зависимости от наличия/отсутствия полей делай какой-то вывод данных.