Товарищи, возникла
тупиковая ситуация в моём мозге.
Есть файл с содержанием:
ID, Наличие, Цена
1,*,221
34,*,45488
56,,1212
Нужно составить массив и сделать следующее:
$query = mysql_query("SELECT * FROM `table`");
while ($result = mysql_fetch_assoc($query)){
//Надо выяснить, есть ли id в массиве из файла и если есть, то обновить запись в БД согласно данным из файла.
}
Буду весьма благодарен за помощь.
Вложенный цикл. Либо изначально собрать айдишники в массив из цикле потом проверить наличие.
Файл разбейте explode'ом, и выберите первый элемент каждой строки.
написал таки, наверняка быдлокодерски, но работает.
Долго же я ломал мозге над этим.
спасибо FlySelf - он очень помог с ЭТИМ
$array = file($path.'/files/somefile.csv');
if (is_array($array)){
foreach($array as $line){
$content = explode(',', $line);
$array[$content[0]] = array($content[1], $content[2]);
}
}
Для сравнения в цикле делаем так:
$query = mysql_query("SELECT * FROM `table`");
while ($result = mysql_fetch_assoc($query)){
echo $array[$result['id']][1]; // цена
}
про csv
http://annimon.com/code/?act=view&id=322
а вообще пишу функцию и array_map пользую
Тож подошло бы, только чуть пораньше бы я прочитал статью твою (на месяцев 6 раньше) не пришлось бы ломать голову
Серж, ты под что эту обработку файла делаешь? В смысле для чего?
VARG, обновление таблицы из csv файла (наличие товара и его стоимость)
seg0ro, базу в экселе держишь? как раз ту функцию писал для аналогичного файла.
первая строка это имена полей, следующие как в базе, одна строка одна запись
Koenig, из 1с экспортирую специально подготовленный файл на три колонки.
Спасибо, я ужо всё сделал - работает, генерация не привышает пары секунд, так что терпимо и менять не буду.