• Запись больших xml в MYSQL?

    @arsenaljek Автор вопроса
    Спасибо, что пытаетесь мне помочь. У меня есть некоторые недопонимания.
    В таблицу `products` добавляете колонку `price`. Вешаете на эту таблицу триггеры на вставку и изменение строки, которые при добавлении или изменении цены заносят её в таблицу `prices`.

    Что значит
    Вешаете на эту таблицу триггеры на вставку и изменение строки
    ?
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Артем Будин, Мне нужна помощь....
    $sql1 = "SELECT * FROM prices 
    	WHERE price_product != 0 AND id_lab = '".$row_product['id_lab']."' ORDER BY `date` LIMIT 1;";
    	$result1 = mysqli_query($link7,$sql1);
    	$row_start = mysqli_fetch_array($result1); // получаем первую дату
    
    	$start = $row_start['date'];
    	$finish = $dateround; //сегодняшняя дата
    	while ($row = mysqli_fetch_array($result)) { // этот цикл выводит 4 записи из бд с ценами, датами, артикулами
    		for($i=$start; $i<=$finish; $i++){
    			if ($i != $row['max_date']) {
    				echo $i.'==='.$row['max_date']. 'несовпала</br>';
    			} else {
    				echo $i.'==='.$row['max_date']. 'совпала</br>';
    			}
    		}

    Этот код выдает следующий результат
    2019-01-22===2019-01-25несовпала
    2019-01-23===2019-01-25несовпала
    2019-01-24===2019-01-25несовпала
    2019-01-25===2019-01-25совпала
    2019-01-26===2019-01-25несовпала
    2019-01-27===2019-01-25несовпала
    2019-01-28===2019-01-25несовпала
    2019-01-29===2019-01-25несовпала
    2019-01-30===2019-01-25несовпала
    2019-01-31===2019-01-25несовпала
    2019-01-22===2019-01-24несовпала
    2019-01-23===2019-01-24несовпала
    2019-01-24===2019-01-24совпала
    2019-01-25===2019-01-24несовпала
    2019-01-26===2019-01-24несовпала
    2019-01-27===2019-01-24несовпала
    2019-01-28===2019-01-24несовпала
    2019-01-29===2019-01-24несовпала
    2019-01-30===2019-01-24несовпала
    2019-01-31===2019-01-24несовпала
    2019-01-22===2019-01-23несовпала
    2019-01-23===2019-01-23совпала
    2019-01-24===2019-01-23несовпала
    2019-01-25===2019-01-23несовпала
    2019-01-26===2019-01-23несовпала
    2019-01-27===2019-01-23несовпала
    2019-01-28===2019-01-23несовпала
    2019-01-29===2019-01-23несовпала
    2019-01-30===2019-01-23несовпала
    2019-01-31===2019-01-23несовпала
    2019-01-22===2019-01-22совпала
    2019-01-23===2019-01-22несовпала
    2019-01-24===2019-01-22несовпала
    2019-01-25===2019-01-22несовпала
    2019-01-26===2019-01-22несовпала
    2019-01-27===2019-01-22несовпала
    2019-01-28===2019-01-22несовпала
    2019-01-29===2019-01-22несовпала
    2019-01-30===2019-01-22несовпала
    2019-01-31===2019-01-22несовпала

    Я вроде бы и логикой понимаю, то что вы написали, но с кодом вот проблема...
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Артем Будин, Для этого стоит сгенерировать массив дат?
    Как-то так?
    $start = strtotime('22-01-2019');
    $finish = strtotime('01-01-2030');
    $arrayOfDates = array();
      for($i=$start; $i<$finish; $i+=86400){
      list($year,$month,$day) = explode("|",date("Y|m|d",$i));
      $arrayOfDates[$year][$month][] = $day;
    
    }
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Артем Будин, Смотрите. Есть сайт. Вводя конкретный артикул товара, мы должны видеть все цены.
    В базе это выглядит так
    | 1 | 3000 | 2019-01-26 |
    | 2 | 2500 | 2019-01-23 |
    | 3 | 2000 | 2019-01-22 |
    | 4 | 3000 | 2019-01-21 |
    Это 4 цены. Но показать пользователю я должен как минимум цены с 21 числа и оканчивая сегодняшним, 30.01. С 24.01-25.01 это будет цена 2500. С 26.01-30.01 это 3000. Т.е весь перечень цен, которые я должен показать пользователю выглядит так
    3000 | 2019-01-30 |
    3000 | 2019-01-29 |
    3000 | 2019-01-28 |
    3000 | 2019-01-27 |
    3000 | 2019-01-26 |
    2500 | 2019-01-25 |
    2500 | 2019-01-24 |
    2500 | 2019-01-23 |
    2000 | 2019-01-22 |
    3000 | 2019-01-21 |
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Артем Будин, А как быть тогда с ценами которые не текущей датой ограничиваються?
    | 1 | 3000 | 2019-01-26 |
    | 2 | 2500 | 2019-01-23 |
    Вот здесь вывод цены 2500 должен производиться с 23 - 25 числа включительно
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Спасибо за код, попробую его адаптировать к своему. Единственно, что 4 пункт это лишнее. Т.к все делается именно для того, чтобы в базе хранить минимум цен. Сейчас я пишу, абсолютно все цены и размер бд уже 20гб. Т.е в базе я храню вот так
    | 1 | 3000 | 2019-01-26 |
    | 2 | 2500 | 2019-01-25 |
    | 3 | 2000 | 2019-01-22 |
    | 4 | 3000 | 2019-01-21 |
    А на пхп я вывести должен вот так.
    | 10 | 3000 | 2019-01-30 |
    | 9 | 3000 | 2019-01-29 |
    | 8 | 3000 | 2019-01-28 |
    | 7 | 3000 | 2019-01-27 |
    | 6 | 3000 | 2019-01-26 |
    | 5 | 2500 | 2019-01-25 |
    | 4 | 2000 | 2019-01-24 |
    | 3 | 2000 | 2019-01-23 |
    | 2 | 2000 | 2019-01-22 |
    | 1 | 3000 | 2019-01-21 |
    Т.е последняя цена(в нашем примере 3000р) будет проставляться до тех пор(до той даты), пока не запишется другая цена, которая != 3000
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Максим Тимофеев, Максим, вот именно так я и пытаюсь сейчас делать. Т.е в базу пишу, только цену, если она отличается от цены за прошлый день у конкретного товара.
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Артем Будин, Я собираю цены некоторых интернет магазинов. Раньше я писал в бд абсолютно все цены, каждый день. Но т.к база стала неприлично большой(20гб) Я решил, что буду писать в базу цену, только в том случае, если она отличается от цены за прошлый день. Т.е сейчас мои записи выглядят вот так
    | 1 | 3000 | 2019-01-26 |
    | 2 | 2500 | 2019-01-23 |
    | 3 | 2000 | 2019-01-22 |
    | 4 | 3000 | 2019-01-21 |

    Выводить я должен цены каждый день. Т.е если цена в базе на 26.01.2019 = 3000р, а сегодня уже 30.01.2019, то за все пропущенные дни цена за эти даты к конкретному товару должна быть 3000. Это только на php. Без добавления в бд. Т.к я таким образом решил экономить место. Вообщем пока новая цена не записалась в бд, нужно писать последнию актуальную цену на пропущенные даты.
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Ninazu, Данные нужны постоянно.Скрипт собирает цены, и я постоянно обращаюсь к полученным данным
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Постараюсь осознать, то, что Вы написали. Спасибо за показанный путь)
  • Вывод недостающих дат?

    @arsenaljek Автор вопроса
    Ninazu, тот вариант к которому я сейчас пришёл. Это мой второй вариант. Что записывать в бд цену, только если она отличается от цены за прошлый день. До этого я писал вообще все цены. Поэтому я не уверен в 100% правильном решении. Но до чего додумался, до того додумался. Как видите, на своем же алгоритме уже забуксовал(