С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
52 / 3 / 4
Регистрация: 27.02.2016
Сообщений: 277

Запись в csv. Скрипт внутри

14.08.2017, 20:03. Показов 2562. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Ниже код предоставляю, помогите разобраться.
В основном 2 проблемки:

1 проблема. В textarea ввожу слова другом под другом. Нужно, чтобы шел поиск и вывод из БД по этим словам. Пока вывод идет только по первому слову. Однажды получилось и что-то напортачил.

2. проблема. В конце кода код записи в csv, не пойму почему, но последняя переменная $base записывается на следующую строку в ячейку B, все предыдущие 7 переменных в первую строку в каждую ячейку. Оставляю 7 переменных, все ок.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if (isset($_REQUEST['another_base_rubrika_exp'])){
$rub = $_POST['rubrika'];
$rubr = explode("\r", $rub);  
$query = mysql_query("SELECT * FROM another_base WHERE rubrika IN ('$rubr[0]','$rubr[1]','$rubr[2]')");                                           
while ($result = mysql_fetch_array($query))  {
if(isset($_POST['name'])){$name = $result['name'];}
if(isset($_POST['razdel'])){$razdel = $result['razdel'];}
if(isset($_POST['city'])){$city = $result['city'];}
if(isset($_POST['adres'])){$adres = $result['adres'];}
if(isset($_POST['email'])){$email = $result['email'];}
if(isset($_POST['phone'])){$phone = $result['phone'];}
if(isset($_POST['site'])){$site = $result['site'];}
$base = $result['base'];
$rubrika = $result['rubrika'];
chdir('./');
$fp = fopen('another_base_razdel.csv', 'a+'); 
$current_row = $name . ';' . $razdel . ';' . $rubrika . ';' . $city . ';' . $adres . ';' . $email . ';' . $phone . ';' . $site . ';' . $base .  "\r";        
 
fwrite($fp, iconv("utf-8", "windows-1251", "$current_row") . PHP_EOL);
}
fclose($fp);
 
}
Во как-то так. Прошу помощи. Не проходите мимо, пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2017, 20:03
Ответы с готовыми решениями:

Запись в БД из файла csv
Доброго времени суток! Начинающий. Изучаю php. Помогите, пожалуйста разобраться с проблемкой. Нужно записать данные из csv в базу. файл...

запись в csv файл
Добрый день,пытаюсь записать в csv файл таблицу mysql ,однако в файл попадает также весь html код страницы с которой выполняется код,в чём...

Запись данных из БД в эксель или csv
Привет всем. Данную функцию записи использую, но можно ли записывать данные в файл эксель или csv не в строку с разделителями, а отдельно в...

11
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
14.08.2017, 21:48
Лучший ответ Сообщение было отмечено samvel4000 как решение

Решение

Цитата Сообщение от samvel4000 Посмотреть сообщение
1 проблема
Цитата Сообщение от samvel4000 Посмотреть сообщение
explode("\r", $rub);
Разделитель строк точно \r всегда?
Цитата Сообщение от samvel4000 Посмотреть сообщение
2. проблема.
Либо select ... into file делать, либо работать с csv специально предназначеными функциями http://php.net/manual/ru/function.fputcsv.php
1
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
14.08.2017, 21:56
Цитата Сообщение от samvel4000 Посмотреть сообщение
PHP
1
2
$rubr = explode("\r", $rub); *
$query = mysql_query("SELECT * FROM another_base WHERE rubrika IN ('$rubr[0]','$rubr[1]','$rubr[2]')");
PHP
1
2
3
    $rubr = preg_replace('~(\r\n|\r|\n)~', "','", trim($rub));
    $sql = "SELECT * FROM another_base WHERE rubrika IN ('.$rubr.')";
    $result = mysql_query($sql) or die(mysql_error());
0
52 / 3 / 4
Регистрация: 27.02.2016
Сообщений: 277
15.08.2017, 08:08  [ТС]
Спасибо. В первой проблеме разделитель с "\r" поменял на "\r\n" поиск идет по всем слова в поле ввода.
Во второй проблеме банально все. Перенос строки при экспорте в csv из-за кривого импорта в БД,т.к. в одном столбце слова в ячейках импортировались с переносом. trim() спас.

Сейчас думаю, нужно как то сделать так, чтобы при экспорте в csv в первой строке были заголовки, или может сделать как-то экспорт в csv со второй строки, а заголовки я сам напишу и закину файл на сервер, а он там уже будет просто перезаписываться.

Добавлено через 12 минут
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
PHP
1
2
3
    $rubr = preg_replace('~(\r\n|\r|\n)~', "','", trim($rub));
    $sql = "SELECT * FROM another_base WHERE rubrika IN ('.$rubr.')";
    $result = mysql_query($sql) or die(mysql_error());
Это что-то не помогает. Но проблему свою я решил.
Может подскажете по этой части кода:

PHP
1
2
3
$rub = $_POST['rubrika'];
$rubr = explode("\r\n", $rub); 
$query = mysql_query("SELECT * FROM another_base WHERE rubrika IN ('$rubr[0]','$rubr[1]','$rubr[2]')");
Здесь поиск в БД идет пока по 3 фразам [0][1][2], а если этих фраз, вводимых в $_POST['rubrika'] будет больше, придется добавлять [0][1][2][3][4][5] и т.д. Как правильно написать условие поиска в запросе покороче, чтоб поиск шел по любому количеству фраз в поле ввода?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
15.08.2017, 18:50
Цитата Сообщение от samvel4000 Посмотреть сообщение
будет больше, придется добавлять [0][1][2][3][4][5] и т.д. Как правильно написать условие поиска в запросе покороче
Так
PHP
1
2
3
    $rubr = preg_replace('~(\r\n|\r|\n)+~', "','", trim($rub));
    $sql = "SELECT * FROM another_base WHERE rubrika IN ('".$rubr."')";
    $result = mysql_query($sql) or die(mysql_error());
0
52 / 3 / 4
Регистрация: 27.02.2016
Сообщений: 277
16.08.2017, 14:49  [ТС]
Добавлено через 1 минуту
Jewbacabra, select помог. Еще вопрос такой, если база большая, больше 1млн, она может не влезть в файл csv или может? Например, база в 2млн? Тут можно как-то разбивку сделать, чтобы при экспорте файл разбивался при достижении определенного количества строк и создавался новый, например файл(1)
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
16.08.2017, 15:35
samvel4000, размер любого файла, в том числе и csv ограничен наименьшим из: ограничение файловой системы, доступным местом диске.
0
52 / 3 / 4
Регистрация: 27.02.2016
Сообщений: 277
16.08.2017, 17:51  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
samvel4000, размер любого файла, в том числе и csv ограничен наименьшим из: ограничение файловой системы, доступным местом диске.
Хорошо, как тогда экспортировать базу в 1,5 млн, если csv не вмещает столько?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
16.08.2017, 18:19
samvel4000, csv не может вмещать или не вмещать, это просто текстовый файл, такой же как txt. Поэтому такая характеристика как количество строк не имеет смысла, важен размер в байтах. Упереться в ограничения фс будет тяжело, в ext4 например, максимальный размер файла что-то вроде 10ТБ. На 1.5кк строк нужно по 6.6 МБ на строк. Остается только влезть в доступное место на диске.
0
52 / 3 / 4
Регистрация: 27.02.2016
Сообщений: 277
16.08.2017, 19:48  [ТС]
Jewbacabra, В блокноте я могу закинуть большую базу, но в csv или эксель упирается в определенное количество строк и все, ничего с этим не поделать. Вы же пользовались экселем, знаете наверное, или у вас получалось вставить в эксель больше 1,5 млн строк? Максимум удавалось 1048000 строк примерно.
Или я его наверное открываю экселем и поэтому не все строки отображает?
Как тогда открыть файл csv с базой в 1.5 млн строк через эксель? Только раздербанить его на куски
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
16.08.2017, 21:30
Цитата Сообщение от samvel4000 Посмотреть сообщение
но в csv или эксель упирается в определенное количество строк и все
Это проблема excel, но никак не ограничения csv. Вероятно есть ПО, для работы с большими csv файлами.
Цитата Сообщение от samvel4000 Посмотреть сообщение
Только раздербанить его на куски
можно используя LIMIT ограничивать число строк и делать экспорт несколькими запросами, можно делать 1 файл и средствами php разделять его на несколько, может и другие способы есть
1
52 / 3 / 4
Регистрация: 27.02.2016
Сообщений: 277
17.08.2017, 08:32  [ТС]
Jewbacabra, Можешь показать как установить лимит и сделать запрос? На примере скрипта в начале темы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.08.2017, 08:32
Помогаю со студенческими работами здесь

Запись в CSV-файл из массива. Не является форматом csv!
В общем искал работу... Дали тестовое написать парсер для сайта с выводом информации в csv-файл. Всё написал, сбросил, пришёл ответ что у...

Скрипт.Нужно из файла csv в AD. и автоматом этот скрипт добавляет 50 пользователей из execl
Import-Module ActiveDirectory $Users = Import-CSV -Delimiter ";" -Path "C:\test\lol.csv" $allou = Get-ADOrganizationalUnit -Filter *...

Скрипт конвертации CSV в XLSX с форматированием
Добрый день! Не много соображаю в VB.Net, но задача именно в формате отдельно исполняемого файла VBS. Задача: есть файл csv с...

Perl скрипт (Импорт\экспорт данных из csv)
Задача: Есть csv файл. Нужно его прочитать, и часть данных экспортировать в новый csv файл. Суть в том, что из 10 колонок нужно будет...

Скрипт, подключающийся к БД и скачивающий таблицу в CSV-файл
Добрый день. Нужен скрипт который подключается к базе данных, считывает определенную таблицу и выгружает в CSV файл данные на компьютер....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru