Diaporama : Charger des données avec SGBD ou XML ?

Bonjour amis développeurs,

Je développe actuellement une application flash permettant d’afficher des images tel un diaporama dont les données (url, titre, commentaires et autres…) sont stockées sur une base de donnée. Ma question est de savoir s’il vaut mieux se servir de fichiers XML (Flash gérant nativement le XML) ou vaudrait t’il mieux se servir d’un SGBD avec des requêtes SQL (PHP servant alors d’interfaçage) ?

En général, les réponses quant à savoir s’il vaut mieux du XML ou SGBD restent très vagues. Très, très, très vagues. Donc voilà mes contraintes pour vous donner des pistes :

  • Mises à jour aléatoire et en quantité indéfinie : du jour au lendemain je peux me décider de mettre une grande quantité d’images et n’en mettre que 2-3 l’année suivante.
  • Administration des données par des pages PHP : disons que dans tout les cas XML ou SGBD, le PHP c’est pratique pour administrer sans furitures.
  • Gestion des commentaires : A la manière des blogs, enregistrement de textes ayant une taille indéfinie, enregistrement de données sur l’utilisateur.
  • Récupération rapide des données : Il s’agit d’un diaporama, les gens doivent pouvoir zapper au tac au tac, regarder les commentaires à la volée, etc…
  • Le tout est affiché dans une application Flash : J’utilise Flash 8.
    Après peut être que vous vous dites que je me casse la tête pourrien et qu’il y a une solution plus simple…

Merci pour vos conseils !

Bonjour,
c’est difficile d’avoir un avis là dessus, ça dépend beaucoup du volume de données. :slight_smile:

Mais puisqu’il faut un avis tranché, je vote “XML” pour 2 raisons:

  1. comme ils est possible d’avoir très peu de mise à jour, c’est dommage d’être obligé de conserver la connexion BD+ le cout en PHP uniquement pour les quelques jours ou tu feras des mises ç jour en masse.
  2. Comme tu cherche la rapidité, le XML posera moins de problème (pas de risque de connexion indisponibles etc.

De plus dans ta gestion PHP, tu peut surement gérer une "publication" qui lance la requête nécessaire pour générer le XML et le poser directement au bon endroit.

Connaissant aussi 2 moteurs de gestion de contenu Web: c’est celui qui génère les pages sur un serveur statique qui est le plus efficace.

Cependant pour ma 1ere remarque: Si les temps de réponses depuis le SGBD sont suffisant: ça peut t’économiser la partie gestion de publication, inutile de se faire du travail pour rien dans ce cas :neutre:

Edit:
Je n’avais pa vu la gestion de commentaires:
là du coup, ça devient plus compliqué en XML (voire impossible): tu peux la gérer à part avec le SGBD à la limite. (sinon, modifier le XML à la volée pour chaque commentaire posté c’est usinàgazifiant)

Ou faire un mix avec un cache DB-XML.

Je pensais faire un mix XML / SQL : Le XML pour les url des images et le SQL pour l’ensemble des commentaires. Mais, je me demande si ce n’est pas alourdir le code (aussi bien PHP que ActionScript) ?

L’idée de Sans-Nom et pas mal :smiley:
c’est un bon compromis d’utilisation du xml/données temps-réel.

il me semble aussi que ça alourdirait d’utiliser les 2 technos à la fois: si tu fait un cache pour les commentaires, autant l’utiliser aussi pour les images.

Ceci dit, au niveau du code, ça doit juste changer une url de brancher sur un PHP ou sur un XML statique, donc le mix doit être transparent.

Pour avoir travaillé sur la partie dynamique d’un très gros site en Flash, je te conseille de générer des fichiers XML depuis ta base de données avec php, en mettant en cache ce qui doit l’être. Ça te permettra de mettre en place une console d’administration pour le client.

Par contre, il faut que tu m’expliques comment tu comptes faire passer tes données vers Flash sans fichier XML. Tu comptes pas utiliser la syntaxe pourrie du fichier texte avec des & quand-même ? Parce que niveau robustesse…

Après moulte réflexion, j’ai opté pour un total XML.

Vous parlez de générer du XML depuis une base de données. Ca ne risque pas d’être lourd à chaque chargement ?

Par contre, je viens de tomber sur un nouveau problème. Lorsqu’un fichier XML utilise une DTD (quelle soit interne ou externe), je n’arrive plus à sauvegarder de nouvelles données depuis un script PHP (mais je peux encore modifier les attributs des données déjà existantes).

SeBounart: non, si tu as un proxy qui cache les données XML.

Et surtout, avec un bon cache… du XML, ce n’est que du texte après tout.

Je viens de comprendre un truc mais pas la solution.

En fait dès que dans le fichier XML j’ai autre chose que des nodes genre un commentaire ou une déclaration de DTD, la fonction appendChild ne fonctionne plus ! Du coup, c’est normal que quand je sauvegarde mon nouveau node ne s’ trouve plus.

(et merci pour votre réactivité)

Ok, je viens de trouver !
En fait, les commentaires ou la déclaration DTD sont considérés comme étant un node. Donc, lorsque je faisais $dom->firstChild->appendChild($node), je demandais à PHP de brancher le node sur le commentaire ou sur la déclaration DTD, ce qui est impossible et donc ne se faisait pas.
La solution était d’utiliser la fonction DOMElement::getElementsByTagName( str ) avec en paramètre le nom de la vrai racine du document. Je n’avais plus qu’à la récupérer et brancher le nouveau node dessus !

(Maintenant j’ai un autre problème, dès que j’utilise des caractères accentués ça part en sucette et mon XML est entièrement effacée, pas cool).

le xml ne gère pas par défaut les caractères accentués.

il faut dans l’entete que définissent un encodage, UTF-8, ou ISO-8859-1 je crois pour avoir accès au accent.

<?xml version="1.0" encoding="ISO-8859-1"?> 

après le problème peu aussi venir de la partie php ou actionscript, qui gère mal les accents (je dis ça au hasard, je connais pas du tout ces deux langages)

Actionscript gère très bien l’unicode et PHP fournit des fonctions pour encoder / décoder.

Oui, il vaut mieux rester en UTF-8 (== unicode) et faire encoder les fichier texte en UTF-8 par les éditeurs de texte. (contre le cp1252 Windows par défaut)