bonjour,
je me permes de créer un nouveau sujet parce que je ne sais vraiment pas à la suite de quoi je pourrais bien écrire Smiley confus

donc mon problème est le suivant:
- je possède une page .htm avec dedans un simple hyperlien
- un document .xml où sont stockées des données
- un script JavaScript qui me permet de faire des manupilations de mon .xml de manière assynchrone grâce à XMLHttpRequest (en bref, c'est de l'AJAX).

J'ai réussis à lire depuis le fichier XML et à afficher les informations dans ma page .htm
Seulement voilà, maintenant j'aimerais pouvoir Écrire dans ce .xml

Avec JavaScript je pense que ça va apporter quelque nuages ( Smiley confus )
c'est pourquoi je vous demande de l'aide.
J'ai pensé à utiliser du PHP mais tout les tutos que j'ai rencontré me disent d'utiliser une bibliothèque spéciale.

J'aimerais savoir si en PHP (ou autres) il n'y a pas un (des) moyen(s) plus "naturels" d'y parvenir.

Merci de vos réponses
Modérateur
Salut,

Il n'y a pas forcémment besoin d'ajouter une bibliothèque supplémentaire en PHP5 vu que ça fait partie du coeur de PHP. En fait, tu peux te servir des fonctions DOM, mieux implémentées qu'en PHP4 (DOMXML). Néanmoins, une petite chose... Si tu proposes à l'utilisateur d'écrire une donnée dans ce fichier XML via ces fonctions DOM, il ne faut pas oublier que tu le fais côté serveur, ce qui sous-entend que tu modifies le fichier pour tout le monde voire que plusieurs peuvent lancer la même fonction d'écriture en même temps, ce qui peut vite mettre le souk voire générer des erreurs... sans compter les ressources serveurs dont tu vas avoir besoin, ce qui risque fort de faire grimacer ton hébergeur.

Personnellement, lorsque les données proviennent de l'utilisateur, je les conserve dans la BD et XML ne me sert que de modèle... Je passe ensuite mes données de la BD à chaque session utilisateur pour qu'il ait une page personnalisée puis à partir de ce modèle XML et d'une feuille de style XSLT, je génère la page XHTML.

Je ne sais pas si ça répond complètement à ta question mais vu que je suis un peu dans tout ça en ce moment... Smiley ravi
Modifié par koala64 (21 Feb 2007 - 10:28)
Administrateur
Bonjour,

si c'est de la manipulation basique d'un fichier XML, la bibliothèque SimpleXML disponible en PHP5 est vraiment ... simple à utiliser si tu as déjà entendu un peu parler d'objet (quoique) et écrit 2-3 scripts. Tu peux lire, enregistrer, accéder, parcourir, modifier, supprimer et insérer des noeuds avec des fonctions assez basiques, suffit de lire et comprendre les exemples proposés dans la doc (ouais ouais yaka Smiley rolleyes ).
Mais possible que l'extension proposée par koala64 soit plus adaptée dans un contexte de page web et à quelqu'un à l'aise avec JS & DOM, je ne l'ai jamais utilisée ...
Modifié par Felipe (21 Feb 2007 - 10:41)
Modérateur
Je ne me suis jamais servi non plus de simpleXML parce que c'est plus limité... (non, non, je ne trolle pas ! Smiley lol ) Pour ce que j'en sais, c'est que simpleXML est moins verbeux et plus pratique pour les manipulations... simples et que DOM pousse un peu plus loin et est plus rapide... Je ne peux pas vraiment développer, je suis en cours d'étude... Smiley murf Et effectivement, si on maîtrise déjà DOM via JS, c'est plus facile malgré quelques spécifités... Smiley cligne
Modifié par koala64 (21 Feb 2007 - 10:57)
en fait je voulais justement éviter d'utiliser du PHP5 parce que mon hébergeur ne permet pas son utilisation.

Je vous remerci pour vos idées à tout les deux.

et j'aimerais aussi relancer vite fait comme ça (je ne sais pas si je suis dans le bon topic mais ce sera juste une petite question Smiley confused ):
Dans quelle genre d'applications peut-on se servir d'AJAX.

Ce que je trouve bizard dans ce nom, c'est qu'il signifie Asynchonous Javascript And XML, sauf que la plus part des applications web que j'ai vue ne mette pas en oeuvre le xml.
cela ne me déplait pas vraiment au niveau pratique (puisque je ne suis pas très doué pour manipuler ces documents) mais d'un point de vue plus théorique, ça m'ennuie de donner le nom d'AJAX a une applicatiosn qui ne mettrait pas en oeuvre le XML Smiley ohwell

pourriez vous donc me donner un exemple d'applications ou les points suivants seraient repris:

- (X)HTML et CSS pour la structure de base et la mise en forme
- XMLHttpRequest pour la connexion de manière ASSYNCHRONE au serveur
- XML et XSLT pour la structuration des données et leur manipulation
- DOM (je m'imagine assez bien à quoi ça sert mais l'expliquer m'est difficil. désolé)
- JavaScript pour assembler le tout.

Si je prend l'exemple d'un petit livre d'or, et que je veux placer les messages de mes internautes, dans un fichier .xml

J'ai donc un formulaire XHTML, mis en forme par une feuille de style CSS.
Je me sert de la fonction XMLHttpRequest (dans du JavaScript) pour faire un lien vers le serveur.
le DOM me sert à créer des objets et à les nommé.
le XML me sert à les stocker les messages, le XSLT éventuellement quand je les ferai ressortir.
Mes opérations se font de manière assynchrone...

mais comment écrire dans le XML maintenant ? ? ?
Selon l'article de ... (j'ai oublier son nom), c'est le DOM et JavaScript qui doivent gérer les données à ajouter, pas PHP... Smiley ohwell

Seulement plus loin, dans une suite de question/réponse, il dit que le XML n'est pas indispensable mais le plus approprié...

Le nom AJAX serait-il alors une erreur, ou il y aurait-il moyen de réellement créer un livre d'or (par exemple) sans PHP ou autre langage côté serveur ?

S'il vous plait, aider moi.
Cette question me laisse vraiment coi.
Merci d'avance
en fait je m'excuse d'avoir été un peu vite en besogne lorsque j'ai écrit le message précédent.

il se trouve (pour ceux que ça intéresse) que j'ai trouvé un semblant de réponse:

AJAX serait une approche, une façon de penser qui se servirait de structures définies (XHTML, HTML, CSS), et de codes JavaScript (et DOM) pour communiquer de façon assynchrone au serveur (grâce à XMLHttpRequest).

Ce type d'approche peut être accompagnée d'autres langages/technologies pour améliorer l'application. La plus "appropriée" est le XML, d'où le X de AJAX
Pour revenir à ton premier post, voilà ce que j'utilise pour écrire les données d'un formulaire dans un fichier xml :

<?php
if ( ! empty($_POST) ) {
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>' ;
$xml .= '<formulaire>' ;
$xml .= '<nom>' . $_POST['nomartiste'] . '</nom>' ; //écrit la valeur de la variable entre les balises
$xml .= '<pays>' . $_POST['paysartiste'] . '</pays>' ;
$xml .= '</formulaire>' ;
file_put_contents('form/'.$_POST['nomartiste']. '.xml', $xml) ; // creation du fichier dans le dossier "form"
} 
?>


L'avantage est qu'au final le nom de ton fichier.xml dépend de la valeur que tu lui donnes, ce qui évite les conflits si deux personnes modifie le xml en même temps.

J'espère t'avoir éclairé Smiley cligne
Modérateur
Salut,

just1dks a écrit :
ça m'ennuie de donner le nom d'AJAX a une applicatiosn qui ne mettrait pas en oeuvre le XML Smiley ohwell
(...)
La plus "appropriée" est le XML, d'où le X de AJAX
Non. Ca dépend de ce que tu as à faire. Smiley cligne

Dans bon nombre de cas, JSON est plus adapté que XML pour faire de l'Ajax...

- parce qu'il respecte à la lettre la syntaxe JS,
- parce que les données à transporter sont plus légères et nécessitent moins de traitement.

L'Ajax est mal nommé... Smiley cligne

Par ailleurs, l'Ajax ne permet pas de tout faire. Tu peux converser avec cette technique mais pas mettre à jour une bdd par exemple. Un langage côté serveur intervient souvent dans une application de ce type.

Bellami a écrit :
L'avantage est qu'au final le nom de ton fichier.xml dépend de la valeur que tu lui donnes, ce qui évite les conflits si deux personnes modifie le xml en même temps.
... et le désavantage, c'est que dans une application à fort traffic, tu fais exploser le serveur... Là, tu es susceptible de générer des centaines de fichiers en très peu de temps... Les bases de données ont encore de l'avenir et restent, de toute façon, plus adaptées que XML pour l'archivage des données...
Modifié par koala64 (22 Mar 2007 - 14:08)