Assyril
2011-07-16 16:01:22 UTC
Bonjour,
J'ai développé, il y a un bail une page web php + javascript pour gérer
les films que je vais voir au ciné :
http://assyril.free.fr/Cinema/index.php
Dans la partie ajouter un film, pour ajouter les acteurs, j'ai fait de
l'Ajax. le fait de saisir les lettres dans le champ 'acteurs' ouvrait
une liste avec des noms provenant de la base de données. je pouvait
sélectionner un nom dans cette liste qui se recopie dans l'objet 'acteurs'
voici un bout du code de new_film.php
<td width="20%" rowspan="4" align="center" valign="middle"><div
id="Acteur_liste"></div></td>
</tr>
<tr>
<td width="20%" align="right"><strong><span class="blanc">Affiche :
</span></strong> </td>
<td colspan="3"><input name="Affiche" type="text" id="Affiche"
size="86"></td>
</tr>
<tr>
<td width="20%" align="right"><strong><span class="blanc">Acteurs :
</span></strong> </td>
<td colspan="3"><input type="text" id="Acteurs" name="Acteurs"
size="86" onKeyUp = "go('Acteurs');"></td>
</tr>
<tr>
<td height='50' width="20%" align="right"><strong><span
class="blanc">Réalisateur : </span></strong> </td>
<td height='50' colspan="3"><input name="realisateur" type="text"
id="realisateur" size="35" onKeyUp = "go('realisateur');"></td>
</tr>
le fichier ajax.php :
<?php
header('Content-type: text/html; charset=ISO-8859-1');
include("connex.php");
include("fonc.php");
$nom = urldecode($_SERVER['QUERY_STRING']);
$chaine = "";
$sql_acteur = "SELECT Nom from acteurs WHERE Nom like '%$nom%'
ORDER BY Nom ASC";
$res = send_sql($db,$sql_acteur);
$row=mysql_fetch_row($res);
if($row) {
$chaine .= $row[0];
while($row=mysql_fetch_row($res)) {
$chaine .= ",".$row[0];
}
}
// echo htmlentities($chaine,ISO-8859-1);
echo htmlentities($chaine);
?>
et les fonctions concernées :
function go(text) {
id = text;
getXhr();
if(document.getElementById(id).value.length>1) {
temp = document.getElementById(id).value;
acteur = temp.split(', ');
taille_acteur = acteur.length;
//alert(acteur[taille_acteur-1]);
xhr.onreadystatechange = handleHttpResponse;
xhr.open("GET","ajax.php?"+acteur[taille_acteur-1],true);
xhr.send(null);
}
}
function handleHttpResponse() {
if (xhr.readyState == 4 && xhr.status == 200) {
var club = xhr.responseText.indexOf('</XMP>');
if (club >0) {var actor = xhr.responseText.slice(0,club);}
else {var actor = xhr.responseText}
results = actor.split(",");
taille = results.length;
if (taille > 8) {taille = 8}
//alert(xhr.responseText);
chaine = "";
chaine += "<select name='Acteur_liste'";
chaine +=" size=";
chaine += taille;
chaine +=' onclick="javascript:acteur_select();">\n';
//alert(chaine);
for (p in results) {
//alert (results[p]);
chaine += "<option value='";
chaine += results[p];
chaine += "'>";
chaine += results[p];
chaine += "</option>";
chaine += "\n";
}
chaine += "</select>\n";
//alert(chaine);
document.getElementById('Acteur_liste').innerHTML = chaine;
}
}
function acteur_select() {
//alert(taille_acteur);
if (taille_acteur == 1) {
//alert(document.getElementById('Acteur_liste').value);
document.getElementById(id).value =
document.getElementById('Acteur_liste').value + ", ";}
else {
//alert(document.getElementById('Acteur_liste').value);
temp = document.getElementById(id).value;
acteur = temp.split(', ');
//alert(acteur);
taille = acteur.length;
//alert(taille);
//alert(acteur[0]);
document.getElementById(id).value = acteur[0];
for(i=1;i<taille-1;i++) {
document.getElementById(id).value =
document.getElementById(id).value + ", " + acteur[i];
}
document.getElementById(id).value =
document.getElementById(id).value + ", " +
document.getElementById('Acteur_liste').value + ", ";
}
}
J'ai espionner dans touts les sens et à l'aide de l'extension Web
Developper de firefox, je vois bien que
document.getElementById('Acteur_liste').value contient bien le nom de
l'acteur sélectionner
Sauf qu'au final cela transmet 'Undefined'
Je n'arrive pas à trouver de où cela vient.
en local avant que je passe à php 5.3 (je pense que j'étais en php 4)
cela fonctionnait parfaitement
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
J'ai développé, il y a un bail une page web php + javascript pour gérer
les films que je vais voir au ciné :
http://assyril.free.fr/Cinema/index.php
Dans la partie ajouter un film, pour ajouter les acteurs, j'ai fait de
l'Ajax. le fait de saisir les lettres dans le champ 'acteurs' ouvrait
une liste avec des noms provenant de la base de données. je pouvait
sélectionner un nom dans cette liste qui se recopie dans l'objet 'acteurs'
voici un bout du code de new_film.php
<td width="20%" rowspan="4" align="center" valign="middle"><div
id="Acteur_liste"></div></td>
</tr>
<tr>
<td width="20%" align="right"><strong><span class="blanc">Affiche :
</span></strong> </td>
<td colspan="3"><input name="Affiche" type="text" id="Affiche"
size="86"></td>
</tr>
<tr>
<td width="20%" align="right"><strong><span class="blanc">Acteurs :
</span></strong> </td>
<td colspan="3"><input type="text" id="Acteurs" name="Acteurs"
size="86" onKeyUp = "go('Acteurs');"></td>
</tr>
<tr>
<td height='50' width="20%" align="right"><strong><span
class="blanc">Réalisateur : </span></strong> </td>
<td height='50' colspan="3"><input name="realisateur" type="text"
id="realisateur" size="35" onKeyUp = "go('realisateur');"></td>
</tr>
le fichier ajax.php :
<?php
header('Content-type: text/html; charset=ISO-8859-1');
include("connex.php");
include("fonc.php");
$nom = urldecode($_SERVER['QUERY_STRING']);
$chaine = "";
$sql_acteur = "SELECT Nom from acteurs WHERE Nom like '%$nom%'
ORDER BY Nom ASC";
$res = send_sql($db,$sql_acteur);
$row=mysql_fetch_row($res);
if($row) {
$chaine .= $row[0];
while($row=mysql_fetch_row($res)) {
$chaine .= ",".$row[0];
}
}
// echo htmlentities($chaine,ISO-8859-1);
echo htmlentities($chaine);
?>
et les fonctions concernées :
function go(text) {
id = text;
getXhr();
if(document.getElementById(id).value.length>1) {
temp = document.getElementById(id).value;
acteur = temp.split(', ');
taille_acteur = acteur.length;
//alert(acteur[taille_acteur-1]);
xhr.onreadystatechange = handleHttpResponse;
xhr.open("GET","ajax.php?"+acteur[taille_acteur-1],true);
xhr.send(null);
}
}
function handleHttpResponse() {
if (xhr.readyState == 4 && xhr.status == 200) {
var club = xhr.responseText.indexOf('</XMP>');
if (club >0) {var actor = xhr.responseText.slice(0,club);}
else {var actor = xhr.responseText}
results = actor.split(",");
taille = results.length;
if (taille > 8) {taille = 8}
//alert(xhr.responseText);
chaine = "";
chaine += "<select name='Acteur_liste'";
chaine +=" size=";
chaine += taille;
chaine +=' onclick="javascript:acteur_select();">\n';
//alert(chaine);
for (p in results) {
//alert (results[p]);
chaine += "<option value='";
chaine += results[p];
chaine += "'>";
chaine += results[p];
chaine += "</option>";
chaine += "\n";
}
chaine += "</select>\n";
//alert(chaine);
document.getElementById('Acteur_liste').innerHTML = chaine;
}
}
function acteur_select() {
//alert(taille_acteur);
if (taille_acteur == 1) {
//alert(document.getElementById('Acteur_liste').value);
document.getElementById(id).value =
document.getElementById('Acteur_liste').value + ", ";}
else {
//alert(document.getElementById('Acteur_liste').value);
temp = document.getElementById(id).value;
acteur = temp.split(', ');
//alert(acteur);
taille = acteur.length;
//alert(taille);
//alert(acteur[0]);
document.getElementById(id).value = acteur[0];
for(i=1;i<taille-1;i++) {
document.getElementById(id).value =
document.getElementById(id).value + ", " + acteur[i];
}
document.getElementById(id).value =
document.getElementById(id).value + ", " +
document.getElementById('Acteur_liste').value + ", ";
}
}
J'ai espionner dans touts les sens et à l'aide de l'extension Web
Developper de firefox, je vois bien que
document.getElementById('Acteur_liste').value contient bien le nom de
l'acteur sélectionner
Sauf qu'au final cela transmet 'Undefined'
Je n'arrive pas à trouver de où cela vient.
en local avant que je passe à php 5.3 (je pense que j'étais en php 4)
cela fonctionnait parfaitement
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
--
Assyril
Attention il faut modifier l'adresse de réponse
Assyril
Attention il faut modifier l'adresse de réponse