dOMxml et php4

d0m
Mammouth du PHP | 1141 Messages

18 janv. 2008, 16:40

Bonjour,

je cherche à faire de l'ajax en PHP 4.
J'ai donc installé DOMXML et créé mon script utilisé par javascript plus tard.
c'est censé représenter une instance oracle avec des utilisateurs.
Malheureusement ce script ne marche pas. Je l'ai donc modifié pour essayer d'abord de créer un fichier XML correct :
le voici :
<?php
$instance = '.....';
$instance = $_POST['instance'];
$infos_instance = infos_instances(array($instance));

//fonction qui récupère les utilisateurs et les mets dans un tableau
$utilisateurs = utilisateurs_oracle($instance,$infos_instance[$instance]['login'],$infos_instance[$instance]['pass']);
//print_r($utilisateurs);
	
header('Content-Type: text/xml; charset=UTF-8');

$dom = new domdocument('<?xml version="1.0" encoding="utf-8"?><root />');
$message = $dom->create_element('instance');
$message = $dom->append_child($message);
$message->set_attribute('nom',utf8_encode($instance));	
	
foreach($utilisateurs as $utilisateur){
  $user = $dom->create_element('utilisateur');
  $user = $message->append_child($user);
  $user->set_attribute('nom',utf8_encode($utilisateur));	    
}
	
$dom->dump_file("/tmp/test.xml", false, true);
echo $dom->dump_mem();

?>
Et là j'ai cette erreur sous IE :

Code : Tout sélectionner

Un seul élément de niveau supérieur est autorisé dans un document XML.
et celle ci sous FF :

Code : Tout sélectionner

Erreur d'analyse XML : données incompréhensibles après l'élément de document Emplacement : blabla.php Numéro de ligne 3, Colonne 1 :<instance nom="..."><utilisateur nom="..."/><utilisateur nom="..."/><utilisateur nom="..."/><utilisateur nom="..."/><utilisateur nom="..."/><utilisateur nom="SYSTEM"/><utilisateur nom="..."/><utilisateur nom="..."/><utilisateur nom="..."/></instance
je comprends à peu près l'erreur mais je ne vois pas comment créer un fichier XML correct.

ce que je cherche à faire c'est :
- créer correctement un fichier XML
- ajouter l'encodage en utf8 pour javascript
- insérer les utilisateurs sous forme d'élements (pour pouvoir les mettre dans une liste déroulante après)
- envoyer le XML en retour pour la fonction javascript

ViPHP
ViPHP | 4039 Messages

18 janv. 2008, 17:17

Juste pour conseil:

J'ai longtemps utilisé xml comme transfert des données entre php et JS, mais j'ai toujours trouvé la navigation dans un XML extrêmement lourdingue en JS.

Alors, je conseillerais de passer à JSON.
(prononcer JhayïSchwouiwNng *)

Bien que tu es en php4 (je pourrais te conseiller de passer en php5), il doit être faisable de le génerer sans trop de complications. Pour l'interpretation par JS c'est on ne peut plus simple.. a la manière d'un simple tableau/objet.


*nan, j'rigole, juste jason à la façon des amerlocs.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.