|
|
|
| Доброго времени суток!!
Помогите, плизз, необходимо 3 вещи:
1. чтобы при нажатии на ссылку на странице осуществлялся запрос вида:
<?
mysql_query("SELECT * FROM main");
?>
|
таблица main - id | name | date | comment | email | pet
2. далее, данные полученные из запроса, помещались в файл ot4et.csv - соответственно в нужном формате, т.е. разделитель tab или ;
3. и наконец, выскакивало окно с предложением открыть\сохранить данный файл....
Проблемы с первым шагом вроде не возникает, а вот со вторым и 3-м=(( | |
|
|
|
|
|
|
|
для: st.Ass
(29.09.2006 в 21:43)
| | Сохранять файл на жёсткий диск не требуется - сразу передавайте его при помощи HTTP-заголовков пользователю. Подробнее о такой технике можно почитать в темах по ссылкам
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=21366
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=15822 | |
|
|
|
|
|
|
|
для: cheops
(30.09.2006 в 12:21)
| | Спасибо cheops с3-м шагом разобрался, но остается теперь самое сложное и непонятное для меня - это экспорт таблицы из мускула в csv....=( | |
|
|
|
|
|
|
|
для: st.Ass
(29.09.2006 в 21:43)
| | Вроде нашел как сделать 2 -ой шаг, но еще не проверял -
способ 1.
<?
$query = "load data infile 'ot4et.csv'
into table saint_expo
fields terminated by ';'
lines terminated by '\n'";
$reult=mysql_query($query);
?>
|
cпособ 2.
<?
$result = mysql_query("select * from main");
while($row = mysql_fetch_array($result)) {
echo implode(';', $row);
}
?>
|
способ 3. (по моему работает только с версии 5.0)
<?
//пишем запрос к бд на извлечение всех данных из таблицы, затем помещаем данные в массив
$list = array (
'aaa,bbb,ccc,dddd',
'123,456,789',
'"aaa","bbb"'
);
$fp = fopen('ot4et.csv', 'w');
foreach ($list as $line) {
fputcsv($fp, split(';', $line));
}
fclose($fp);
?>
|
Интересно что-нибудь из этого заработает?:) | |
|
|
|
|
|
|
|
для: st.Ass
(01.10.2006 в 11:16)
| | Не получается=(
Решил действовать вторым способом
<?
$result = mysql_query("select * from main");
while($row = mysql_fetch_array($result)) {
echo implode(';', $row);
}
?>
|
Как поместить эти данные в файл и как быть с окончанием строки (\r\n)? | |
|
|
|
|
|
|
|
для: st.Ass
(02.10.2006 в 23:15)
| | Следует открыть файл и писать в него результаты с \r\n на конце
<?
$result = mysql_query("select * from main");
$fd = fopen("имя_файла","w");
while($row = mysql_fetch_array($result)) {
fwrite($fd,implode(';', $row)."\r\n");
}
fclose($fd);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(03.10.2006 в 12:39)
| | cheops, странно но при этом варианте:
<?
$result = mysql_query("select * from main");
$fd = fopen("имя_файла","w");
while($row = mysql_fetch_array($result)) {
fwrite($fd,implode(';', $row)."\r\n");
}
fclose($fd);
?>
|
В файл в строке выводится сдвоенные значения...
Вот что у меня получилось, вроеде работает....
<?
include("../sys/config.php");
$file = fopen('ot4et.csv','w');
$result = mysql_query('select * from main');
while($row = mysql_fetch_array($result))
{
fwrite($file,"\"$row[0]\";".
"\"$row[1]\";"."\"$row[2]\";".
"\"$row[3]\";"."\"$row[4]\";".
"\"$row[5]\";"."\"$row[6]\";".
"\"$row[7]\";"."\"$row[8]\";".
"\"$row[9]\";"."\"$row[10]\";".
"\"$row[11]\""."\r\n");
};
fclose($file);
$filename="ot4et.csv";
header("Content-Disposition: attachment; filename=$filename");
header("Content-type: application/octet-stream");
header("Expires: 0");
header("Cash-Control: must-revalidate, post-check=0, pre-check=0");
echo file_get_contents($filename);
?>
|
А можно ли как-нибудь сделать тоже самое, если заранее неизвестно сколько столбцов? | |
|
|
|
|
|
|
|
для: st.Ass
(05.10.2006 в 08:42)
| | Сдвоенные значения - потому что mysql_fetch_array возвращает И ассоциативный, И числовой массивы.
Попробуйте mysql_fetch_row() . | |
|
|
|
|
|
|
|
для: st.Ass
(05.10.2006 в 08:42)
| | подход
$str = implode(';', $row);
| чреват тем, что поля, содержащие символы ; [точка с запятой] и/или " [кавычка] будут записаны некорректно, и общий синтаксис строки в результате окажется нарушен.
Я бы предложил что-то вроде
<?
foreach($row as $key => $item)
{
if(strstr($item, ';') !== false || strstr($item, '"') !== false)
$row[$key] = '"'.str_replace('"', '""', $item).'"';
}
$str = implode(';', $row);
?>
|
Но и это, вероятно, не всё. Останутся еще десятичные запятые и представления дат. Возможно, еще что-то выползет... | |
|
|
|