X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Перенос данных в таблице
Paladin111
Paladin111
Topic Starter сообщение 16.7.2010, 11:41; Ответить: Paladin111
Сообщение #1


Всем привет!
Имеется таблица с итогами за неделю, при выборе другой недели, необходимо вначале вывести сумму с итогами предыдущей недели, а затем данные за текущую неделю. Вот только данные каждую неделю могут быть разными.
К примеру:
Итоги за прошлую неделю:
Значение1 сумма 100
Значение2 сумма 200
Значение3 сумма 300

Итог текущей недели:
Значение4 сумма 400
Значение2 сумма 600
Значение5 сумма 500
Значение3 сумма 800

Необходимо чтоб соответствовали данные с предыдущей недели, с текущей неделей:
Значение4 сумма 400
Значение2 сумма 200 Значение2 сумма 600
Значение5 сумма 500
Значение3 сумма 300 Значение3 сумма 800
и так далее с последующими неделями

Данные меняются по числам, которые передаются параметрами в адресной строке!
Как это можно сделать?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 16.7.2010, 13:26; Ответить: alexdrob
Сообщение #2


А как вы храните значения и суммы?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Paladin111
Paladin111
Topic Starter сообщение 16.7.2010, 15:02; Ответить: Paladin111
Сообщение #3


Значения и данные за неделю берутся из бд, а сумма складывается из данных за неделю и сразу выводится.

таблица:

CREATE TABLE IF NOT EXISTS `table3` (
`date` date NOT NULL,
`name` varchar(50) NOT NULL,
`kol` float(5) NOT NULL
);

--
-- Дамп данных таблицы `table3`
--

INSERT INTO `table3` (`date`, `name`, `kol`) VALUES

('2010-07-05', 'Значение1', '70'),
('2010-07-07', 'Значение2', '10'),
('2010-07-08', 'Значение1', '300'),
('2010-07-10', 'Значение1', '70'),
('2010-07-11', 'Значение2', '10'),
('2010-07-12', 'Значение3', '50'),
('2010-07-13', 'Значение4', '10'),
('2010-07-13', 'Значение2', '10'),
('2010-07-14', 'Значение3', '50'),
('2010-07-14', 'Значение2', '30'),
('2010-07-15', 'Значение1', '50'),
('2010-07-16', 'Значение3', '50'),
('2010-07-16', 'Значение4', '10'),
('2010-07-17', 'Значение4', '30'),
('2010-07-17', 'Значение2', '10'),
('2010-07-18', 'Значение3', '50'),
('2010-07-18', 'Значение1', '10'),
('2010-07-18', 'Значение2', '50');

PHP:
[php]
<?php

$output = '<table border="1">
<thead style="font-weight: bold;">
<tr><td>Название значения</td>';
$dates = array();
for ($i = strtotime($begin_date), $n = strtotime($end_date);
$i <= $n;
$i += 86400)
{
$date = date('d.m.y', $i);
$dates[] = $date;
$output .= '<td'.($i>$n-86400*2 ? ' style="color: #c00;"' : '').'>'.$date.'</td>';
}
$output .= '<td>Сумма значений по строкам</td></tr></thead>';
$result = mysql_query('SELECT *
FROM `table3`
WHERE `date` BETWEEN "'.$begin_date.'"
AND "'.$end_date.'"
ORDER BY `name`, `date`');

if ($n = mysql_num_rows($result))
{
$prev = '';
$rowsumm = 0;
$k = 0; $i = 0;
$prow = mysql_fetch_assoc($result);
while ($i++ < $n)
{
$row = mysql_fetch_assoc($result);
if ($row['name'] == $prow['name'] and $row['date'] == $prow['date'])
{
$prow['kol'] += $row['kol'];
continue;
}
if ($prev != $prow['name'])
{
if ($prev)
$output .= str_repeat('<td> </td>', count($dates)-$k).'<td>'.$rowsumm.'</td></tr>';
$output .= '<tr><td>'.$prow['name'].'</td>';
$prev = $prow['name'];
$k = 0;
$rowsumm = 0;
}
$j = array_search(date('d.m.y', strtotime($prow['date'])), $dates);
$output .= str_repeat('<td> </td>', $j-$k).'<td>'.$prow['kol'].'</td>';
$rowsumm += $prow['kol'];
$prow = $row;
$k = $j + 1;
}
$output .= str_repeat('<td> </td>', count($dates)-$k).'<td>'.$rowsumm.'</td></tr></table>';
}
echo $output;
[/php]$begin_date, $end_date берутся:
itogi.php?begin_date=2010-07-12&end_date=2010-07-18
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
unnormal
unnormal
сообщение 16.7.2010, 15:04; Ответить: unnormal
Сообщение #4


Передавай так:
index.php?start_date=2012-12-12&end_date=2012-12-17

И потом простой запрос, [php]"SELECT * FROM table_name WHERE date >= '".$_GET["start_date"]."' AND date <= '".$_GET["end_date"]."' LIMIT 0,7"[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Paladin111
Paladin111
Topic Starter сообщение 16.7.2010, 15:29; Ответить: Paladin111
Сообщение #5


(unnormal @ 16.7.2010, 18:04) *
Передавай так:
index.php?start_date=2012-12-12&end_date=2012-12-17

И потом простой запрос, [php]"SELECT * FROM table_name WHERE date >= '".$_GET["start_date"]."' AND date <= '".$_GET["end_date"]."' LIMIT 0,7"[/php]


У меня стоит передача параметров на этой же странице при выборе другого интервала дат. Страница просто перезагружается с новыми параметрами и все.
Вопрос в другом!
Как передать итоги на этой же странице, чтоб они соответствовали своим значениям?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 16.7.2010, 15:36; Ответить: alexdrob
Сообщение #6


(Paladin111 @ 16.7.2010, 18:29) *
Как передать итоги на этой же странице, чтоб они соответствовали своим значениям?

вам ответили

(unnormal @ 16.7.2010, 18:04) *
?start_date=2012-12-12&end_date=2012-12-17
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 16.7.2010, 15:52; Ответить: alexdrob
Сообщение #7


"select group_concat(concat(`name`,' сумма',`kol`)) as t from `table3` where `date`>'$_GET[start_date]' and `date`<'$_GET[end_date]' group by `name`"

типа такого запрос

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
15 yaroslav89 6834 8.4.2024, 17:17
автор: spoyer_ru
Открытая тема (нет новых ответов) Перенос сайта на CMS Wordpress
8 freeax 4951 10.3.2024, 14:58
автор: freeax
Открытая тема (нет новых ответов) ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ
[Чарджбек|Рекавери|Возврат]
9 Leado 3887 9.2.2024, 16:04
автор: baza0013
Открытая тема (нет новых ответов) Базы данных, различной тематики, выкладываем тут.
Делимся, обмениваемся, заказываем, парсим.
12 InfoObmen 15246 4.9.2022, 2:32
автор: Галецкая
Открытая тема (нет новых ответов) требуется перенос с Dle на wordpres
нужен человек для переноса движка
5 Юрий82 1943 30.7.2022, 18:02
автор: Klerik84


 



RSS Текстовая версия Сейчас: 18.4.2024, 9:50
Дизайн