|
|
|
| Можно ли средствами php из MySQL выгрузить данные в csv? | |
|
|
|
|
|
|
|
для: ols
(31.10.2008 в 17:52)
| | Интересует сам процес записи данных в csv формат | |
|
|
|
|
|
|
|
для: ols
(31.10.2008 в 17:58)
| | А в чем трудности то?
<?php
...
$get_fileds = mysql_query('SELECT * FROM table_name');
$f = fopen('file.csv', 'w');
while ($ar = mysql_fetch_row($get_fields))
fputcsv($f, $ar);
fclose($f);
?>
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(31.10.2008 в 18:19)
| | Ваш пример выдал такую ошибку
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in s:\home\socbel\www\admin\csv.php on line 5
|
| |
|
|
|
|
|
|
|
для: ols
(03.11.2008 в 15:57)
| | Вас же интересовал "сам процесс записи в csv формат" ?
У меня скрипт работает. | |
|
|
|
|
|
|
|
для: Trianon
(03.11.2008 в 16:13)
| | >Вас же интересовал "сам процесс записи в csv формат" ?
Вот именно. Скрипт создает файл, но ничего не записываети И еще предупреждение выдает.
Да даже взять пример с документации
<?php
$list = array (
'aaa,bbb,ccc,dddd',
'123,456,789',
'"aaa","bbb"'
);
$fp = fopen('file.csv', 'w');
foreach ($list as $line) {
fputcsv($fp, split(',', $line));
}
fclose($fp);
?>
|
Опять же только создается файл, но ничего не записывается, а на экран выводится фатальная ошибка - Fatal error: Call to undefined function: fputcsv() in s:\home\socbel\www\admin\csv.php on line 12 | |
|
|
|
|
|
|
|
для: ols
(03.11.2008 в 16:44)
| | Подскажите в чем проблема, уже целый час нему разобараться. | |
|
|
|
|
|
|
|
для: ols
(03.11.2008 в 18:12)
| | ------------- | |
|
|
|
|
|
|
|
для: ols
(03.11.2008 в 18:12)
| | Неужели так трудно, если не знаете смысла, перевести текст ошибки?
Этой функции у Вас нет! Она доступна с версии 5.1.0RC1 | |
|
|
|
|
|
|
|
для: ddhvvn
(03.11.2008 в 18:24)
| | Ага, спасибо разобрался, поставил себе пятую версию, уж давно пора :)
Еще одна беда. Всю инфу записывает в один столбец, а нужно чтобы в каждый.
Я попыталя сделать следущим образом:
<?php
include "config.php";
$sql = mysql_query("SELECT * FROM punkt");
$f = fopen('file.csv', 'w');
if($sql)
{
while($data = fgetcsv($f, 1000, ";"))
{
fputcsv($f, $data);
fclose($f);
}
}
else echo mysql_error();
?>
|
Но совсем перестал записывать в файл. почему так? | |
|
|
|
|
|
|
|
для: ols
(03.11.2008 в 19:14)
| | Ужас!
Вам что нужно? что, куда и откуда записать?
Вы что-то читаете, потом тут же записываете и закрываете %)
Да и, режим "w" очищает файл. | |
|
|
|
|
|
|
|
для: ddhvvn
(03.11.2008 в 19:51)
| | Я хочу из таблицы punkt, выбрать все записи и импортировать их в csv файл
Для наглядности вот струткура таблицы punkt
CREATE TABLE `punkt` (
`id` int(11) NOT NULL auto_increment,
`login` tinytext NOT NULL,
`pswrd` tinytext NOT NULL,
`description` tinytext NOT NULL,
`tel` varchar(8) NOT NULL default '',
`street` varchar(30) NOT NULL default '',
PRIMARY KEY (`id`)
)
|
>Да и, режим "w" очищает файл.
Ну я так и хочу, что если данный файл существует и в нем есть записи, то мне нужно сначала очистить их, а потом уже записать новые обновленные данные | |
|
|
|
|
|
|
|
для: ols
(03.11.2008 в 19:58)
| |
<?php
include "config.php";
$sql = mysql_query("SELECT * FROM punkt");
$f = fopen('file.csv', 'w');
if($sql)
{
while($data = mysql_fetch_row($sql))
{
fputcsv($f, $data);
}
}
else echo mysql_error();
fclose($f);
?>
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(03.11.2008 в 20:58)
| | Разделитель неадекватный неаутентичный.
Впрочем, корм не в коня, так что всё равно... | |
|
|
|
|
|
|
|
для: Trianon
(03.11.2008 в 21:17)
| | Вы правы, записывает все в первый столбец, а я хочу каждый столбец массива $data записывать в отдельный ряд по порядку.
Вообщем я попробовал сделать так
<?php
include "config.php";
$sql = mysql_query("SELECT * FROM punkt");
$f = fopen('file.csv', 'w');
if($sql)
{
while($data = mysql_fetch_row($sql))
{
fputcsv($f, split(';',$data[0]));
}
}
else echo mysql_error();
fclose($f);
?>
|
Но опять же, запишет только нулевой элемент, а нужно все элементы.
Если делать так
fputcsv($f, split(';',$data))
| , записывает Array
Trianon, помогите! | |
|
|
|
|
|
|
|
для: ols
(04.11.2008 в 11:04)
| | Вы описание функции fputcsv прочли? | |
|
|
|
|
|
|
|
для: Trianon
(04.11.2008 в 11:35)
| | >Вы описание функции fputcsv прочли?
Да я уже несклолько раз документацию прочитал. Только немогу врубиться. | |
|
|
|
|
|
|
|
для: ols
(04.11.2008 в 12:00)
| | Вы че тваорите?
Че Вам в моем варианте не нравится? Вы его хоть запускали? | |
|
|
|
|
|
|
|
для: ddhvvn
(04.11.2008 в 13:22)
| | >Вы че тваорите?
>Че Вам в моем варианте не нравится? Вы его хоть запускали?
Да, запускал, но он в csv - файле записывает все в первую колонку.
Вот столбцы таблицы - id | login | pswrd | description | tel | street
Все значения этих столбцов он записывает в один первый столбец csv-файла.
А нужно чтобы id в первый столбец csv - файла, login во второй и.т.д. | |
|
|
|
|
|
|
|
для: ddhvvn
(04.11.2008 в 13:22)
| | >Че Вам в моем варианте не нравится?
Я ж сказал - неаутентичный разделитель полей. | |
|
|
|
|
|
|
|
для: Trianon
(04.11.2008 в 13:56)
| | Терь я не понял =)!
Что это значит?
Тут [у меня] стандартный разделитель! И с ним все работает. | |
|
|
|
|
|
|
|
для: ddhvvn
(04.11.2008 в 14:16)
| | В русскоязычном пространстве разделитель отличен от стандартного. С точки зрения Windows. | |
|
|
|
|
|
|
|
для: Trianon
(04.11.2008 в 14:17)
| | Что значит "отличен"?
В смысле отличен в самом csv ("по определению") или в функции? | |
|
|
|
|
|
|
|
для: ddhvvn
(04.11.2008 в 14:20)
| | В экселе. Точнее в региональных настройках Windows. | |
|
|
|
|
|
|
|
для: Trianon
(04.11.2008 в 14:21)
| | %)
Вы меня вообще запутали! Причем тут эксель? )
Тут я вижу только файл csv и базу mysql... | |
|
|
|
|
|
|
|
для: ols
(04.11.2008 в 12:00)
| | Так спрашивайте, что непонятно. В документации. | |
|
|
|
|
|
|
|
для: Trianon
(04.11.2008 в 13:57)
| | >Так спрашивайте, что непонятно. В документации.
Из документации
Дополнительный параметр delimiter устанавливает разделитель полей (только один символ). По умолчанию это запятая: ,.
|
Исходя из этого я и сделал в цикле так
while($data = mysql_fetch_row($sql))
{
fputcsv($f, split(';',$data[0]));
}
|
Но он не совсем правильный. Нужно все элементы масива $data записать в файл, причем значения каждого элемента в разный столбец. А в примере тов. ddhvvn из базы все записывается в первый столбец csv-файла | |
|
|
|
|
|
|
|
для: ols
(04.11.2008 в 14:10)
| | Во-первых: Вы знаете для чгео нужная функция split? Если не знаете, че суете то?
Во-вторых все работает! Первый столбец в первый, второй во второй и т.д.
Могу показать то, что получается у меня! Моим же скриптом! | |
|
|
|
|
|
|
|
для: ols
(04.11.2008 в 14:10)
| | О все разобрался
<?php
include "config.php";
$sql = mysql_query("SELECT * FROM punkt");
$f = fopen('file.csv', 'w');
if($sql)
{
while($data = mysql_fetch_row($sql))
{
fputcsv($f, $data, ';');
}
}
else echo mysql_error();
fclose($f);
?>
|
| |
|
|
|
|
|
|
|
для: ols
(04.11.2008 в 14:19)
| | Т.е. хотите сказать, что со стандартным разделителем (запятой), у Вас не работает? | |
|
|
|
|
|
|
|
для: ddhvvn
(04.11.2008 в 14:21)
| | Ну да у меня русский эксель стоит, просто по умолчанию параметр delimiter ставит запятую, а в русскоязычном екселе разделитель точка с запятой. Хотя не знаю как в остальных. | |
|
|
|
|
|
|
|
для: ols
(04.11.2008 в 14:25)
| | Еще один! ПРИЧЕМ эксель ТУТ? ))))))))))))) | |
|
|
|
|
|
|
|
для: ddhvvn
(04.11.2008 в 14:26)
| | >Еще один! ПРИЧЕМ эксель ТУТ? )))))))))))))
Потому что сформированный файл открываю екселем ))) | |
|
|
|
|
|
|
|
для: ols
(04.11.2008 в 14:30)
| | тьфу ты блин!
Трианон и Вы про это???
мне эт даже в голову не пришло!
я смотрю все "такое" листером обычно!
так а все равно, что не видно что ли, что все разделено запятыми? Вам же не в экселе с ним работать?!.. | |
|
|
|
|
|
|
|
для: ddhvvn
(04.11.2008 в 14:33)
| | >так а все равно, что не видно что ли, что все разделено запятыми? Вам же не в экселе с ним работать?!..
В экселе. Лучше же конечно сразу в xls формат, но в php нет стандартных функций, поэтому потом вручную опять же в екселе пересохранять в .xls формат | |
|
|
|
|
|
|
|
для: ols
(04.11.2008 в 14:10)
| | Как, по Вашему, это split(';',$data[0]) должно работать?
Почему просто не указать правильный разделитель, уж коль скоро функция позволяет его указать? | |
|
|
|
|
|
|
|
для: Trianon
(04.11.2008 в 14:20)
| | >Почему просто не указать правильный разделитель, уж коль скоро функция позволяет его указать?
Я просто первый раз невнимательно прочитал документацию ))
Спасибо вам обоим)))))) | |
|
|
|