Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Две базы объединить

#11 кипятильник

кипятильник
    Topic Starter
  • Пользователь
  • 102 сообщений
  • Репутация: 0
0

Отправлено 17 Август 2011 - 18:55

А, тады сори :rolleyes: ... ну а ТС тогда, как и говорилось, нужно для начала определиться с задачей.


вот более точно

к примеру в первой базе есть записи (даты повторяються)
2000-10-10 | 100 руб | товар 1
2000-10-10 | 200 руб | товар 2
2000-10-11 | 100 руб | товар 3

во второй базе есть (даты не повторяються)
2000-10-09 | 50 руб
2000-10-11 | 75 руб


нужно вывысти
2000-10-09 | ##### | 50 руб |
2000-10-10 | 100 руб | ##### | товар 1
2000-10-10 | 200 руб | ##### | товар 2
2000-10-11 | 100 руб | 75 руб | товар 3

ПС #-пробел
  • 0

#12 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 18 Август 2011 - 01:47

<?php

$param = array(); // моссив, который будем формировать дял вывода
$space = "######";

// первая база
$data1 = array(
array('date' => '2000-10-10', 'price' =>'100 руб', 'name' => 'товар 1'),
array('date' => '2000-10-10', 'price' =>'200 руб', 'name' => 'товар 2'),
array('date' => '2000-10-11', 'price' =>'100 руб', 'name' => 'товар 3')
);

// вторая база
$data2 = array(
array('date' => '2000-10-09', 'price' =>'50 руб'),
array('date' => '2000-10-11', 'price' =>'75 руб')
);

// обходим первую базу
foreach($data1 as $data) {
$date = $data['date']; // дата для ключа
$param[$date]['products'][] = array('name' => $data['name'] , 'price' => $data['price'], 'other' => ''); // создаем массив товаров (у нас на одну дату может быть несколько товаров)
// указываем название и цену, другая цена пока пуста (она заполняется из второй базы)
}

// обходим вторую базу
foreach($data2 as $data) {
$date = $data['date']; // дата для ключа
// если ключ с датой ещё не существует в массиве $param
if( !array_key_exists($date, $param) ):
$param[$date] = array('products' => array( 0 => array('name' => '', 'price' => '', 'other' => $data['price']))); // создаем на дату товар с другой ценой
else:
$param[$date]['products'][0]['other'] = $data['price']; // добавляем к первому товару с датой другую цену
endif;
}

ksort($param); // сортируем


// формируем вывод
$html = "";

foreach($param as $date => $products) {
foreach($products['products'] as $product) {
$html .= "{$date} | ";
$html .= ($product['price'] ? $product['price'] : $space) . " | ";
$html .= ($product['other'] ? $product['other'] : $space) . " | ";
$html .= $product['name'];
$html .= "<br />";
}
}

echo $html;
?>


Базы у меня в виде массивов, по дате сортирует нормально, когда она записана в формате YYYY-MM-DD
  • 0

#13 кипятильник

кипятильник
    Topic Starter
  • Пользователь
  • 102 сообщений
  • Репутация: 0

Отправлено 18 Август 2011 - 20:49

ZiTosS спасибо за скрипт, но можно было просто подскзать что делать :rolleyes:
  • 0

#14 interceptorS

interceptorS
  • Пользователь
  • 52 сообщений
  • Репутация: 0

Отправлено 03 Ноябрь 2011 - 16:30

можно все в массив и работать с массивом...
  • 0


Оформление форума – IPBSkins.ru