Pb requette mysql [Résolu]

Signaler
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011
-
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011
-
hello,

je suis entrain de faire deux combo  liée ( quand on choisi une option dans l'une l'autre se met a jours en fonction d'une requette mysql)

Mon problème est que la requette ne renvoie que des résultats que pour les 2 dernieres options de la combobox.

Voici le code de Index.php ( qui contient du code ajax). Je pense que cela peut venir d'un problème d'accents mais je ne sait pas comment le résoudre (si c'est sa )



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript">
    /**
     * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
     */
    function sendData(param, page)
    {
        if(document.all)
        {
            //Internet Explorer
            var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
        }//fin if
        else
        {
            //Mozilla
            var XhrObj = new XMLHttpRequest();
        }//fin else

        //définition de l'endroit d'affichage:
        var content = document.getElementById("contenu");
       
        XhrObj.open("POST", page);

        //Ok pour la page cible
        XhrObj.onreadystatechange = function()
        {            if (XhrObj.readyState 4 && XhrObj.status 200)
                content.innerHTML = XhrObj.responseText ;
        }

        XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        XhrObj.send(param);
    }//fin fonction SendData

    </script>
</head>

<?php  
   $i=0;
   $j=0;
      
 
       echo "<form method='POST' action='ajax.php'>";
?>  

    <select size="1" name="cat" OnChange="sendData('id='+this.value,'ajax.php')" onKeyUp="sendData('id='+this.value,'ajax.php')">
<?php
       echo '<option value="Jeux calme intérieur">'.htmlentities(stripslashes('Jeux calme intérieur')).'</option>';
       echo '<option value="Jeux calme extérieur">'.htmlentities(stripslashes('Jeux calme extérieur')).'</option>';
       echo '<option value="Jeux actif intérieur">'.htmlentities(stripslashes('Jeux actif intérieur')).'</option>';
    echo '<option value="Jeux actif extérieur">'.htmlentities(stripslashes('Jeux actif extérieur')).'</option>';
    echo '<option value="Jeux Coopératif">'.htmlentities(stripslashes('Jeux Coopératif')).'</option>';
    echo '<option value="Jeux Sportif">'.htmlentities(stripslashes('Jeux Sportif')).'</option>';
    echo '<option value="Tout les types">'.htmlentities(stripslashes('Tout les types')).'</option>';
 
?>   

   </select>

  

  <?php 
  // affichage des sous-catégorie appartenant à la première catégorie.
   echo "<select size='1' name='souscat'>";  
   
    echo "</select>";
   ?>  
  

</form>

</html>

et le code de ajax.php
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<?php

 
// test des POST emis
if(isset($_POST['id']) && !empty($_POST['id']) ){

   $user="**********";
   $host="sql.olympe-network.com";
   $password="**********";
   $database="jeuxenfants";
   $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");  
   mysql_select_db($database,$connexion);
       if ($_POST['id']=='Tout les types') $rq='Select * from jeux'; else $rq='Select * from jeux where type=\''. utf8_encode($_POST['id']).'\'';
  
    echo  $rq .'
';
    mysql_query("SET NAMES UTF8");
    $result= mysql_query ($rq);
    
   
    $i=0;
   
    echo  mysql_num_rows($result) .'
';
   
    if (mysql_num_rows($result)>0)
    {
      echo "<select size='1' name='souscat'>";
    }
    else
    {
      echo utf8_encode("Pas de sous catégories disponible");   
    }
    while ($dt=mysql_fetch_row($result))
    {    
     echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[1])."</option>
";
    }   
    echo "</select>";
}

?>
</html>

et le contenu de la table jeux (faites pas attention aux valeurs):

|id |nom |type |nbre |duree |expli |vari |matos |----
,
,
, 1, pehce à piads, Jeux calme intérieur, 213, 15, i¨ fqfsdqsdfq, éééé,  , ----
,
,
, 2, hihi, Jeux Coopératif, 147, 20, test, tesdt,  , ----
,
,
, 3, sf, Jeux actif intérieur, 456, 123, fqfnkqfùkqnfnqsùkfnùqsf
qsdqµsflq,sdf
ùqndfqnsdf..., smùnrfgmqsng
gmsngµsdfg
µgnsµfg
sgsmfgnsf
gsfn...,  , ----
,
,
, 4, test, Jeux Coopératif, 13, 52, fsfsqf, sdfsf, balle, ----
,
,
, 5, sdfsd, Jeux Sportif, 545, 784, SDSF, SDFSD, SDFSF, ----
,
,
, 6, sdfsd, Jeux Sportif, 545, 784, SDSF, SDFSD, SDFSF, ----
,
,
, 7, fssdf, Jeux actif extérieur, 13, 15, sdfdf, qdfsdf, dhjfgjh, ----
,
,
, 8, fdsf, Jeux actif extérieur, 51, 89, sdfsdf, sdff, sfgsdf
Merci d'avance

@ dodo1309

2 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Bonsoir,

tout d'abord requête s'écrit avec un seul "t" et un un "ê", et accessoirement "ça" c'est pas avec un "s".

Ensuite oui ça vient de tes accents. Si ton fichier index.php est bien encodé en utf8 (vérifie dans ton éditeur de texte), tu n'as pas besoin de faire utf8_encode dans ajax.php. Donc essaie d'enlever et regarde si ça marche.

En général on évite de mettre des chaînes comme valeur dans value des select, on met plutôt des identifiants numériques qui correspondent à la valeur dans la base de données (plus pratique et plus rapide pour MySQL).

à+
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011

merci d'avoir répondu et résolu mon problème

(sorry pour l'orthographe mais je suis anglais  et je parle un peu le français )

@+