Вывод сразу из двух таблиц

WMix

герр M:)ller
Партнер клуба
да батон, но эту часть, я писал бы наоборот
PHP:
<?php
//...
?>
<table border="1">
   <tr>
      <th>объект</th>';
      <?php foreach ($days as $day) { ?>
            <th><?=$day?></th>';
      <?php } ?>
   </tr>
   <tr>
   <?php foreach ($data as $objid => $day_plmin) { ?>
// унд зо вайтер!
 

amen666

Новичок
Baton, спасибо!! В итоге вот что получлось:

PHP:
$from = $_POST['from'];
$from1   = $from[6].$from[7].$from[8].$from[9].'-'.$from[0].$from[1].'-'.$from[3].$from[4].'<br>';
$to   = $_POST['to'];
$to1   = $to[6].$to[7].$to[8].$to[9].'-'.$to[0].$to[1].'-'.$to[3].$to[4];


//объекты
$objects = array();

$r = mysql_query( "SELECT * FROM `objects` ORDER BY `rating`" ) or die( mysql_error() );

while ($a = mysql_fetch_assoc($r)) {
   $objects[$a['id']] = array('name'    => $a['name'],
							  'orgname' => $a['orgname']);
}

//данные
$data = array();

//сутки
$days = array();

//Получаем данные одним запросом
$r = mysql_query("SELECT * FROM `data` WHERE `date` >= '$from1' AND `date` <= '$to1'") or die( mysql_error() );

while ($a = mysql_fetch_assoc($r)) {
   //сохраняем для вывода в html
   $days[$a['date']] = $a['date'];   
   //данные по суткам
   $data[$a['objid']][$a['date']] += $a['pl_min'];   
}

// Функция записи временного диапазона в массив
function getDateRange($from, $to)
{
$t1 = strtotime($from);
$t2 = strtotime($to) + 3600;
$dates = array();
for($i = $t1; $i <= $t2; $i += 86400)
$dates[] = date("Y-m-d",$i);
return $dates;
}
$dates = getDateRange($from, $to);

$html = '';
$html .= '<table border=1>';
$html .=    '<tr>';
$html .=       '<th>Название</th><th>Организация</th>';
// Вывод дат диапазона в "шапку" таблицы
foreach ($dates as $dt)
{
	$dt1   = $dt[8].$dt[9].'-'.$dt[5].$dt[6].'-'.$dt[0].$dt[1].$dt[2].$dt[3];
	$html .= '<th>'. $dt1 .'</th>';
}


$html .=    '</tr>';
$html .=    '<tr>';

foreach ($data as $objid => $day_plmin) {
   $html .=    '<td>'.$objects[$objid]['name'].'</td>'.
			   '<td>'.$objects[$objid]['orgname'].'</td>';
   foreach ($dates as $day) {
      $html .= '<td align=center>'.(isset($day_plmin[$day]) ? '+' : '-').'</td>';
   }
$html .=    '</tr>';
}
$html .= '</table>';

echo $html;
То есть теперь выходит весь диапазон дат, даже тех, когда не было ни одного посещения
 

WMix

герр M:)ller
Партнер клуба
PHP:
$from1   = $from[6].$from[7].$from[8].$from[9].'-'.$from[0].$from[1].'-'.$from[3].$from[4].'<br>';
$to   = $_POST['to'];
$to1   = $to[6].$to[7].$to[8].$to[9].'-'.$to[0].$to[1].'-'.$to[3].$to[4];
существуют функции explode, implode... а еще strtotime mktime и date погляди пожалуйста и перепеши!
PHP:
SELECT * 
FROM `data`
WHERE `date` >= '$from1' AND `date` <= '$to1'
это можно было написать BETWEENом но тебя интересует IN() погляди пожалуйста синтаксис, и перепеши...
 

WMix

герр M:)ller
Партнер клуба
как только добавишь IN ты решишь задачу!
* IN (Интересующие обьекты)
 

amen666

Новичок
WMix,
с датами получилось красиво, а вот необходимости IN тут вообще не вижу. Нам ведь нужен диапазон...
 
Сверху