Tag XML initialisé à vide + AJAX

Ish
Eléphant du PHP | 200 Messages

31 mai 2007, 17:13

bonjour,

Je vous écris pour m'eclaircir sur un problème que j'ai en DOM:

Code : Tout sélectionner

//Lorque je fais ma requete, il se peut que dans ma base, des attributs peuvent etre null //Et je veux que lorsque je fais ma boucle pour toutes les occurrences de ma requête, je fais les tags XML adéquates, //cependant , j'ai des problèmes lorsque l'attribut est de valeur null if ($data[$nomAttribut] == ""){ echo "<".$nomAttribut."></".$nomAttribut.">\n"; <- J'essaie de faire un tag null }else{ echo "<".$nomAttribut.">" .$data[$nomAttribut]. "</".$nomAttribut.">\n"; }
ensuite lorsque je veux récupérer les données des balises grâce a la fonction

document.getElementById("idAnneeImmo").value=idAnneeImmo.item(0).firstChild.data;
et que ce tag a eté initialisé a vide, mon naviguateur me fait une erreur du type

etablissement.item(0).firstChild has no properties

Et je voulais savoir comment initialisé un tag XML a null
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

iut
Eléphant du PHP | 61 Messages

31 mai 2007, 22:36

j'ai eu le même problème que toi, mais je n'ai jamais y remdier si quelqu'un aurait la gentillesse de lui répondre ce serait sympa.
Et 1 et 2 et 3 Kebabs .(o_O).

Mammouth du PHP | 19672 Messages

31 mai 2007, 22:42

Crée un élément vide dans ce cas :
if (empty($data[$nomAttribut]))
{
    echo "<". $nomAttribut ." />\n";
}
else
{
    echo "<". $nomAttribut .">". $data[$nomAttribut] ."</". $nomAttribut .">\n";
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

iut
Eléphant du PHP | 61 Messages

31 mai 2007, 23:08

et kan je ferait ****.item(0).firstChild.data pour l'élément vide, il va me récuperé quoi comme valeur?
Et 1 et 2 et 3 Kebabs .(o_O).

Mammouth du PHP | 19672 Messages

31 mai 2007, 23:11

Probablement NULL : essaye, tu verras bien : sinon, tu pourrais aussi bien ne générer une balise que si tu as un contenu à mettre dedans :
if (!empty($data[$nomAttribut]))
{
    echo "<". $nomAttribut .">". $data[$nomAttribut] ."</". $nomAttribut .">\n";
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

iut
Eléphant du PHP | 61 Messages

31 mai 2007, 23:15

Et si Je dois récuperer toutes valeurs même si elles ont la valeur null dans la Base.

Et dans ma fonction Ajax onreadychange, je fais comment pour recuperer des tags VIDES?
Et 1 et 2 et 3 Kebabs .(o_O).

Mammouth du PHP | 19672 Messages

01 juin 2007, 07:47

Au moment de récupérer le retour du serveur, tu récupère une chaine envoyée par l'application appelée : le problème est donc coté serveur dans la manière de traiter les balises vides et de formater la sortie selon ce que tu veux faire.

Sans voir ton code de récupération de données, difficile de t'aider plus.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

iut
Eléphant du PHP | 61 Messages

01 juin 2007, 10:50

Jai pas mis le code Complet, mais je sais qu'il est correct
// On défini ce qu'on va faire quand on aura la réponse
	  xhr.onreadystatechange = function(){
	      // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
	      if(xhr.readyState == 4 && xhr.status == 200){
var idAnneeImmo = docXML.getElementsByTagName("idAnneeImmo");
 document.getElementById('idAnneeImmo').value=idAnneeImmo.item(0).firstChild.data;<- me fait un erreur
}
}
page php qui fait les tags xml (appelé par ma fonction Ajax)
echo "<idAnneeImmo></idAnneeImmo>\n";
Et 1 et 2 et 3 Kebabs .(o_O).

Mammouth du PHP | 19672 Messages

01 juin 2007, 14:11

regarde ceci :
document.getElementById('idAnneeImmo')...
Il est logique que ça ne fonctionne pas puisque tu essayes de pointer sur une balise en la cherchant par son identifiant... qui n'existe pas.

Utilise getElementsByTagName() à la place : ça va te retourner un tableau des éléments correspondant, donc il faudra ajouter un index numérique.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: