Задать вопрос
@emerysh

Как выводить csv to mysql, найменьшее значение, не работает?

Суть в следующем у меня в распоряжении массив который я получил из csv
$data;

#Дальше я прогоняю каждую строчку массива через foreach
foreach($data as $item) {
#Дальше каждая ячейка как индекс и значение
foreach ($item as $key => $value) 
#если индекс равно 11
if ($key == 11 ) {
#Пропускаем первую строчку		    		
if ($value == name_en) {
}
#заносим в переменную значение
else{
$name = $value;			    		
}

if ($key == 2 ) {
if ($value == price) {
# code...
}
else{
$price = $value;
}
}
}
#проводим операции с переменными
$name;
$price;
#заносим в бд
mysqli_query($link, "UPDATE `price` SET `cprice`='$price' WHERE `itemname`='$name'"); 
}


Проблема в том что в таблице могут повторяться предметы ($name) но с разными ($price) и в бд заносится лишь последнее, а нужно что бы заносилось минимальное значение. Спасибо всем
  • Вопрос задан
  • 245 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Проблема в том что в таблице могут повторяться предметы ($name) но с разными ($price) и в бд заносится лишь последнее, а нужно что бы заносилось минимальное значение.

Значит сначала нужно собрать все данные для записи в базу
$tmp = [];
foreach ($data as $item) {
   if (!isset($tmp[$item->name])) {
      $tmp[$item->name] = $item->price;
   } else {
      if ($item->price < $tmp[$item->name]) $tmp[$item->name] = $item->price;
   }
}

и дальше уже этот массив скармливать в update
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽