[AJAX] Filtre ne fonctionne pas avec IE
Bonjour tout le monde,
J'ai créé au dessus de mon tableau un tableau qui contient des zones de textes.
Dès que je tape quelque chose dans une zone de texte, la liste se filtre.
ça fonctionne super bien avec Firefox mais ça ne fonctionne pas du tout avec IE 8.
Je dois normalement remplir cette div :
Code:
<div id="filter_area"></div>
Voici tout d'abord le message d'erreur :
Citation:
Détails de l’erreur de la page Web
Agent utilisateur : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Horodateur : Sun, 10 May 2009 08:56:51 UTC
Message*: Unknown runtime error
Ligne*: 17
Caractère*: 3
Code*: 0
URI*:
http://localhost/Scripts/Administrateur/AJAX/filtre.js
La ligne 17 est la suivante :
Code:
document.getElementById('filter_area').innerHTML = resultat;
Voici le code javascript :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| function filtre(champ,valeur,table)
{
//if(valeur = "")document.getElementById('filter_area').innerHTML = "";
//alert(champ);
//alert(valeur);
//alert(table);
xhr = getXhr();
xhr.onreadystatechange = function(){
//alert(xhr.readystade);
//alert(xhr.status);
if(xhr.readyState == 4 && xhr.status == 200)
{
resultat = xhr.responseText;
//lebouton = lebouton + " tudiant(s)";
//alert(resultat);
document.getElementById('filter_area').innerHTML = resultat;
}
}
xhr.open("POST","Scripts/Administrateur/AJAX/filtre.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("champ="+champ+"&valeur="+valeur+"&table="+table);
} |
Le code PHP :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <?php
include('../../connexion.php');
$sql = "SELECT * FROM ".$_POST['table']." WHERE ".$_POST['champ']." LIKE '".$_POST['valeur']."%'";
//echo $sql;
$query_filtre = mysql_query($sql);
$nombre = mysql_num_rows($query_filtre);
$Tableau_Noms_Des_Champs = array();
for($j=0;$j<mysql_num_fields($query_filtre);$j++)
{
$Tableau_Noms_Des_Champs[] = mysql_field_name($query_filtre, $j);
}
$i = 0;
$n = 0;
$retour = '<table border="15" style="border-color:#339900;border-style:solid;">';
while($row = mysql_fetch_array($query_filtre,MYSQL_ASSOC))
{
$i++;
$retour.= '<tr><td align="center">'.$i.'</td>';
foreach($row as $NomCol => $Valeur)
{
if($NomCol != 'ID')$retour.= '<td><input name="new[' . $row['ID'] . '][' . $NomCol . ']" value="'.$Valeur.'"></td>';
}
$retour.= '</tr>';
}
$retour.='</table>';
echo $retour;
?> |
et le code de la page appelante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| <!--Si la variable de type get une information ou si la variable de session LaTable une donne alors on fait tout cela-->
<?php
$_GET = array_map("mysql_real_escape_string", $_GET);
if((isset($_GET['select_Nom_Tables'])) OR (isset($_SESSION['LaTable']))){ ?>
<table border="1" id="TableauUpdate">
<?php
if(isset($_GET['select_Nom_Tables']))
{
$table = $_GET['select_Nom_Tables'];
}
else
{
$table = $_SESSION['LaTable'];
}
$_SESSION['LaTable'] = $table;
?>
<?php
$query = mysql_query("SELECT * FROM ".$table) or exit(mysql_error());
$num_rows = mysql_num_rows($query) or exit(mysql_error());
//echo($table);
//echo $num_rows ." lignes dans la table " . $table."\n";
$Tableau_Noms_Des_Champs = array();
for($j=0;$j<mysql_num_fields($query);$j++)
{
if(mysql_field_name($query, $j)!='ID')$Tableau_Noms_Des_Champs[] = mysql_field_name($query, $j);
//echo(mysql_field_name($query,$j));
}
//var_dump($Tableau_Noms_Des_Champs);
?>
<br /><br />
<table border="1">
<tr>
<?php
//++++++++++++++++++++++++affichage des noms de colonnes +++++++++++++++++++++++++++++++++
for($i=0;$i<count($Tableau_Noms_Des_Champs);$i++)
{
?>
<td >
<input type="text" id="<?php echo $Tableau_Noms_Des_Champs[$i]; ?>"
onkeyup="filtre('<?php echo $Tableau_Noms_Des_Champs[$i] ?>',this.value,'<?php echo $_SESSION['LaTable'] ?>')"
/>
</td>
<?php
}
?>
</tr>
<br /><br />
</table>
<table>
<?php if ($num_rows > 0)
{?>
<tr>
<td> </td>
</tr>
<div id="filter_area"></div>
<?php
$nligne = 0;
$nbColonnes = 0;
$i = 0;
while($row = mysql_fetch_array($query,MYSQL_ASSOC))
{
$i++;
echo '<tr><td align="center">'.$i.'</td>';
foreach($row as $NomCol => $Valeur)
{
//si le nom de la colonne vaut 'ID', je l'ignore afin de ne pas afficher l'ID
if($NomCol != 'ID')
{
echo '<td><input name="new[' . $row['ID'] . '][' . $NomCol . ']" value="'.$Valeur.'"></td>';
}
}
//} !!!!!!!!!!!!!!!!!!!!!REMETTRE ICI LE IF !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo '</tr>';
}
echo '</tr>';
?>
<?php }
if ($num_rows == 0)
{ } ?>
</table>
<?php }
else
{
?>
<table border="1" id="TableauUpdate">
<tr><td>Aucune table n'a t slectionne</td></tr>
</table>
<?php
}
?> |
Merci d'avance pour votre aide.
beegees