La Ferme du web - Les forums

Venez baraguiner avec la communauté !

Vous n'êtes pas identifié.

#1 13/06/2009 10:16:14

semor
Membre
Lieu: reims
Date d'inscription: 06/02/2009
Messages: 120
Site web

Mysql to Xml

bonjour les fermiers!

je suis à la recherche d'un script ou autre qui me permette de pouvoir exporter certaines informations de ma base de données de boutique en ligne afin de pouvoir disposer d'un fichier xml pour les différents comparateurs de prix du marché.

je souhaite grosso modo optenir un fichier xml de la sorte:

Code:

<?xml version="1.0" encoding="UTF-8"?>
<product>
<category>03- Enceintes</category>
<brand>Audes</brand>
<product_name>Audes Blue (la paire)</product_name>
<price>2582.55</price>
<product_url>http://www.hautefidelite-promo.com/product.php?id_product=10</product_url>
<image_url>http://www.hautefidelite-promo.com/img/p/10-50.jpg</image_url>
<description>Lenceinte colonne Blue de Aud&egrave;s r&eacute;uni dans une m&ecirc;me enceinte une tr&egrave;s bonne enceinte compacte et ...</description>
<shipping_cost>40</shipping_cost>
<product_id>4567</product_id>
</product>

Qui néglige la musique ignore l'approche du sublime

Hors ligne

 

13/06/2009 10:16:14

Botte De Foin Publicitaire


#2 13/06/2009 12:56:00

anarta
Membre
Lieu: Entre Orléans et Chateaudun
Date d'inscription: 05/03/2009
Messages: 45

Re: Mysql to Xml

Bonjour,
je ne suis pas un gros connaisseur mais j'avais réalisé un script qui permettait de modifier un fichier XML.
Pour mon cas le fichier XML existait déja donc je n'avais pas besoin de le créer, je l'ouvrais juste pour faire des modifications.
Dans ton cas ça devrait donner ça:

Code:

$monfichier = fopen('test.xml', 'w+');//ouverture du fichier si il n'existe pas il est créer (normalement)
fseek($monfichier, 0); // On met le curseur au début du fichier
fputs($monfichier, '<?xml version="1.0" encoding="UTF-8"?>'."\n");//on ecrit la premiere ligne

$reponse = mysql_query("SELECT * FROM produits ORDER BY id ASC");//requete qui recupere toutes les infos sur les produits
while ($donnees = mysql_fetch_array($reponse) )//on boucle pour recuperer toutes les infos  produit par produit
{               
    fputs($monfichier, '<product>'."\n");// on ecrit chaque ligne en recuperant la donnee le concernant
    fputs($monfichier, '<category>'.$donnees["category"].' </category>'."\n");
    fputs($monfichier, '<brand>'.$donnees["brand"].' </brand>'."\n");
    fputs($monfichier, '<product_name>'.$donnees["product_name"].' </product_name>'."\n");
    fputs($monfichier, '<price>'.$donnees["price"].' </price>'."\n");
    fputs($monfichier, '<product_url>'.$donnees["product_url"].' </product_url>'."\n");
    fputs($monfichier, '<image_url>'.$donnees["image_url"].' </image_url>'."\n");
    fputs($monfichier, '<description>'.$donnees["description"].' </description>'."\n");
    fputs($monfichier, '<shipping_cost>'.$donnees["shipping_cost"].' </shipping_cost>'."\n");
    fputs($monfichier, '<product_id>'.$donnees["product_id"].' </product_id>'."\n");
    fputs($monfichier, '</product>'."\n");             
} 

fclose($monfichier);//on ferme le fichier

Bien sur à ajuster selon le nom de ta table et de tes champs dans ta BDD.

Dernière modification par anarta (14/06/2009 18:08:32)

Hors ligne

 

#3 15/06/2009 19:58:13

semor
Membre
Lieu: reims
Date d'inscription: 06/02/2009
Messages: 120
Site web

Re: Mysql to Xml

merci c vraiment cool je testerai tout ça demain et je te dirais si ça a marché.
en tout cas en attendant mille merci


Qui néglige la musique ignore l'approche du sublime

Hors ligne

 

#4 16/06/2009 15:56:22

semor
Membre
Lieu: reims
Date d'inscription: 06/02/2009
Messages: 120
Site web

Re: Mysql to Xml

a vrai dire je pige pas grand chose et je n'arrive pas vraiment à faire fonctionner le schmilblik!

sinon voici pour info le fichier php qui crée un fichier xml destiné au site leguide.com:

Code:

<?php

class psf_LeGuide extends Module {
    function __construct() {
        $this->name = 'psf_leguide';
        $this->tab = 'Exportations';
        $this->version = 1.0;

        parent::__construct(); // The parent construct is required for translations

        $this->page = basename(__FILE__, '.php');
        $this->displayName = '[<font color="blue">P</font><font color="#F4C6C9">S</font><font color="red">F</font>] '.$this->l('LeGuide');
        $this->description = $this->l('Exportation du catalogue pour LeGuide.com');
    }

    function install() {
        $temp = new Category();
        $langs = Language::getLanguages(false);
        foreach ($langs as $lang) {
            $temp->name[ $lang['id_lang'] ] = 'PSF LeGuide';
            $temp->link_rewrite[ $lang['id_lang'] ] = 'PSF_LeGuide';
        }
        $temp->id_parent = 1;
        $temp->active = 0;
        if (!$temp->save())
            return false;
        
        Configuration::updateValue('PSF_LEGUIDE_CATID', $temp->id);
        
        if (!parent::install())
            return false;
        
        return true;
    }

    public function getContent() {
        $output = '<h2 align="center">'.$this->displayName.'</h2>';

        if (Tools::isSubmit('submitPSFLEGUIDEGENERATE')) {
            $output .= $this->createXML();
        }
        
        return $output.$this->displayForm();
    }
    
    public function displayForm() {
        global $cookie;

        $select_lang = '';
        $langs = Language::getLanguages();
        foreach ($langs as $lang)
            $select_lang .= '<option value="'.strtoupper($lang['iso_code']).'">'.$lang['name'].'</option>';
        
        $select_currency = '';
        $currencies = Currency::getCurrencies();
        foreach ($currencies as $currency)
            $select_currency .= '<option value="'.strtoupper($currency['iso_code']).'">'.$currency['name'].'</option>';
                    
        $output = '
        <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
            <fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Configuration').'</legend>
            
                <label>'.$this->l('Langue').'</label>
                <div class="margin-form">
                    <select name="LANG">
                        '.$select_lang.'
                    </select>
                </div>
                
                <label>'.$this->l('Devise').'</label>
                <div class="margin-form">
                    <select name="CURRENCY">
                        '.$select_currency.'
                    </select>
                </div>

                <label>'.$this->l('Disponibilit&eacute;').'</label>
                <div class="margin-form">
                    <input type="radio" name="DISPO_choix" value="dispo" onclick="$(\'#DISPO\').attr(\'disabled\', false); $(\'#DISPO_TEMPS\').attr(\'disabled\', false); $(\'#DISPO_ENTRE_1\').attr(\'disabled\', true); $(\'#DISPO_ENTRE_2\').attr(\'disabled\', true); $(\'#DISPO_ENTRE_TEMPS\').attr(\'disabled\', true); $(\'#DISPO\').focus();" />
                        <input type="text" id="DISPO" name="DISPO" disabled="disabled" style="text-align: right; width: 20px;" /> <select name="DISPO_TEMPS" id="DISPO_TEMPS" disabled="disabled"><option value="heure">heure</option><option value="heures">heures</option><option value="jour">jour</option><option value="jours">jours</option><option value="semaine">semaine</option><option value="semaines">semaines</option><option value="mois">mois</option></select>
                    <br />
                    <input type="radio" name="DISPO_choix" value="entre" onclick="$(\'#DISPO_ENTRE_1\').attr(\'disabled\', false); $(\'#DISPO_ENTRE_2\').attr(\'disabled\', false); $(\'#DISPO_ENTRE_TEMPS\').attr(\'disabled\', false); $(\'#DISPO\').attr(\'disabled\', true); $(\'#DISPO_TEMPS\').attr(\'disabled\', true); $(\'#DISPO_ENTRE_1\').focus();" />
                        entre <input type="text" id="DISPO_ENTRE_1" name="DISPO_ENTRE_1" disabled="disabled" style="text-align: right; width: 20px;" /> et <input type="text" id="DISPO_ENTRE_2" name="DISPO_ENTRE_2" disabled="disabled" style="text-align: right; width: 20px;" /> <select name="DISPO_ENTRE_TEMPS" id="DISPO_ENTRE_TEMPS" disabled="disabled"><option value="heure">heure</option><option value="heures">heures</option><option value="jour">jour</option><option value="jours">jours</option><option value="semaine">semaine</option><option value="semaines">semaines</option><option value="mois">mois</option></select>
                </div>

                <label>'.$this->l('D&eacute;lai de livraison').'</label>
                <div class="margin-form">
                    <input type="radio" name="DELAI_choix" value="delai" onclick="$(\'#DELAI\').attr(\'disabled\', false); $(\'#DELAI_TEMPS\').attr(\'disabled\', false); $(\'#DELAI_ENTRE_1\').attr(\'disabled\', true); $(\'#DELAI_ENTRE_2\').attr(\'disabled\', true); $(\'#DELAI_ENTRE_TEMPS\').attr(\'disabled\', true); $(\'#DELAI\').focus();" />
                        <input type="text" id="DELAI" name="DELAI" disabled="disabled" style="text-align: right; width: 20px;" /> <select name="DELAI_TEMPS" id="DELAI_TEMPS" disabled="disabled"><option value="heure">heure</option><option value="heures">heures</option><option value="jour">jour</option><option value="jours">jours</option><option value="semaine">semaine</option><option value="semaines">semaines</option><option value="mois">mois</option></select>
                    <br />
                    <input type="radio" name="DELAI_choix" value="entre" onclick="$(\'#DELAI_ENTRE_1\').attr(\'disabled\', false); $(\'#DISPO_ENTRE_2\').attr(\'disabled\', false); $(\'#DELAI_ENTRE_TEMPS\').attr(\'disabled\', false); $(\'#DELAI\').attr(\'disabled\', true); $(\'#DELAI_TEMPS\').attr(\'disabled\', true); $(\'#DELAI_ENTRE_1\').focus();" />
                        entre <input type="text" id="DELAI_ENTRE_1" name="DELAI_ENTRE_1" disabled="disabled" style="text-align: right; width: 20px;" /> et <input type="text" id="DELAI_ENTRE_2" name="DELAI_ENTRE_2" disabled="disabled" style="text-align: right; width: 20px;" /> <select name="DELAI_ENTRE_TEMPS" id="DELAI_ENTRE_TEMPS" disabled="disabled"><option value="heure">heure</option><option value="heures">heures</option><option value="jour">jour</option><option value="jours">jours</option><option value="semaine">semaine</option><option value="semaines">semaines</option><option value="mois">mois</option></select>
                </div>

                <label>'.$this->l('Garantie').'</label>
                <div class="margin-form">
                    <input type="text" id="GARANTIE" name="GARANTIE" style="text-align: right; width: 20px;" /> <select name="GARANTIE_TEMPS" id="GARANTIE_TEMPS"><option value="mois">mois</option><option value="an">an</option><option value="ans">ans</option><option value="ann&eacute;e">ann&eacute;e</option><option value="ann&eacute;es">ann&eacute;es</option></select>
                </div>
                
                <label>'.$this->l('Frais').'</label>
                <div class="margin-form">
                    <input type="text" id="TRANSPORT" name="TRANSPORT" style="text-align: right; width: 20px;" />
                    <p class="clear">
                        Dans ce champ, doit &ecirc;tre indiqu&eacute; la somme TTC en euros de tous les frais li&eacute;s &agrave; la commande : frais de port, de traitement, de pr&eacute;paration, etc. Pr&eacute;f&eacute;rez la virgule comme s&eacute;parateur de d&eacute;cimales.
                    </p>
                </div>
                
                <label>'.$this->l('Etat').'</label>
                <div class="margin-form">
                    <input type="radio" name="ETAT" value="0" /> Neuf
                    <br />
                    <input type="radio" name="ETAT" value="1" /> Occasion
                </div>
                
                <center><input type="submit" name="submitPSFLEGUIDEGENERATE" value="'.$this->l('G&eacute;n&eacute;rer le fichier XML').'" class="button" /></center>
            </fieldset>
        </form>';
        
        return $output;
    }

    private function createXML($produits = '') {
        $LANG = Tools::getValue('LANG', 'FR');
        $CURRENCY = Tools::getValue('CURRENCY', 'EUR');
        if (Tools::getValue('DISPO_choix', 'dispo') == 'dispo')
            $DISPO = Tools::getValue('DISPO', '48').' '.Tools::getValue('DISPO_TEMPS', 'heures');
        else
            $DISPO = Tools::getValue('DISPO_ENTRE_1', 48).'-'.Tools::getValue('DISPO_ENTRE_2', '72').' '.Tools::getValue('DISPO_ENTRE_TEMPS', 'heures');
        if (Tools::getValue('DELAI_choix', 'dispo') == 'delai')
            $DELAI = Tools::getValue('DELAI', '48').' '.Tools::getValue('DELAI_TEMPS', 'heures');
        else
            $DELAI = Tools::getValue('DELAI_ENTRE_1', 48).'-'.Tools::getValue('DELAI_ENTRE_2', '72').' '.Tools::getValue('DELAI_TEMPS', 'heures');
        $GARANTIE = Tools::getValue('GARANTIE', 2).' '.Tools::getValue('GARANTIE_TEMPS', 'ans');
        $FRAIS = Tools::getValue('TRANSPORT', 0);
        $ETAT = Tools::getValue('ETAT', 0);
        $i = 1;
        
        $id_lang = Language::getIdByIso(strtolower($LANG));
        
        if ($produits == '')
            $produits = Product::getProducts($id_lang, 0, 0, 'id_product', 'ASC', Configuration::get('PSF_LEGUIDE_CATID'));
        
        if (!is_array($produits) || count($produits) == 0)
            return '<center>'.$this->displayError( $this->l('Il n\'y a pas de produits dans la cat&eacute;gorie "PSF LeGuide"') ).'</center>';
        
        // Creation du XML
        $doc = new DOMDocument('1.0', 'ISO-8859-1');
        
        // Creation de l'arbre "catalogue"
        $catalogue = $doc->createElement('catalogue');
            // Attributs de "catalogue"
            $catalogue->setAttribute('lang', utf8_encode($LANG));
            $catalogue->setAttribute('date', date("Y-m-d H:i"));
            $catalogue->setAttribute('GMT', str_replace('0', '', date('O')));
        
        foreach ($produits as $prod) {
            $prod = new Product($prod['id_product']);
            $cat = new Category($prod->id_category_default);
            
            // Creation du l'arbre "product"
            $product = $doc->createElement('product');
                // Attributs de "product"
                $product->setAttribute('place', $i++);
                
                $images = $prod->getImages($id_lang);
                $url_image = '';
                foreach ($images as $im)
                    if ($im['cover'] == 1)
                        $url_image = 'http://'.$_SERVER["HTTP_HOST"].'/img/p/'.$prod->id.'-'.$im['id_image'].'.jpg';
                
                
                $row = $doc->createElement('categorie');
                    $row->appendChild( $doc->createCDATASection($cat->name[$id_lang]) );
                $product->appendChild($row);
                $row = $doc->createElement('identifiant_unique');
                    $row->appendChild( $doc->createCDATASection('PRODID_'.$prod->id) );
                $product->appendChild($row);
                $row = $doc->createElement('titre');
                    $row->appendChild( $doc->createCDATASection($prod->name[$id_lang]) );
                $product->appendChild($row);
                $prix = $doc->createElement('prix', $prod->getPrice($prod->id_tax, null, 2, null, false, true, 1));
                    $prix->setAttribute('currency', $CURRENCY);
                $product->appendChild($prix);
                $row = $doc->createElement('url_produit');
                    $row->appendChild( $doc->createCDATASection('http://'.$_SERVER["HTTP_HOST"].$prod->getLink()) );
                $product->appendChild($row);
                $row = $doc->createElement('url_image');
                    $row->appendChild( $doc->createCDATASection($url_image) );
                $product->appendChild($row);
                $row = $doc->createElement('description');
                    $row->appendChild( $doc->createCDATASection($prod->description_short[$id_lang]) );
                $product->appendChild($row);
                $product->appendChild( $doc->createElement('frais_de_livraison', $FRAIS) );
                
                if ($prod->ecotax == 0)
                    $product->appendChild( $doc->createElement('D3E', 0) );
                else
                    $product->appendChild( $doc->createElement('D3E', $prod->ecotax) );
            
                $product->appendChild( $doc->createElement('disponibilite', $DISPO) );
                $product->appendChild( $doc->createElement('delai_de_livraison', $DELAI) );
                $row = $doc->createElement('marque');
                    $row->appendChild( $doc->createCDATASection($prod->manufacturer_name) );
                $product->appendChild($row);
                $product->appendChild( $doc->createElement('ean', $prod->ean13) );
                $product->appendChild( $doc->createElement('garantie', $GARANTIE) );
                /*
                $prix_barre = $doc->createElement('prix_barre', '34,45');
                    $prix_barre->setAttribute('currency', $CURRENCY);
                $product->appendChild($prix_barre);
                */
                $row = $doc->createElement('reference_modele');
                    $row->appendChild( $doc->createCDATASection($prod->reference) );
                $product->appendChild($row);
                $product->appendChild( $doc->createElement('occasion', $ETAT) );
                $product->appendChild( $doc->createElement('devise', $CURRENCY) );
                $row = $doc->createElement('devise');
                    $row->appendChild( $doc->createCDATASection($prod->manufacturer_name) );
                $product->appendChild($row);
            $catalogue->appendChild($product);
        }
        $doc->appendChild($catalogue);
        
        $xml = '<?xml version="1.0" encoding="ISO-8859-1"?>'.$doc->saveXML();

        if (!$doc->save(_PS_MODULE_DIR_.'psf_leguide/leguide.xml'))
            return '<center>'.$this->displayError( $this->l('Erreur durant la g&eacute;n&eacute;ration du fichier XML') ).'</center>';
        else
            return '<center>'.$this->displayConfirmation( '<center>'.$this->l('Fichier correctement g&eacute;n&eacute;r&eacute;...').'<br /><a href="http://'.$_SERVER["HTTP_HOST"].__PS_BASE_URI__.'modules/psf_leguide/leguide.xml" target="_blank">http://'.$_SERVER["HTTP_HOST"].__PS_BASE_URI__.'modules/psf_leguide/leguide.xml</a>' .'</center>').'</center>';
    }
    
}

?>

seul bémol, avec ce dernier je n'arrive à exporter que 67 produits de ma boutique prestashop qui en contient près du double.


Qui néglige la musique ignore l'approche du sublime

Hors ligne

 

#5 17/06/2009 10:05:01

anarta
Membre
Lieu: Entre Orléans et Chateaudun
Date d'inscription: 05/03/2009
Messages: 45

Re: Mysql to Xml

Désolé je ne peut plus t'aider, ton code est trop compliqué pour moi. J'ai l'impression qu'il y a du javascript et du php mélangé. D'autres membres ont peut être une solution.

Hors ligne

 

#6 17/06/2009 10:45:53

HammHetfield
Membre
Date d'inscription: 08/06/2009
Messages: 35

Re: Mysql to Xml

Ouai mais nan, il utilise Prestashop, un CMS, du coup c'est de la POO, et il faut faire avec l'API de Prestashop et il me semble qu'il utilise un script fait pour Prestashop, du coup y'a peu de chance qu'on y comprenne quelquechose. Le mieux c'est que tu ailles sur le forum de PS wink

Hors ligne

 

#7 17/06/2009 11:43:05

semor
Membre
Lieu: reims
Date d'inscription: 06/02/2009
Messages: 120
Site web

Re: Mysql to Xml

darkcristal a écrit:

Rien ne l'empêche de créer un fichier php à la racine de son site et de l'exécuter indépendamment du CMS ?

j'essayerai cet ap-midi de le faire fonctionner on verra bien


Qui néglige la musique ignore l'approche du sublime

Hors ligne

 

#8 17/06/2009 20:31:07

Ouark
Administrateur
Date d'inscription: 24/09/2008
Messages: 55
Site web

Re: Mysql to Xml

sinon, quand c'est des scripts open sources, le plus rapide, c'est encore d'aller faire un tour sur leur forum, ils seront plus à même de répondre:
notamment: Export des articles.

C'est du CSV, mais la plupart des comparateurs acceptent aussi ce format, sinon, c'est facile de l'adapter aussi.

Hors ligne

 

#9 18/06/2009 08:53:06

semor
Membre
Lieu: reims
Date d'inscription: 06/02/2009
Messages: 120
Site web

Re: Mysql to Xml

Ouark a écrit:

sinon, quand c'est des scripts open sources, le plus rapide, c'est encore d'aller faire un tour sur leur forum, ils seront plus à même de répondre:
notamment: Export des articles.

C'est du CSV, mais la plupart des comparateurs acceptent aussi ce format, sinon, c'est facile de l'adapter aussi.

je l'ai installé mais fonctionne pas comme il faut


Qui néglige la musique ignore l'approche du sublime

Hors ligne

 

#10 23/06/2009 12:07:55

semor
Membre
Lieu: reims
Date d'inscription: 06/02/2009
Messages: 120
Site web

Re: Mysql to Xml

bon fin de compte j'ai trouvé un peu mieux mais je lutte encore et toujours mais là vous allez peut-être pouvoir m'aider... je souhaiterai écrire dans un fichier csv ce que me renvoie une page php.

Voici le lien de la page: http://www.hautefidelite-promo.com/modu … export.php

Voici le code de la page:

Code:

<?php

class ShoppingDotCom extends Module
{
    public $url;
    public $filename;

    private $_html;

    function __construct()
    {
        $this->name = 'shoppingdotcom';
        $this->tab = 'Exportation';
        $this->version = '0.9';
        
        parent::__construct();

        $this->page = basename(__FILE__, '.php');
        $this->displayName = $this->l('Exportation catalogue');
        $this->description = $this->l('Exportation complète de la liste des produits');

        $this->filename = 'catalogue.csv';
        $this->url = 'http://' . htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8') . __PS_BASE_URI__ . 'modules/' . $this->name . '/export.php';
    }
    
    public function install()
    {
        if (!parent::install())
            return false;
        Configuration::updateValue('SHOPPINGDOTCOM_LANGUAGE', intval(Configuration::get('PS_LANG_DEFAULT')));
        return true;
    }
    
    public function uninstall($w = false)
    {
        if (!parent::uninstall(false))
            return false;
        Configuration::deleteByName('SHOPPINGDOTCOM_LANGUAGE');    
        return true;
    }
    
    public function getContent()
    {
        $this->_html = '<h2><img src="' . __PS_BASE_URI__ . 'modules/' . $this->name . '/logo.gif" alt="" />&nbsp;Comparateur de Prix</h2>';
        $this->_html.= '<fieldset class="width3">
                <legend>'.$this->l('Informations').'</legend>
                <p>'.$this->l('URL du fichier').':&nbsp;<a href="'. $this->url .'" target="_blank">'. $this->url .'</a></p>
                <p><a href="https://marchand.shopping.com/mac/app?service=page/AccountSummary" target="_blank">'. $this->l('Aller sur mon compte shopping.com') .'</a></p>
            </fieldset>';
        return $this->_html;
    }

    public function buildCSV()
    {
        $csv = '';

        /* First line, columns */
        $columns = array(
            'Référence', //Référence
            'CUP', //upc__ean
            'Fabricant',
            'Nom du produit',
            'Description du produit',
            'Prix',
            'Prix barré', 
            'En solde',
            'Stock', //disponibilite: oui ou non
            'Description de la disponibilité',
            'URL produit',
            'URL image',
            'Catégorie',
            'Frais de port',
            'Poids',
            'Eco-taxe'
        );

        foreach ($columns AS $column)
            $csv.= $column.'|';
        $csv.= chr(13);
        
        /* Setting parameters */
        $parameters = Configuration::getMultiple(array('PS_REWRITING_SETTINGS', 'PS_LANG_DEFAULT', 'PS_SHIPPING_FREE_PRICE', 'PS_SHIPPING_HANDLING', 'PS_SHIPPING_METHOD', 'PS_SHIPPING_FREE_WEIGHT', 'PS_COUNTRY_DEFAULT'));

        /* Language */
        $language = new Language(intval($parameters['PS_LANG_DEFAULT']));

        /* Link instance for products links */
        $link = new Link();

        /* Searching for products */
        $sql = 'SELECT `id_product` FROM `'._DB_PREFIX_.'product` WHERE `active` = 1';
        //$sql.= ' LIMIT 0,5';
        $result = Db::getInstance()->ExecuteS($sql);

        foreach ($result AS $k => $row)
        {
            $product = new Product(intval($row['id_product']));
            if (Validate::isLoadedObject($product))
            {
                $line = array();

                $line[] = $product->reference;
                $line[] = $product->ean13;                
                $line[] = Manufacturer::getNameById($product->id_manufacturer);                
                $line[] = $product->name[intval($parameters['PS_LANG_DEFAULT'])];
                $line[] = strip_tags($product->description_short[intval($parameters['PS_LANG_DEFAULT'])]);
                $price = $product->getPrice();
                $line[] = number_format($price - $product->ecotax, 2, ',', '');
                $priceb = $product->getPriceWithoutReduct();
                $line[] = number_format($priceb - $product->ecotax, 2, ',', '');
                $line[] = $product->on_sale ? 'o' : 'n';
                $line[] = $product->quantity ? 'o' : 'n';
                $line[] = strip_tags( $product->availability[intval($parameters['PS_LANG_DEFAULT'])] );

                $line[] = 'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').$link->getProductLink(intval($product->id), $product->link_rewrite[intval($parameters['PS_LANG_DEFAULT'])], $product->ean13);
                
                /* Product cover image */
                $image = $product->getCover(intval($product->id));
                if ($image['id_image'])
                    $imageObj = new Image(intval($image['id_image']));
                $line[] = (isset($imageObj) AND Validate::isLoadedObject($imageObj)) ? 'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8')._THEME_PROD_DIR_.intval($product->id).'-'.intval($imageObj->id).'-small.jpg' : 'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8')._THEME_PROD_DIR_.$language->iso_code.'-default-small.jpg';

                /* Product categories */
                $categories = $product->getIndexedCategories(intval($product->id));
                if ($categories)
                {
                    foreach ($categories AS $k => $row)
                    {
                        $category = new Category(intval($row['id_category']));
                        $line[] = Category::hideCategoryPosition($category->name[intval($parameters['PS_LANG_DEFAULT'])]);
                    }
                }
                else
                    $line[] = 'N/A';

                /* Delivery costs */
                if ((isset($parameters['PS_SHIPPING_FREE_PRICE']) AND $price > floatval($parameters['PS_SHIPPING_FREE_PRICE']) AND floatval($parameters['PS_SHIPPING_FREE_PRICE']) > 0) OR 
                (isset($parameters['PS_SHIPPING_FREE_WEIGHT']) AND $product->weight > floatval($parameters['PS_SHIPPING_FREE_WEIGHT']) AND floatval($parameters['PS_SHIPPING_FREE_WEIGHT']) > 0))
                    $line[] = 0;
                else
                {
                    $delivery = 0;
                    if (isset($parameters['PS_SHIPPING_HANDLING']))
                        $delivery += intval($parameters['PS_SHIPPING_HANDLING']);
                    $carrier = new Carrier(intval($parameters['PS_CARRIER_DEFAULT']));
                    $defaultCountry = new Country(intval($parameters['PS_COUNTRY_DEFAULT']));
                    $id_zone = intval($defaultCountry->id_zone);
                       $delivery += intval($parameters['PS_SHIPPING_METHOD']) ? $carrier->getDeliveryPriceByWeight($product->weight, intval($id_zone)) : 
                    $carrier->getDeliveryPriceByPrice($price, intval($id_zone));
                    $line[] = number_format($delivery, 2, ',', '');
                }

                $line[] = $product->weight;
                $line[] = number_format($product->ecotax, 2, ',', '');

                foreach ($line AS $column)
                    $csv.= $column.'|';
                $csv.= chr(13);
            }
        }
        echo $csv;
    }


    public function getCSV()
    {
        header('HTTP/1.0 200 OK');
        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
        header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
        header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
        header('Cache-Control: post-check=0, pre-check=0', false );
        header("Pragma: no-cache");
        header('Content-Transfer-Encoding: binary');
        header('Content-Type: text/plain; charset=utf-8');

        $this->buildCSV();
    }
}

?>

Qui néglige la musique ignore l'approche du sublime

Hors ligne

 

Pied de page des forums

Powered by FluxBB
© Copyright 2008-2009 - LaFermeduWeb.net