Покинул форум
Сообщений всего: 14
Дата рег-ции: Янв. 2015
Помог: 0 раз(а)
Добрый день, мои знания в php очень скудны. Помогите пожалуйста.
Появилась необходимость загрузить большое количество информации в mysql в процессе склеить значение из первого столбеца если такой уже есть, а во второй добавить содержимое из второго столбца склеиной строки через двойную запятую ",,", если во втором столбце уже встречается то не добавлять ничего. Подскажите пожалуйста как это можно сделать?
Пример имеется .txtовик с 2 колонками информация может быть любая не только то что в примере.
name;value;
Вася;Лентяй;
Вася;Бездельник;
Вася;Алкаш;
Вася;Красавчег;
Антон;Забияка;
Коля;Лентяй;
Вася;Синяк;
Валера;Бездельник;
Как импортировать из txt в таблицу в базе данных mysql и склеить чтобы в итоге получилось:
name;value
Вася;Лентяй,,Бездельник,,Алкаш,,Красавчег,,Синяк
Антон;Забияка
Коля;Лентяй
Валера;Бездельник
Что то такое пока получается.. тупо добавляет а вот как сделать проверки немогу..
mysql_query("INSERT INTO text (name,value) VALUES ('".$ln[0]."','".$ln[1]."')");
}
?>
Помогите добавить проверку,
если значения $ln[0] нет в базе записываем $ln[0] и $ln[1]
если $ln[0] уже есть в базе а его $ln[1] нет в $ln[1] то записываем в $ln[1] через двойную запятую ",," если всеже уже есть в $ln[1] не добавляем ничего
Tyoma5891
Отправлено: 28 Августа, 2015 - 09:33:15
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
бредовато немного, для чего такое нужно?
короче ладно есле я правильно понял, то вам нужно перед каждой вставкой доставать последнее значение value из таблицы text и проверять нету ли там текущего
Покинул форум
Сообщений всего: 14
Дата рег-ции: Янв. 2015
Помог: 0 раз(а)
Добавил проверку на то если нет значения добовляем, если есть не добавляем, а как сделать чтобы если есть, в name=$ln[0] а в value=$ln[1] нет то добовляем через ,, в value=$ln[1] ?
mysql_query("INSERT INTO text (name,value) VALUES ('".$ln[0]."','".$ln[1]."')");
}
}
?>
(Добавление)
Tyoma5891 пишет:
бредовато немного, для чего такое нужно?
короче ладно есле я правильно понял, то вам нужно перед каждой вставкой доставать последнее значение value из таблицы text и проверять нету ли там текущего
Напарсил прям очень много информации в текстовики, хочу как то структурировать чтобы использовать дальше.
- Проверить есть ли name из txt в базе
--если нет, добовляем name и value
--если есть, такой name то
---проверяем есть ли такой же value=value если есть не добовляем, если нет добовляем к его value через ,,
Вообще хз как проверить value=value
Ведь если даже получится 1 раз обновить значение value до к примеру до name;value - Вася;Лентяй,,Бездельник
то при следующей проверке когда будут добовляться Вася;Лентяй; добавится сново и получится уже Вася;Лентяй,,Бездельник,,Лентяй
А надо чтобы не добавлял в таком случае.. что то я вообще запутался..((((
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Помог: 30 раз(а)
fatklass пишет:
то при следующей проверке когда будут добовляться Вася;Лентяй; добавится сново и получится уже Вася;Лентяй,,Бездельник,,Лентяй
А надо чтобы не добавлял в таком случае.. что то я вообще запутался..((((
Вытаскиваете value по name и проверяйте так, к примеру:
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
насколько я понял вы хотите получить строку
Вася Забияка,,Красавчег,,Молодец
Петя Молоток
Антон Чтотоеще
я бы порекомендовал записывать данные по отдельности без конкатенкции
создайте в таблице поле id автоинкремент и записывайте так же как и у вас в текстовике
то есть получится что-то типа
1 Вася Лентяй
2 Вася Бездельник
3 Вася Алкаш
4 Вася Красавчег
5 Антон Забияка
6 Коля Лентяй
7 Вася Синяк
8 Валера Бездельник
короче в таком виде можно будет без проблем сконкатенировать всех значенй Вась, Петь , коль итд предварительно сгрупировав. Так же будет удобно считать и делать прочие операции
----- Just do it
fatklass
Отправлено: 28 Августа, 2015 - 11:06:23
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Янв. 2015
Помог: 0 раз(а)
andrewkard пишет:
fatklass пишет:
то при следующей проверке когда будут добовляться Вася;Лентяй; добавится сново и получится уже Вася;Лентяй,,Бездельник,,Лентяй
А надо чтобы не добавлял в таком случае.. что то я вообще запутался..((((
Вытаскиваете value по name и проверяйте так, к примеру:
mysql_query("INSERT INTO text (name,value) VALUES ('".$ln[0]."','".$ln[1]."')");
}
}
?>
В общем вроде бы все получилось осталось прикрутить, вашу проверку помогите пожалуйста.
А то сейчас при повторной встречи хотя бы 1 повторения заного добавляет все
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
А как будут потом использоваться данные из БД?
Хранение данных в поле через запятую наводит на мысль о неправильной организации базы данных.
----- Чем больше узнаю, тем больше я не знаю.
fatklass
Отправлено: 28 Августа, 2015 - 12:49:15
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Янв. 2015
Помог: 0 раз(а)
DelphinPRO пишет:
А как будут потом использоваться данные из БД?
Хранение данных в поле через запятую наводит на мысль о неправильной организации базы данных.
Напрямую из sql они использоваться не будут. Это нужно только для структурирования информации, порядка 20гб текста надо как то фильтрануть, и подогнать в приемлемый вид для дальнейшего использования.
andrewkard
Отправлено: 28 Августа, 2015 - 12:57:58
Участник
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.