phpCgiMysql2xml

utiliser un cgi php appellé depuis php+apache, marche nickel - sauf vitesse! chercher autre solution…

test.php: le fichier à appeller par http / apache

<?php
$dest   = './backup'; // Path to directory                
 
class MySQLDump {
     /**
    * The backup command to execute
    * @private
    * @var string
    */
     var $cmd;
 
     /**
    * MySQLDump constructor
 
    * @param string dest (Full destination directory path for backup file)
    * @access public
    */
     function MySQLDump ($dest) {
$this->cmd='./test4.php';
         }
 
 
     /**
    * Runs the constructed command
    * @access public
    * @return void
    */
     function backup () {
         system ($this->cmd, $error);
         if($error)
             trigger_error ('Backup failed: '.$error);
     }
}
 
// Instantiate MySQLDump
$mysqlDump = new MySQLDump($dest);
 
// Perform the backup
$mysqlDump->backup();
 
?> 

test4.php: le fichier php à appeller en cgi, ne pas oublier de faire un chmod 755 test4.php

#! /usr/bin/php
<?php
/* 
SCRIPT PERMETTANT DE CONVERTIR UNE TABLE MYSQL EN FICHIER XML SANS PRECISER LES CHAMPS 
source: http://www.phpcs.com/codes/CONVERTIR-RAPIDEMENT-TABLE-MYSQL-FICHIER-XML-SANS-PRECISER_37647.aspx
modified:  --- //[[fradeff@akademia.ch|Fred Radeff]] 2008/08/11 22:38//
*/
 
// INFOS DE CONNEXION A LA BDD
 
$Sbddhost = 'localhost';
$Sbdduser = 'xxx';
$Sbddpass = 'xxx';
$Sbddbase = 'xxx';
$Sbdderreur = 'La base est inaccessible.';
 
$Sbddtable = 'chronologie'; // TABLE A CONVERTIR
 
$Sdatalimit = 0; // LIMIT DE DONNEES A CONVERTIR ( 0 = toutes )
 
// DEFINIR L'ORDRE DE LECTURE (NECCESSITE DE CONNAITRE LE CHAMPS DE REFERENCE)
// LAISSER VIDE SI AUCUN ORDRE A DEFNIR
$dataorder = ''; // EX: ID DESC
 
$filename = 'fichier.xml'; // REPERTOIRE ET NOM DU FICHIER
 
$fileerreur = 'Le fichier ne peut être créé vérifier les droits du répertoire';
 
// CONNEXION ET LECTURE TABLE
 
if(!$mysql_link = @mysql_connect($Sbddhost,$Sbdduser,$Sbddpass))
{
echo $Sbdderreur;
exit;
}
 
$sql = "SELECT * FROM $Sbddbase.$Sbddtable";
 
if(!empty($dataorder)) $sql .= " ORDER BY $dataorder";
 
if($Sdatalimit >= 1) $sql .= " LIMIT $Sdatalimit";
 
$req = mysql_query($sql,$mysql_link);
$req2 = mysql_query($sql,$mysql_link);
 
mysql_close($mysql_link); // FERME LA CONNEXION DBB
 
// CONVERSION
 
$file = '<?xml version="1.0" encoding="iso-8859-15"?><rss version="2.0"><channel>';
 
while($row = mysql_fetch_row($req)) {
 
$file .= '<item>';
$i = 0;
foreach($row as $r){
$r=trim($r);
$r=html_entity_decode($r);
$r=htmlspecialchars_decode($r);
$file .= '<##'.$i.'##>'.trim($r).'</##'.$i.'##>'; // CREATION DE TAGS
++$i;
}
$file .= '</item>';
 
}
$file .= '</channel></rss>';
 
$i = 0;
while($field = mysql_fetch_field($req2)) {
$file = ereg_replace("##$i##",$field->name,$file); // REMPLACE LES TAGS
++$i;
}
 
// CREATION DU FICHIER
 
if($fp = @fopen($filename,"w")){
fputs($fp,$file);
fclose($fp);
echo '<a href='.$filename.'>Afficher '.$filename.'</a>';
}else{ echo $fileerreur; }
 
 
?>
  • info/phpcgimysql2xml.txt
  • Dernière modification: 2018/07/18 09:46
  • par radeff