firstchild null : pourquoi, comment ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : firstchild null : pourquoi, comment ?

[Résolu] firstchild null : pourquoi, comment ?

par kristen » 23 févr. 2012, 19:21

Youpiii, j'ai résolu mon problème de la façon suivante:
j'ai modifié :
$kinnigText = $dom->createTextNode("$linenn[poz]"); 
en :
$encoded=htmlentities ("$linenn[poz]", ENT_QUOTES, 'ISO-8859-1');
$kinnigText = $dom->createTextNode("$encoded"); 
et ça marche.
Un grand merci à Thibaud et xTG pour leur aide et aux mainteneurs du forum sans qui nous ne pourrions en profiter.
(j'espère avoir bien mis le 'résolu', je ne suis pas trop sur).

J'ai d'autres soucis que je vais tenter de résoudre moi-même avant de créer si nécessaire un autre fil.
Tchao, kenavo & merci encore !

Re: firstchild null : pourquoi, comment ?

par Thibaud C » 23 févr. 2012, 18:57

j'essaie toujours les utf8_encode() ou utf8_decode() en prems quand j'ai des problèmes d'accent, mais la t'es en ISO, enfin ca ne coute rien d'essayé ( ta bdd est encodé en quoi ?)

Re: firstchild null : pourquoi, comment ?

par kristen » 23 févr. 2012, 18:53

J'ai vérifié dans Geany : tous les fichiers sont codés en ISO-8859-1...

Peut-être faut-il encoder $linenn[poz] dans la ligne suivante
 $dom->createTextNode("$linenn[poz]");
mais je ne sais pas avec quelle fonction..

Re: firstchild null : pourquoi, comment ?

par Thibaud C » 23 févr. 2012, 14:01

Peu être une de tes pages qui à un encodage différent ? à méditer ( notepad++ gère bien les encodages )

Re: firstchild null : pourquoi, comment ?

par kristen » 23 févr. 2012, 13:33

J'y ai pensé aussi mais je ne sais pas quoi faire. J'avais pensé passer ma base en uft-8 mais du coup l'affichage des caractères spéciaux (nombreux ñ) déconnait.

Re: firstchild null : pourquoi, comment ?

par xTG » 22 févr. 2012, 21:08

Semblerait un problème d'encodage vu que tu as des lettres qui disparaissent.

Re: firstchild null : pourquoi, comment ?

par kristen » 22 févr. 2012, 20:49

Je me réponds à moi-même, car si je suis loin d'avoir compris le problème, j'en ai au moins cerné la cause.

J'ai eu l'idée de modifier le fichier testajax.php pour qu'il ne crée plus un fichier XML d'après une variable, mais j'ai au contraire codé "en dur" le mot qui pose problème :
<?php
header('Content-Type: text/xml ; charset = ISO-8859-1');
include ('connect.inc.php');

$dom = new DOMDocument();
$respont = $dom->createElement('respont');
$dom->appendChild($respont);

$name = $_GET['name'];
$kinnigou = mysql_query("SELECT poz FROM ajaks WHERE poz LIKE 'barr%' LIMIT 20"); // la modif est LÀ
while ($linenn = mysql_fetch_array($kinnigou))
{
$kinnig = $dom->createElement('kinnig');
$kinnigText = $dom->createTextNode("$linenn[poz]");
$kinnig->appendChild($kinnigText);
$respont->appendChild($kinnig);
}

$xmlString = $dom->saveXML();
echo $xmlString;

mysql_close();
?>
Et voilà ce que ça donne quand je l'appelle (remarquer la 3ème ligne):

[img]
http://geriaoueg.free.fr/essai/testajax.png
[/img]

Je ne vois pas ce qui peut provoquer ce <kinnig/> à l'origine du firstChild null ??!?

Mon phpMyAdmin me montre ceci après la même requête MySQL :

[img]
http://geriaoueg.free.fr/essai/phpmyadmin.png
[/img]

Quelqu'un a une idée ?

firstchild null : pourquoi, comment ?

par kristen » 14 févr. 2012, 12:51

J'essaie d'implémenter une aide à remplir un champ par auto-complétion. Ça marche ... sauf quand ça coince.
Pour une raison que je ne m'explique pas le navigateur me met parfois une fenêtre d'alerte me signalant un FirstChild null.

Pourtant le mot demandé existe bel & bien. J'en perds mon PHP, mon javascript et mon latin.
Voilà les codes :

1 - testajax.php
<?php
header('Content-Type: text/xml ; charset = ISO-8859-1');
include ('connect.inc.php');

$dom = new DOMDocument();
$respont = $dom->createElement('respont');
$dom->appendChild($respont);

$name = $_GET['name'];
$kinnigou = mysql_query("SELECT poz FROM ajaks WHERE poz LIKE '".$name."%"."' LIMIT 20");
while ($linenn = mysql_fetch_array($kinnigou))
{
$kinnig = $dom->createElement('kinnig');
$kinnigText = $dom->createTextNode("$linenn[poz]");
$kinnig->appendChild($kinnigText);
$respont->appendChild($kinnig);
}

$xmlString = $dom->saveXML();
echo $xmlString;

mysql_close();
?>
2 - la partie concernée en javascript

Code : Tout sélectionner

function handleRequestStateChange() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) // || xmlHttp.status == 304) { try { handleServerResponse(); } catch(e) { alert("Erreur de lecture de la réponse : " + e.toString()); } } else { alert("Problème d'obtention des données :\n" + xmlHttp.statusText); } } } function handleServerResponse() { var xmlResponse = xmlHttp.responseXML; xmlRoot = xmlResponse.documentElement; kinnigArray = xmlRoot.getElementsByTagName("kinnig"); var html = ""; for (var i=0; i<kinnigArray.length; i++) {html += kinnigArray.item(i).firstChild.data + "<br/>";} var xmlResponse = xmlHttp.responseText; var myDiv = document.getElementById("goulakaat"); myDiv.innerHTML = html; }
La table ajaks contient une série de mots triés alphabétiquement. Si je tape dans mon formulaire la lettre b, j'obtiens bien les 20 premiers mots commençant par cette lettre. Idem avec ba et même bar. Mais si je tape barr, cela provoque l'erreur mentionnée (exactement : kinnigArray.item(i).firstChild is null), alors que ma table contient des mots commençant par barr...

Merci de votre aide