Bonjour,
Je suis entrain de travailler sur un projet avec MKFramework,
Je voudrais extraire les données d'une table en format XML avec le MKFramework.
Quoi je faire ?
Bonjour,
Je suis entrain de travailler sur un projet avec MKFramework,
Je voudrais extraire les données d'une table en format XML avec le MKFramework.
Quoi je faire ?
Je n'ai pas bien saisi: la données est stoqué en xml, ou la données est stoquée en base de données (mysql, postresql...) ?
Si c'est pour extraire les données d'une base de données pour crééer un xml
Dans votre methode action (de votre module)
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php public function _extract(){ $tData=model_Matable::getInstance()->findAll(); $sXml='<? version="1.0" ?>'; foreach($tData as $oData){ $sXml.='<data>'; $sXml.='<monChamp><![CDATA['.$oData->monChamp.']]></monChamp>'; $sXml.='</data>'; } print $sXml; }
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
EN effet je voudrais extraire les données d'une table de ma base de donnée sql en Format Xml.
Voila un exemple de la table :
CREATE TABLE IF NOT EXISTS `cities` (
`id_cities` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`latitude` float NOT NULL,
`logitude` float NOT NULL,
`nbr_habitant` int(11) NOT NULL,
`created` date NOT NULL,
`id_countries` int(11) NOT NULL,
PRIMARY KEY (`id_cities`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10 ;
J'ai déjà des enregistrements dans ma table
Vous avez déjà paramétré votre profil de connexion dans votre application ? (fichier conf/connexion.ini.php)
Si ce n'est pas le cas, commencez par la: sur votre projet, editer le fichier conf/connexion.ini.php pour ajouter un profil permettant de se connecter a votre base de données
Par exemple pour une base mysql
Ensuite, via le builder, générez la classe modèle cities
Code ini : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ;<?php die()?> [db] maBaseMysql.dsn="mysql:dbname=dvpXml;host=localhost" maBaseMysql.sgbd=pdo_mysql maBaseMysql.username=root maBaseMysql.password=root
Enfin créer un module, ou une méthode action dans le module "default"
et la, vous mettez un code qui génère le fichier xml:
Ce qui donnera en vous rendant sur la page:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?php public function _extract(){ header("Content-type: text/xml; charset=utf-8"); $sXml=''; $tCities=model_cities::getInstance()->findAll(); $tColumn=model_cities::getInstance()->getListColumn(); foreach($tCities as $oCity){ $sXml.='<city>'; foreach($tColumn as $sColumn){ $sXml.='<'.$sColumn.'><![CDATA['.$oCity->$sColumn.']]></'.$sColumn.'>'; } $sXml.='</city>'; } echo $sXml;exit; }
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
J'arrive à extraire les données sous format XML mais il affiche un message d'erreur :
Erreur d'analyse XML : données incompréhensibles après l'élément de document
Et toutes les données sont afficher sur la même ligne
Il doit y avoir une erreur à la création du xml, pouvez vous m'envoyer un exemple du xml généré (en cachant les informations "confidentielles")
Avez-vous bien ajouté les balises <![CDATA[ comme dans mon exemple ?
n'y a t'il pas une balise ouverte mal fermé ?
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Voilà une partie de page XML régénérer avec le message d'erreur afficher en haut, j'ai utilisé le même code que vous m'avez envoyé avec aucune modification :
Erreur d'analyse XML : données incompréhensibles après l'élément de document
Emplacement : http://localhost/BackOfficeVersion2/...:extractionXML
Numéro de ligne 1, Colonne 283 :
<city><id_cities><![CDATA[1]]></id_cities><nom><![CDATA[rabat]]></nom><latitude><![CDATA[12348]]></latitude><longitude><![CDATA[112345]]></longitude><nbr_habitant><![CDATA[12000]]></nbr_habitant><created><![CDATA[2013-05-28]]></created><country_id><![CDATA[3]]></country_id></city>
Personnellement, quand j'affiche ce sode dans mon navigateur, je n'ai pas d'erreur
Vous pouvez faire un screenshot de l'erreur
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
J'ai toujours le même problème d'affichage ?
Pouvez vous faire un screenshot d'erreur, ou sinon enregistrer le xml généré dans un fichier.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <?php public function _extract(){ $sXml=null; $tCities=model_cities::getInstance()->findAll(); $tColumn=model_cities::getInstance()->getListColumn(); $sXml.='<?xml version="1.0" encoding="UTF-8"?>'; $sXml.='<cities>'; foreach($tCities as $oCity){ $sXml.='<city>'; foreach($tColumn as $sColumn){ $sXml.='<'.$sColumn.'><![CDATA['.$oCity->$sColumn.']]></'.$sColumn.'>'; } $sXml.='</city>'; } $sXml.='</cities>'; $oFile=new _file('../data/xml/cities.xml'); $oFile->setContent($sXml); $oFile->save(); }
Je pensais à ça c'est peut etre le fait qu'il manque une balise parente
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php public function _extract(){ header("Content-type: text/xml; charset=utf-8"); $sXml=''; $sXml.='<cities>'; $tCities=model_cities::getInstance()->findAll(); $tColumn=model_cities::getInstance()->getListColumn(); foreach($tCities as $oCity){ $sXml.='<city>'; foreach($tColumn as $sColumn){ $sXml.='<'.$sColumn.'><![CDATA['.$oCity->$sColumn.']]></'.$sColumn.'>'; } $sXml.='</city>'; } $sXml.='</cities>'; echo $sXml;exit; }
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Le problème et résolu, Super,
Maintenant je voudrais avec le même modèle de table "cities" afficher tous les noms des villes qui sont enregistrées en bouble dans ma table cities pour que je puise les supprimer par la suite .
Je vous invite pour cela à générer un module CRUD affin de pouvoir ajouter, editer, modifier ou supprimer un enregistrement city:
- cliquez sur "créer un module CRUD"
- sélectionnez la classe modèle de city "model_citie**.php"
- Cliquez sur générer
- une fois généré, cliquez sur le lien pour voir le module CRUD généré
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
J'ai déjà développer cette partie est elle fonctionne sans erreur, mais maintenant je voudrais afficher les ville en double on créant une view recherchedoublons.php dans mon modèle cities
Il faut 2 choses:
1. trier les villes par nom
2. dans la vue afficher en couleur les villes en double
1.
Dans la classe modèle model_cities.php, ajouter une méthode
par exemple:
2.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php class model_cities extends abstract_model{ (...) public function findAllOrdered(){ return $this->findMany('SELECT * FROM '.$this->sTable.' ORDER BY nom ASC'); }
Editez le fichier du module CRUD de cities, par exemple module/cities/main.php
Dupliquez l'action _list()
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php class module_cities extends abstract_module{ (...) public function _listDoublon(){ //on appelle la methode retournant les villes triés $tCities=model_cities::getInstance()->findAllOrdered(); //on appelle une vue differente de list qui mettra en rouge les doublons $oView=new _view('cities::list_doublon'); $oView->tCities=$tCities; $this->oLayout->add('main',$oView); }
On créé une vue affichant les doublons: dupliquez le fichier de vue module/cities/view/list.php en module/cities/view/list_doublon.php
Pour cela, on créé une variable temporaire qui est rempli en fin de boucle par le nom de la ville, et à chaque itération, on verifie que le nom de la ville n'est pas égal à tmp, si c'est le cas, c'est un doublon, on l'affiche en rouge
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 <table class="tb_list"> <tr> <th>nom</th> <th>latitude</th> <th>logitude</th> <th>nbr_habitant</th> <th>created</th> <th>id_countries</th> <th></th> </tr> <?php if($this->tCities):?> <?php $tmp=null?> <?php foreach($this->tCities as $oCities):?> <tr <?php echo plugin_tpl::alternate(array('','class="alt"'))?>> <td <?php if($tmp==$oCities->nom):?>style="color:red"<?php endif;?>><?php echo $oCities->nom ?></td> <td><?php echo $oCities->latitude ?></td> <td><?php echo $oCities->logitude ?></td> <td><?php echo $oCities->nbr_habitant ?></td> <td><?php echo $oCities->created ?></td> <td><?php echo $oCities->id_countries ?></td> <td> <a href="<?php echo $this->getLink('cities::edit',array( 'id'=>$oCities->getId() ) )?>">Edit</a> | <a href="<?php echo $this->getLink('cities::delete',array( 'id'=>$oCities->getId() ) )?>">Delete</a> | <a href="<?php echo $this->getLink('cities::show',array( 'id'=>$oCities->getId() ) )?>">Show</a> </td> </tr> <?php $tmp=$oCities->nom;?> <?php endforeach;?> <?php else:?> <tr> <td colspan="7">Aucune ligne</td> </tr> <?php endif;?> </table> <p><a href="<?php echo $this->getLink('cities::new') ?>">New</a></p>
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Super ça fonctionne très bien
Est ce qu'il y a une possibilité de créer un fichier exécutable ou de lancer mon application directement sans passer par l'interface d’administration de MKFramework ?
Oui, vous pouvez meme exporter votre projet dans un autre répertoire
Sinon vous pouvez copier l'adresse de votre site et l'appeler en ligne de commande
Sous linux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2wget http://localhost/mkframework/data/genere/votreApplication
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Vous pouvez désormais plus facilement exporter vos objets en xml grace à deux nouveaux plugins: plugin_xmlObject et plugin_xmlListObject:
http://mkframework.com/faq.html#plugin_xmlObject
Pour afficher un enregistrement en xml:
Pour l'enregistrer:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public function _showXml(){ $oAuteur=model_auteur::getInstance()->findById(_root::getParam('id')); $oXml=new plugin_xmlObject($oAuteur); $oXml->setListColumn(array('id','nom','prenom')); $oXml->show(); }
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public function _saveXml(){ $id=_root::getParam('id'); $oAuteur=model_auteur::getInstance()->findById($id); $oXml=new plugin_xmlObject($oAuteur); $oXml->setListColumn(array('id','nom','prenom')); $sXml=$oXml->build(); $oFile=new _file('../data/auteur_'.$id.'.xml'); $oFile->setContent($sXml); $oFile->save(); }
Et de même pour les tableaux d'objets:
Et pour les enregistrer
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public function _listXml(){ $tAuteur=model_auteur::getInstance()->findAll(); $oXml=new plugin_xmlListObject($tAuteur); $oXml->setListColumn(array('id','nom','prenom')); $oXml->show(); }
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public function _saveXml(){ $tAuteur=model_auteur::getInstance()->findAll(); $oXml=new plugin_xmlListObject($tAuteur); $oXml->setListColumn(array('id','nom','prenom')); $sXml=$oXml->build(); $oFile=new _file('../data/auteurs.xml'); $oFile->setContent($sXml); $oFile->save(); }
note: ces deux nouveaux plugins sont inclus dans la dernière version du framework, ou en libre téléchargement sur http://mkframework.com/plugins.html
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
Mes cours/tutoriaux
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager