Besoin aide pour debugger un code qui fonctionnait

1 réponse
Avatar
Assyril
Bonjour,

J'ai d=E9velopp=E9, il y a un bail une page web php + javascript pour g=E9=
rer=20
les films que je vais voir au cin=E9 :
http://assyril.free.fr/Cinema/index.php

Dans la partie ajouter un film, pour ajouter les acteurs, j'ai fait de=20
l'Ajax. le fait de saisir les lettres dans le champ 'acteurs' ouvrait=20
une liste avec des noms provenant de la base de donn=E9es. je pouvait=20
s=E9lectionner un nom dans cette liste qui se recopie dans l'objet 'acteu=
rs'

voici un bout du code de new_film.php

<td width=3D"20%" rowspan=3D"4" align=3D"center" valign=3D"middle"><div=20
id=3D"Acteur_liste"></div></td>
</tr>
<tr>
<td width=3D"20%" align=3D"right"><strong><span class=3D"blanc">Affiche =
:=20
</span></strong> </td>
<td colspan=3D"3"><input name=3D"Affiche" type=3D"text" id=3D"Affiche"=20
size=3D"86"></td>
</tr>
<tr>
<td width=3D"20%" align=3D"right"><strong><span class=3D"blanc">Acteurs =
:=20
</span></strong> </td>
<td colspan=3D"3"><input type=3D"text" id=3D"Acteurs" name=3D"Acteurs"=20
size=3D"86" onKeyUp =3D "go('Acteurs');"></td>
</tr>
<tr>
<td height=3D'50' width=3D"20%" align=3D"right"><strong><span=20
class=3D"blanc">R&eacute;alisateur : </span></strong> </td>
<td height=3D'50' colspan=3D"3"><input name=3D"realisateur" type=3D"text=
"=20
id=3D"realisateur" size=3D"35" onKeyUp =3D "go('realisateur');"></td>
</tr>


le fichier ajax.php :

<?php
header('Content-type: text/html; charset=3DISO-8859-1');
include("connex.php");
include("fonc.php");
$nom =3D urldecode($_SERVER['QUERY_STRING']);
$chaine =3D "";
$sql_acteur =3D "SELECT Nom from acteurs WHERE Nom like '%$nom%' ORDER B=
Y=20
Nom ASC";
$res =3D send_sql($db,$sql_acteur);
$row=3Dmysql_fetch_row($res);
if($row) {
$chaine .=3D $row[0];
while($row=3Dmysql_fetch_row($res)) {
$chaine .=3D ",".$row[0];
}
}
// echo htmlentities($chaine,ISO-8859-1);
echo htmlentities($chaine);
?>


et les fonctions concern=E9es :

function go(text) {
id =3D text;
getXhr();
if(document.getElementById(id).value.length>1) {
temp =3D document.getElementById(id).value;
acteur =3D temp.split(', ');
taille_acteur =3D acteur.length;
//alert(acteur[taille_acteur-1]);
xhr.onreadystatechange =3D handleHttpResponse;
xhr.open("GET","ajax.php?"+acteur[taille_acteur-1],true);
xhr.send(null);
}
}
=09
function handleHttpResponse() {
if (xhr.readyState =3D=3D 4 && xhr.status =3D=3D 200) {
var club =3D xhr.responseText.indexOf('</XMP>');
if (club >0) {var actor =3D xhr.responseText.slice(0,club);}
else {var actor =3D xhr.responseText}
results =3D actor.split(",");
taille =3D results.length;
if (taille > 8) {taille =3D 8}
//alert(xhr.responseText);
chaine =3D "";
chaine +=3D "<select name=3D'Acteur_liste'";
chaine +=3D" size=3D";
chaine +=3D taille;
chaine +=3D' onclick=3D"javascript:acteur_select();">\n';
//alert(chaine);
for (p in results) {
//alert (results[p]);
chaine +=3D "<option value=3D'";
chaine +=3D results[p];
chaine +=3D "'>";
chaine +=3D results[p];
chaine +=3D "</option>";
chaine +=3D "\n";
}
chaine +=3D "</select>\n";
//alert(chaine);
document.getElementById('Acteur_liste').innerHTML =3D chaine;
}
}
=09
function acteur_select() {
//alert(taille_acteur);
if (taille_acteur =3D=3D 1) {
//alert(document.getElementById('Acteur_liste').value);
document.getElementById(id).value =3D=20
document.getElementById('Acteur_liste').value + ", ";}
else {
//alert(document.getElementById('Acteur_liste').value);
temp =3D document.getElementById(id).value;
acteur =3D temp.split(', ');
//alert(acteur);
taille =3D acteur.length;
//alert(taille);
//alert(acteur[0]);
document.getElementById(id).value =3D acteur[0];
for(i=3D1;i<taille-1;i++) {
document.getElementById(id).value =3D document.getElementById(id).valu=
e=20
+ ", " + acteur[i];
}
document.getElementById(id).value =3D document.getElementById(id).value=
=20
+ ", " + document.getElementById('Acteur_liste').value + ", ";
}
}


J'ai espionner dans touts les sens et =E0 l'aide de l'extension Web=20
Developper de firefox, je vois bien que=20
document.getElementById('Acteur_liste').value contient bien le nom de=20
l'acteur s=E9lectionner

Sauf qu'au final cela transmet 'Undefined'

Je n'arrive pas =E0 trouver de o=F9 cela vient.
en local avant que je passe =E0 php 5.3 (je pense que j'=E9tais en php 4)=
=20
cela fonctionnait parfaitement

Je me doute que le code ne doit pas =EAtre terrible.

Quelqu'un aurait-il une id=E9e sur l'origine de ce dysfonctionnement?

Merci d'avance
--=20
Assyril
Attention il faut modifier l'adresse de r=E9ponse

1 réponse

Avatar
Assyril
Le 15/07/2011 10:33, Assyril a écrit :


Je me doute que le code ne doit pas être terrible.

Quelqu'un aurait-il une idée sur l'origine de ce dysfonctionnement?

Merci d'avance



Bonjour

Pour finir j'ai trouvé, j'avais donné le même 'id' à l'objet 'Sel ect' et
au 'div'

--
Assyril
Attention il faut modifier l'adresse de réponse

* Français - détecté
* Anglais
* Français

* Anglais
* Français

<javascript:void(0);>