IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Filtre ne fonctionne pas avec IE


Sujet :

AJAX

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut [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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="filter_area"></div>
    Voici tout d'abord le message d'erreur :

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('filter_area').innerHTML = resultat;
    Voici le code javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>&nbsp;</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

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Attention car ton code HTML semble bancal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <table>				  
    	<?php if ($num_rows > 0) 
            {?>
    	<tr>
    	<td>&nbsp;</td>
     
    	</tr>
    	<div id="filter_area"></div>
    ...
    Ta DIV se promène entre 2 TR, et peut-être que IE8 n'apprécie pas trop au moment de faire le innerHTML.

    ERE

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut Emmanuel,

    T'avais raison.

    Le fait de mettre un peu d'ordre dans le code m'a permis de régler le problème.

    Merci

    beegees

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script ajax qui ne fonctionne pas avec une écran smartphone
    Par beegees dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/08/2016, 12h27
  2. Réponses: 4
    Dernier message: 10/12/2010, 11h58
  3. [AJAX] xmlhttprequest.send qui ne fonctionne pas avec une variable !
    Par hoaxpunk dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/03/2009, 18h17
  4. [AJAX] mon code ne fonctionne pas avec IE mais bien avec FF
    Par beegees dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/01/2009, 14h59
  5. [AJAX] simple affichage avec Ajax.Request ne fonctionne pas
    Par karimphp dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/12/2007, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo