Teil von  SELFPHP   Teil von  Code Snippets / MySQL / Datenbank Wartung
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Datenbank-Export-Modul nach YAML, CSV oder XML





Beispielaufgabe

Nachfolgend stellen wir Ihnen eine Klasse in PHP5 vor, mit der Sie eine Datenbanktabelle komplett in verschiedene Ausgabe-Formate konvertieren können. Die Klasse unterstützt dabei die Speicherung in den Formaten YAML, CSV oder XML.

Bei der Speicherung der Daten werden auch gleich die Namen der Spalten in die Ausgabe gespeichert. Die so erstellte Datei kann dann mit beliebigen Programmiersprachen wieder reibungslos in andere Formate oder in eine neue Datenbank gespeichert werden.

Gerade wenn es um den Austausch von Daten zwischen verschiedenen Programmen geht, kann die Klasse für die Konvertierung der Daten nützlich sein.

Nachfolgend sehen Sie den Zugriff auf die Klasse.

<?php

define 
'DB_HOST''localhost' );            // MySQL Host
define 'DB_NAME''Datenbank' );        // MySQL Database
define 'DB_USER''Username' );    // MySQL User
define 'DB_PASS''Paswort' );            // MySQL Password
 
 
$connectDb = @mysql_connectDB_HOST DB_USER DB_PASS );
$sql = @mysql_select_dbDB_NAME $connectDb );
$query mysql_query("SELECT * FROM testletter WHERE 1");
 
 
include(
"exportModul.php");


$exportTo = array('yaml','csv','xml');
$exportToFile = array('yml','csv','xml');
$exportContentType = array('yml','csv','text/xml');

// Ausgabe 0 -> YAML, 1 -> CSV, 2 -> XML
$outputTo 0;

 
// Create Database connect
$db = new exportModul$exportTo[$outputTo] );
$db -> beginTransaktion$query );

//echo $db -> getLastMessage();
//echo $db -> getOutput();

$fp fopen 'output.' $exportToFile[$outputTo], 'w' );
fputs $fp$db -> getOutput() );
fclose $fp );

$filename strftime("Testletter-%H.%M.%S-").'.'.$exportToFile[$outputTo];


// Datei zum Download anbieten

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); 
header 'Content-type: '.$exportContentType[$outputTo] ); 
header('Content-Disposition: attachment; filename="' $filename.'"'); 
header("Content-Transfer-Encoding:­ binary"); 
header("Content-Length: ".filesize'output.' $exportToFile[$outputTo] )); 
readfile('output.' $exportToFile[$outputTo]);

?>






exportModul.php

Hier sehen Sie noch die vollständige Klasse für die Konvertierung der Daten.

<?php

/**
 * Datenbank-Export-Modul --> YAML, CSV, XML
 * 
 * @author SELFPHP OHG
 * @copyright 2010, SELFPHP OHG
 * @license BSD License
 * @link http://www.selfphp.de 
 * 
 */

class exportModul {
    
    
/**
     * @var string    yaml,xml,
     */
    
private $exportTo    "yaml"
    
    
/**
     * @var string    The last Error
     */
    
private $lastError    ""
    
    
/**
     * @var array    The field names from the result
     */
    
private $columns = array();
    
    
/**
     * @var integer    Count fields from the result
     */
    
private $fields 0;
    
    
/**
     * @var string    Store the export datas
     */
    
private $exportData '';
    
    
    
/**
     * Constructor
     * 
     * @param    string    $exportVariant    The Export Variant (e.g. YAML, XML, CSV ...)
     */
    
function __construct$exportVariant "yaml" ) {
    
        
$this->exportTo $exportVariant;
        
    }
    
    
/**
     * Get the last message
     * 
     * @return    string    The last error message
     */
    
public function getLastMessage () {
        
        return 
$this->lastError;
        
    }
    
    
/**
     * Get the Output
     * 
     * @return    string    The Output data
     */
    
public function getOutput () {
        
        return 
$this->exportData;
        
    }
    
    
/**
     * Begin the different transaction (e.g. export to YAML)
     * 
     * @param    resource    $sqlResult    The MySQL Result
     * 
     * @return    boolean                    True or False
     */
    
public function beginTransaktion$sqlResult FALSE ) {
        
        
$this->lastError "";
        
        if ( !
$sqlResult ) {
            
$this->lastError mysql_error();
            return 
false;
        }
        
        if ( @
mysql_num_rows$sqlResult ) == ) {
            
$this->lastError "empty result...";
            return 
false;
        }
        
        
$this->getFieldNames$sqlResult );
        
        if ( 
$this->exportTo == "yaml" )
            return 
$this->exportToYaml$sqlResult );
        elseif ( 
$this->exportTo == "xml" )
            return 
$this->exportToXml$sqlResult );
        elseif ( 
$this->exportTo == "csv-excel" )
            return 
$this->exportToCsvNULL$sqlResult',''"'TRUE );
        else 
            return 
$this->exportToCsvNULL$sqlResult',''"'TRUE );
            
            
            
    }
    
    
/**
     * Store the Field Names from a MySQL Result
     * 
     * @param    resource    $sqlResult    The MySQL Result
     * 
     * @return    boolean                    True
     */
    
private function getFieldNames$sqlResult ) {
        
        
$this->columns = array();
        
        
$this->fields = @mysql_num_fields$sqlResult );
        
        for ( 
$i 0$i $this->fields$i++ ) {
            
$this->columns[$i] = stripslashesmysql_field_name$sqlResult$i ) ); 
        }
        
        return 
true;
        
    }
    
    
/**
     * Export Data to YAML
     * YAML Ain't Markup Language
     * YAML is a human friendly data serialization standard for all programming languages.
     * More Details: http://www.yaml.org/
     * 
     * @param    resource    $sqlResult    The MySQL Result
     * 
     * @return    boolean                    True
     */
    
private function exportToYaml$sqlResult ) {
        
        
$number 0;
        
$crlf "\n";
        
$this->exportData '';
        
        @
mysql_data_seek$sqlResult); 
        
        while ( ( 
$row mysql_fetch_row$sqlResult ) ) ) {
            
$number++;
            
$this->exportData .= $number ":$crlf";
            
            for (
$i 0$i $this->fields$i++) {
                if (isset(
$row[$i]) && !is_null($row[$i])) {
                    
$this->exportData .= '  ' $this->columns[$i] . ': '  htmlspecialchars($row[$i]) . $crlf;
                }
            }
        }    
    
        return 
true;
        
    }
    
    
/**
     * Export Data to XML
     * 
     * @param    resource    $sqlResult    The MySQL Result
     * 
     * @return    boolean                    True
     */
    
private function exportToXml$sqlResult ) {
        
        
$crlf "\n";
        
$charset 'iso-8859-1';
        
$table 'SELFPHP-Newsletter-Data';
        
$tableHead 'Mailing-Data';
        
        
$this->exportData  =  '<?xml version="1.0" encoding="' $charset '" ?>' $crlf;
        
        
$this->exportData .= '<' $tableHead '>' $crlf;
        
        while ( ( 
$row mysql_fetch_row$sqlResult ) ) ) {
            
$this->exportData .= '    <' $table '>' $crlf;
            for (
$i 0$i $this->fields$i++) {
                if (isset(
$row[$i]) && !is_null($row[$i])) {
                    
$this->exportData .= '        <' $this->columns[$i] . '>' htmlspecialchars($row[$i])
                            .  
'</' $this->columns[$i] . '>' $crlf;
                }
            }
            
$this->exportData  .= '    </' $table '>' $crlf;

        }
        
        
$this->exportData .= '</' $tableHead '>';
    
        return 
true;    
                    
    }
    
    
/**
     * Export Data to CSV
     * 
     * @param    resource    $sqlResult    The MySQL Result
     * 
     * @return    boolean                    True
     */
    
private function exportToCsv$filePfad NULL$sqlResult$delimiter ','$enclosure '"'$coloumnName FALSE ) {
        
        
// Scheint noch ein Fehler drin zu sein wenn
        // man es mit Excel importiert
        
                
        
@mysql_data_seek$sqlResult); 
        
        if ( 
$filePfad == NULL 
            
$filePfad dirname(__FILE__) . '/temp' time() . '.csv';
        
        
$fp fopen($filePfad'w');
        
        if ( 
$coloumnName == TRUE )
            
fputcsv $fp $this->columns$delimiter$enclosure );
                
        while ( ( 
$row mysql_fetch_row$sqlResult ) ) ) {
            
fputcsv $fp $row$delimiter$enclosure );
        }
        
        
fclose($fp);
        
        
$this->saveTempFile($filePfad);
        
        return 
true;    
                    
    }
    
    
private function saveTempFile($filePfad) {
        
// Load Temp file
        
$fp fopen($filePfad'r');
        
        
$this->exportData fread$fpfilesize$filePfad ) );
            
        
fclose($fp);
        
        @
unlink $filePfad );
    }
    
    function 
__destruct() {
    
    }
}

?>





Download
exportModul.zip






 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner LeaseWeb Germany GmbH
Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


DM Solutions
Microsoft Deutschland GmbH
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2013 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt