Hallo!
ICh habe ein Script, um eine MySQL-Tabelle in eine CVS-Datei zu exportieren. Bei kleinen Tabellen klaptts ohne Probleme. Nun ist meine Tabelle auf 197 Zeilen angstiegen und ich bekomme nur noch eine leere CVS-Datei. Danke für evtl. Tipps!
Gruß niesel
ICh habe ein Script, um eine MySQL-Tabelle in eine CVS-Datei zu exportieren. Bei kleinen Tabellen klaptts ohne Probleme. Nun ist meine Tabelle auf 197 Zeilen angstiegen und ich bekomme nur noch eine leere CVS-Datei. Danke für evtl. Tipps!
PHP-Code:
<?php
/*****************************************
* GENERATES A DOWNLOADABLE .csv or .xls FILE OF A MYSQL DATABASE
* ONLY NEED TO CHANGE A FEW SETTINGS
* 1. THE FILE PREFIX $default_file_type (for the downloaded file's name)
* 2. THE DEFAULT TYPE OF FILE $default_file_type (USE: csv OR xls )
* or you can set it in the url with file_type=xxx
* eg [url]http://yoursite/mysql2csv?file_type=csv[/url]
* 3. THE DATABASE CONNECTION SETTINGS
* 4. THE SQL SELECT STATEMENT $sql
* 5. $show_type="yes"; WILL SHOW THE DB FIELD TYPE NEXT TO THE FIELD NAME IN THE FIRST ROW
*****************************************/
$file_prefix = "";
$default_file_type = "csv";
// enter here your database settings
$host="localhost";
$user="root";
$pw="";
$database="tbsumfrage";
// default-query
$sql = "SELECT * FROM daten";
//show field type next to field name in the first row?
$show_type = "no";
/****** NO NEED TO EDIT BELOW HERE ******/
if($file_type!="csv"&&$file_type!="xls"){
$file_type = $default_file_type;
}
if($file_type=="csv"){
$field_seperator = ",";
}elseif($file_type=="xls"){
$field_seperator = "\t";
}else{
echo "\$default_file_type is set wrong. use \"csv\" or \"xls\"";
exit;
}
$file_name=$file_prefix."_".date(Y)."-".date(m)."-".date(d).".".$file_type;
header("Content-Disposition: attachment; filename=$file_name");
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");
$db_link = mysql_connect($host, $user, $pw);
mysql_select_db($database, $db_link);
$result = mysql_query($sql);
$fieldcounts = mysql_num_fields($result);
for($i = 0; $i < $fieldcounts; $i++) {
$fieldtype = mysql_fetch_field($result, $i);
if($show_type!="yes"){
echo "$fieldtype->name";
}else{
echo "$fieldtype->name [$fieldtype->type]";
}
if ($i < ($fieldcounts-1)){
echo $field_seperator;
}else{
echo "\n";
}
}
while ($myrow = mysql_fetch_array($result)) {
for($i = 0; $i < $fieldcounts; $i++) {
$current_field = $myrow[$i];
if($file_type=="csv"){
$current_field = str_replace(",", " ", $current_field);
}elseif($file_type=="xls"){
$current_field = str_replace("\t", " ", $current_field);
}
if ($i < ($fieldcounts-1)){
echo str_replace("\r\n", " ", $current_field) . $field_seperator;
}else{
echo str_replace("\r\n", " ", $current_field) . "\n";
}
}
}
?>

Kommentar