powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите новичку
5 сообщений из 5, страница 1 из 1
Помогите новичку
    #38715361
Амурский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ подскажите как мне вывести информацию
существует таблица врачей с информацией о принятых пациентах за каждый день, и с разной консультацией, за каждую консультацию он берет денежку.
мне нужно вывести всех врачей которые принимали пациентов в разрезе даты, количество консультации за этот день и сумма за консультацию

как должна выглядеть информация
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Врач: Иванов
Дата: Июль 2014
--------------------|-----------------------|-----------------------|----------------------|
                    |     Консультация1     |     Консультация2     |     Консультация3    |
   дата             |-----------------------|-----------------------|----------------------|
                    | сумма    | количество | сумма    | количество | сумма   | количество |
--------------------|-----------------------|-----------------------|----------------------|
01.07.2014          |     20   |      2     |      50  |       5    |    0    |       0    |
--------------------|-----------------------|-----------------------|----------------------|
02.07.2014          |     10   |      1     |      100 |       10   |     500 |     1      |
--------------------|-----------------------|-----------------------|----------------------|
и т.д.




в таблице много врачей поэтому я выбираю по одному и вывожу информацию следующим образом:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
$data=$_POST['value']; //Получаю дату из <form action>
list($year, $mounth, $day) = split('[/.-]', $data);//разбиваю введенную дату на день месяц год

$sql = "SELECT DISTINCT айди_таблицы, фамилия_врача 
FROM таблица_обращений 
WHERE таблица_обращений.дата_обращения BETWEEN '2014-07-01 01:00:00' and '2014-08-01 01:00:00' 
and (вид_консультации=Консультация1 or вид_консультации=Консультация2 or вид_консультации=Консультация3) 
group by айди_таблицы"; //

$result = mysql_query($sql, $db);

while ($row = mysql_fetch_array($result)){   
echo " Врач: ".$row['фамилия_врача']."
Дата: ";
switch ($mounth) { // Делаю обработку для вывода даты прописью
case 01:echo 'Январь';break;
case 02:echo 'Февраль';break;
case 03:echo 'Март';break;
case 04:echo 'Апрель';break;
case 05:echo 'Май';break;
case 06:echo 'Июнь';break;
case 07:echo 'Июль';break;
case '08':echo 'Август';break;
case '09':echo 'Сентябрь';break;
case 10:echo 'Октябрь';break;
case 11:echo 'Ноябрь';break;
case 12:echo 'Декабрь';break;
default:
	echo "ОШИБКА!!! НЕКОРРЕКТНО ВВЕДЕНА ДАТА";

}
switch($year){
case 2014:echo " 2014";break;
case 2015:echo " 2015";break;
case 2016:echo " 2016";break;
}
//Таблица куда будут вставляться данные
echo "<table align='center' class='table' cellspacing='1' cellpadding='1' width='90%' border='1'>
<tr>
<td rowspan='2'>Дата</td>
<td colspan='2'>Консультация1</td>
<td colspan='2'>Консультация2</td>
<td colspan='2'>Консультация3</td>
</tr>
<tr>
<td>сумма, руб.</td>
<td>количество, чел.</td>
<td>сумма, руб.</td>
<td>количество, чел.</td>
<td>сумма, руб.</td>
<td>количество, чел.</td>
</tr>
";
// Выясняю сколько дней в выбранном месяце для отображения
for($i = 0; $i <= date("t",strtotime($data))-1; $i++){

//Запоминаем полученную дату из формы <form action>
$start_date=$data;

//Вывожу дату ввиде 01.07.2014
$days=date('d.m.Y', strtotime($start_date.'+'.$i.' day'));

//Делаю переменные для запроса по каждому дню
$days_query_1=date('Y-m-d 01:00:00', strtotime($days));
$days_query_2=date('Y-m-d 01:00:00', strtotime($days.' + 1 day'));

//Заполняю столбец датой выбранной для отображения
echo "<tr><td>$days</td>";

//Запрос на вывод консультации по каждой в отдельности
$sql_Консультация1="SELECT COUNT(айди_таблицы) AS количество, SUM(summ) AS сумма 
FROM таблица_обращений 
WHERE trc_id=".$row['фамилия_врача']." and дата_обращения BETWEEN '".$days_query_1."' and '".$days_query_2."'  
and вид_консультации=Консультация1";

$sql_Консультация2="SELECT COUNT(айди_таблицы) AS количество, SUM(summ) AS сумма 
FROM таблица_обращений 
WHERE trc_id=".$row['фамилия_врача']." and дата_обращения BETWEEN '".$days_query_1."' and '".$days_query_2."'  
and вид_консультации=Консультация2";

$sql_Консультация3="SELECT COUNT(айди_таблицы) AS количество, SUM(summ) AS сумма 
FROM таблица_обращений 
WHERE trc_id=".$row['фамилия_врача']." and дата_обращения BETWEEN '".$days_query_1."' and '".$days_query_2."'  
and вид_консультации=Консультация3";
//
$result_Консультация1 = mysql_query($sql_Консультация1, $db);
$result_Консультация2 = mysql_query($sql_Консультации2, $db);
$result_Консультация3 = mysql_query($sql_Консультация3, $db);

---------------------------------------------------------------------------------------------------
КАК МНЕ ТУТ ВЫВЕСТИ ДАННЫЕ И ПОДСТАВИТЬ В КАЖДЫЙ ДЕНЬ 
что бы привести к желаемому виду
echo "</tr>"; 
}
echo "</table>";



Ребята подскажите :)
...
Рейтинг: 0 / 0
Помогите новичку
    #38715554
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Амурский,

1) Обьединить SQL запросы в один (hint - GROUP BY). Это что - Access? Пропуски дат учитывать нужно - (т.е.) пустые строки колонки в таблице нужны?
2) swith по месяцам - чем не устроил массив + проверка корректности индекса?
3) switch по году - не нужен, и так все напечатается

P.S. Насчет шаблонов - не парся ;) Все с этого начинали. Но на заметочку возьми функции в районе sprintf().
...
Рейтинг: 0 / 0
Помогите новичку
    #38716434
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оффтоп, но я считаю, что русский язык в SQL у Амурского смотрится отлично.
...
Рейтинг: 0 / 0
Помогите новичку
    #38716504
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Амурский,

мне для того, что бы тебе помочь не хватает исходной таблицы (по коду сложно разбираться в структуре базы).

Не понятна мне например суть поля айди_таблицы.

В первом запросе GROUP by стоит сделать также по "дата_обращения" и "вид_консультации";
ORDER by `айди_таблицы`, `фамилия_врача`, `дата_обращения`, `вид_консультации`;
убрать distinct;
В SELECT добавить поля вид_консультации, COUNT(*) as `количество`, SUM(summ) AS сумма

Получим все данные одним запросом в удобном виде, после чего запускаем
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$lastDoctor = "";
$visitDate = "";
while ($row = mysql_fetch_array($result)){
  if($visitDate!=$row["дата_обращения"] && $visitDate!="") echo "</tr>"; //разорвал закрытие и открытие tr из-за того
  //что закрывать обязаны строго до конца таблицы (если tr последний), а открывать после начала следующей таблицы
  if($lastDoctor!=$row["фамилия_врача"]){
    //выводим фамилию врача
    if($lastDoctor!="") echo "</table>";
    echo "<table>";
    $lastDoctor=$row["фамилия_врача"];
  }
  if($visitDate!=$row["дата_обращения"]){
    echo "<tr><td>".$row["дата_обращения"]."</td>";
    $visitDate=$row["дата_обращения"];
  }
  echo "<td>".$row["количество"]."</td><td>".$row["сумма"]."</td>";
}
echo "</tr></table>;



что-то типа такого должно работать :)
...
Рейтинг: 0 / 0
Помогите новичку
    #38716969
Амурский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр,

Спасибо за совет )))
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите новичку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]