я создаю форму для отчёта,в которую попадает информация из базы по отделам и сотрудникам,табличка банальна и не сложна,она по сути вовсе не является важной частью работы,но препод сказал что "вывод на печать" должен быть! Показуху видно везде любят) но вопрос для меня интересный=)
у меня выводится табличка,я ее прикрепил к сообщению. Отделы выводятся в цикле через printf. Сотрудники хранятся в таблице works. Поле id таблицы otdel совпадает с полем otdel таблицы works. (загнул)Но вот в столбце сотрудники я столкнулся с проблемой,у меня выводится только первый сотрудник,а нужно чтоб в столбик "сотрудники" попадали все сотрудники из данного отдела.
......
$rep = mysql_query("SELECT id,title,kolvo_sotr FROM otdel WHERE kolvo_sotr > 0 ORDER BY title",$db);
$q1 = mysql_query("SELECT SUM(q_vote) as sum_q, SUM(reiting) as sum_r FROM works GROUP BY otdel ORDER by title",$db);
?>
<table align="center" border="1" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="font">
<tr height="50px">
<td width="220"><center><b>ОТДЕЛ</b></center></td>
<td width="120"><center><b>КОЛ-ВО СОТРУДНИКОВ</b></center></td>
<td width="100"><center><b>РЕЙТИНГ</b></center></td>
<td width="56" ><center><b>КЭ(%)</b></center></td>
<td width="250"><center><b>СОТРУДНИКИ</b></center></td>
</tr>
<?
$sotrud1 = mysql_query("SELECT name,fam,otch FROM works GROUP by otdel ORDER BY title",$db);
$sotrud = mysql_fetch_assoc($sotrud1);
while ($report=mysql_fetch_assoc($rep) and $q = mysql_fetch_assoc($q1))
{
if ($q['sum_q']>0)
{
$r = $q['sum_r']*20/$q['sum_q'];
$r = (int)$r;
}
else {$r = 0;}
printf ("
<tr height='45px' >
<td width='220'><center>%s</center></td>
<td width='100'><center>%s</center></td>
<td width='100'><center>%s</center></td>
<td width='56'><center>%s</center></td>
<td width='250'><center>%s %s %s<br></center></td>
</tr> " ,$report["title"],$report["kolvo_sotr"],$q["sum_r"],$r,$sotrud["fam"],$sotrud["name"],$sotrud["otch"]);
}?>
Проблема в том что я не понимаю как вывести в столбик отдела всех сотрудников построчно,мне приходит в голову цикл while с выводом всех сотрудников по полю отдел,но я ума не приложу как выполнить этот цикл в цикле,еще и внутри printf. Одним словом встрял
Спустя 1 час, 18 минут, 30 секунд (17.05.2011 - 19:30) inpost написал(а):
Берёшь фотошоп и изображаешь то, что хочешь, и как есть сейчас. Потому что на словах непонятно, что именно ты хочешь

Спустя 3 часа, 54 минуты, 59 секунд (17.05.2011 - 23:25) kirik написал(а):
Kumirska
А почему должны выводиться все сотрудники, если вы только одного, первого выводите?
Я про запрос SELECT name,fam,otch FROM works GROUP by otdel ORDER BY title и про один единственный mysql_fetch_assoc для этого запроса.
А почему должны выводиться все сотрудники, если вы только одного, первого выводите?
Я про запрос SELECT name,fam,otch FROM works GROUP by otdel ORDER BY title и про один единственный mysql_fetch_assoc для этого запроса.
Спустя 23 минуты, 54 секунды (17.05.2011 - 23:49) Kumirska написал(а):
inpost,спасибо что откликнулся,у меня проблемы с кабелем который идет к дому,тобешь интернетом моим,этип ушлёпкам звонил сказал приедут починят,но так и не приехали,так что малейший ветерок и славно качающее дерево лишает обрывает связь каждые 3-4 минуты)
поэтому уже свесил руки так как сам не могу сделать и в нэт толком зайти не получилось.
чёт целая поэма)
kirik, чтоб вывести в последнем столбике всех сотрудников надо использовать ведь тоже цикл,я пробовал по-разному и искала в гугле,но трудно найти именно тот случай что мне нужен. А цикл в цикле еще и внутри printf у меня пока не хватает опыта понять как его сделать.
поэтому уже свесил руки так как сам не могу сделать и в нэт толком зайти не получилось.
чёт целая поэма)
kirik, чтоб вывести в последнем столбике всех сотрудников надо использовать ведь тоже цикл,я пробовал по-разному и искала в гугле,но трудно найти именно тот случай что мне нужен. А цикл в цикле еще и внутри printf у меня пока не хватает опыта понять как его сделать.
Спустя 7 часов, 10 минут, 29 секунд (18.05.2011 - 07:00) kirik написал(а):
Цитата (Kumirska @ 17.05.2011 - 16:49) |
чтоб вывести в последнем столбике всех сотрудников надо использовать ведь тоже цикл |
Верно
Цитата (Kumirska @ 17.05.2011 - 16:49) |
цикл в цикле еще и внутри printf у меня пока не хватает опыта понять как его сделать. |
А его не надо в printf пихать (тем более что не получится).
Сделай отдельно цикл типа:
$arr = array();
while($row = mysql_fetch_assoc($query)) {
$arr[] = $row['name'] . ' ' . $row['surename'];
}
и потом где нужно вывести список сотрудников:
echo implode("<br />\n", $arr);
Спустя 3 часа, 27 минут, 32 секунды (18.05.2011 - 10:27) Kumirska написал(а):
implode -- Объединяет элементы массива в строку,как раз то что мне было нужно.
KIRIK, я правильно тебя понял надеюсь,я для начала чтоб сразу не усложнять не стал группировать и тп,а просто засунул запрос в цикл чтоб вытаскивать по id отдела,так как они совпадают со значениями поля otdel напротив сотрудников в таблице works. Но к сожалению ничего не выдаёт(
$rep = mysql_query("SELECT id,title,kolvo_sotr FROM otdel WHERE kolvo_sotr > 0 ORDER BY title",$db);
$q1 = mysql_query("SELECT SUM(q_vote) as sum_q, SUM(reiting) as sum_r FROM works GROUP BY otdel ORDER by title",$db);
...
while ($report=mysql_fetch_assoc($rep) and $q = mysql_fetch_assoc($q1))
{
if ($q['sum_q']>0)
{
$r = $q['sum_r']*20/$q['sum_q'];
$r = (int)$r;
}
else {$r = 0;}
$query = mysql_query("SELECT name,fam FROM works WHERE otdel = '$id'",$db);
$arr = array();
while($row = mysql_fetch_assoc($query)) {
$arr[] = $row['name'] . ' ' . $row['fam'];
}
printf ("
<tr height='45px' >
<td width='220'><center>%s</center></td>
<td width='100'><center>%s</center></td>
<td width='100'><center>%s</center></td>
<td width='56'><center>%s</center></td>
<td width='200' ><center>%s</center></td>
</tr> " ,$report["title"],$report["kolvo_sotr"],$q["sum_r"],$r,implode("<br />\n", $arr));
}
KIRIK, я правильно тебя понял надеюсь,я для начала чтоб сразу не усложнять не стал группировать и тп,а просто засунул запрос в цикл чтоб вытаскивать по id отдела,так как они совпадают со значениями поля otdel напротив сотрудников в таблице works. Но к сожалению ничего не выдаёт(
_____________
никому не дано знать абсолютной истины, ибо понятия, которыми мы оперируем, сами по себе относительны