Selcet imbriqués et dynamique avec xajax. [Résolu]

Signaler
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
6 mars 2008
-
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
6 mars 2008
-
Bonjour a tous,

Je souhaite réaliser un formulaire avec des selects qui dépendrai les uns des autres (catégorie --> sous catégorie -> sous sous catégorie etc..).
J'ai utiliser la bibliothèque xajax pour le faire.
Le probleme qui se pose a moi est un soucis de compatibilité pour Internet Explorer. Mon code marche trés bien pour Firefox mais pas pour IE (même avec IE7).

Voici mon code :

<?php
// Configuration MySQL
$host_db = "localhost";
$user_db = "*******";
$password_db = "************";
$bdd_db = "test";

// connexion a la base de donnees et selection de la table
$connect_db = mysql_connect($host_db,$user_db,$password_db) or die("connection impossible");
mysql_select_db($bdd_db,$connect_db) or die("PB de base de données");

require_once("../xajax_core/xajax.inc.php");

$xajax = new xajax();
$xajax->configure('debug', true);
$xajax->configure('javascript URI', '../');

//fonction qui rempli la liste des sous-catégrie en fonction de la catégorie selectionner
function SelectSouscat($catid)
{
    $option="";
    //$options='<select>';
    // on selectionne les sous-catégorie en fonction de l'id de la catégorie mère
    $sql="SELECT id,titre FROM souscategories WHERE id_cat_mere = '".$catid."'";
    $req=mysql_query($sql);
    while ($souscat = mysql_fetch_array($req))
    {
        // on place toutes les sous-catégories dans des options valables pour la liste SELECT
        $options .= '<option value="'.$souscat['id'].'">'.$souscat['titre'].'</option>';
    }
   
    // créé un nouvel objet permettant d'envoyer une réponse au côté client
    $objResponse = new xajaxResponse();
    // l'Ajax remplacera le innerHTML (html intérieur) de la liste_souscat pour y mettre $options
    $objResponse->assign("liste_souscat","innerHTML",$options);
    // envoie la réponse en XML
    return $objResponse;
}

//fonction qui rempli la liste des sous-sous-catégrie en fonction de la catégorie selectionner
function SelectSscat($souscatid)
{
    $option="";
    // on selectionne les sous-catégorie en fonction de l'id de la catégorie mère
    $sql="SELECT id_sscateg,nom FROM sscategorie WHERE id_souscateg = '".$souscatid."'";
    $req=mysql_query($sql);
    while ($sscat = mysql_fetch_array($req))
    {
        // on place toutes les sous-catégories dans des options valables pour la liste SELECT
        $options .= '<option value="'.$sscat['id_sscateg'].'">'.$sscat['nom'].'</option>';
    }
   
    // créé un nouvel objet permettant d'envoyer une réponse au côté client
    $objResponse = new xajaxResponse();
    // l'Ajax remplacera le innerHTML (html intérieur) de la liste_souscat pour y mettre $options
    $objResponse->assign("liste_sscat","innerHTML",$options);
    // envoie la réponse en XML
    return $objResponse;
}

//déclaration des fonctions et des paramètres qui conviennent.
$reqSetSCat =& $xajax->registerFunction('SelectSouscat');
$reqSetSCat->setParameter(0, XAJAX_INPUT_VALUE, 'liste_cat');

$reqSetSsCat =& $xajax->registerFunction('SelectSscat');
$reqSetSsCat->setParameter(0, XAJAX_INPUT_VALUE, 'liste_souscat');

$xajax->processRequest();
?>

<html>
<head>
<title>Test de select dynamiques</title>
<?php $xajax->printJavascript("../"); ?>
<!-- Fonction qui gère les changement-->
    <script type='text/javascript'>
        window.onload = function()
        {
            <?php $reqSetSCat->printScript(); ?>;
            <?php $reqSetSsCat->printScript(); ?>;
        }
    </script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
</head>

Test de select dynamiques

    <form id=\"testForm1\">
    ----

        Choisissez une catégorie :,
        <select id="liste_cat" name="liste_cat" onChange='<?php $reqSetSCat->printScript();?>;'>   
        <option value='0' selected="selected"> </option>
        <?php
            $sql="SELECT id_categorie, categorie FROM categories ORDER BY categorie ASC";
            $req=mysql_query($sql) or die(mysql_error());
            while($cat = mysql_fetch_array($req))
            {
                echo '<option value="'.$cat['id_categorie'].'">' . $cat['categorie'] . '</option>';
            }
        ?>
    </select>,
   
    ----

    Choisissez une sous-catégorie :,     <select id="liste_souscat" name="liste_souscat" onChange='<?php $reqSetSsCat->printScript();?>;'>
    </select>
   ,
   
    ----

    Choisissez une sous-sous-catégorie :,     <select id="liste_sscat" name="liste_sscat" >
    </select>
   ,
   
    </form>
   

</html>

Et la bibliothèque que j'ai utilisé est : xajax_0.5_beta_4b_Full.zip
Disponible ici : https://sourceforge.net/project/showfiles.php?group_id=139736
Dsl pour le liens mais je peux pas mettre la librairie en entier.

Si vous avez des idées sur le pourquoi du comment ça marche pasa sous IE dites le moi.

Merci D'avance.
La plopinette.

8 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>>juste faire des select imbriqué, le premier select donne
une valeur qui est utiliser
>>pour créer le 2eme via une requete a la
base de données

    ce que je peux encore faire, puisque tu ne veux pas donner la page générée,
       que je ne connais pas xajax ( et que je ne tiens pas à connaitre à priori ),
       c'est de donner un lien vers quelques explications, un exemple....

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

    déjà, si on avait la page générée au lieu du php... se serait plus mieux...
       sinon on doit deviner ? je parle du contenu des $variable, de la base de données...
    ( mais ne le fais pas ! tu vas tout nous mettre et ce sera trop lours, ça décourage )

    ensuite, un secret : IE et FF ont des comportements, des syntaxes... différents,
       la bibliothèque que tu utilises ou comment tu l'utilises ou ce que tu fais ( ailleurs )...
       n'est pas compatible avec IE.

    avec IE ( remarque que je te dirais la même chose avec FF ), toutes les erreurs
       sont signalées.   il faut les regarder et rectifier


¡————————¡——————————————————————————————————————————————————————————¡
|FireFox |regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
| | |
| | et mieux, télécharger FireBug |
¦————————¦——————————————————————————————————————————————————————————¦
|Internet|activer le deboggage : Outils/options Internet/Avancés |
|Explorer| dans la liste, sous "Navigation" : décocher |
| | ° Afficher une notification de chaque erreur de script |
| | ° Désactiver le débogage de Scripts (Internet Explorer) |
| | |
| | et mieux, télécharger le Debogger IE |
¦————————¦——————————————————————————————————————————————————————————¦
|K—Meleon|regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Opera |regarder la "console d'erreurs" |
| | utils / Asole d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Safari |regarder Debug / Show JavaScript Console |
| | |
| |modif Fichier "Support:\Documents and Settings\utilisateur|
| |\Application Data\Apple Computer\Safari\Preferences.plist"|
| | y ajouter <key>IncludeDebugMenu</key> |
| | <true/> |
!————————!——————————————————————————————————————————————————————————!

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
<?php
// Configuration MySQL
$host_db = "localhost";
$user_db = "*******";
$password_db = "************";
$bdd_db = "test";

// connexion a la base de donnees et selection de la table
$connect_db = mysql_connect($host_db,$user_db,$password_db) or die("connection impossible");
mysql_select_db($bdd_db,$connect_db) or die("PB de base de données");

require_once("../xajax_core/xajax.inc.php");

$xajax = new xajax();
$xajax->configure('debug', true);
$xajax->configure('javascript URI', '../');

//fonction qui rempli la liste des sous-catégrie en fonction de la catégorie selectionner
function SelectSouscat($catid)
{
    $option="";
    //$options='<select>';
    // on selectionne les sous-catégorie en fonction de l'id de la catégorie mère
    $sql="SELECT id,titre FROM souscategories WHERE id_cat_mere = '".$catid."'";
    $req=mysql_query($sql);
    while ($souscat = mysql_fetch_array($req))
    {
        // on place toutes les sous-catégories dans des options valables pour la liste SELECT
        $options .= '<option value="'.$souscat['id'].'">'.$souscat['titre'].'</option>';
    }
  
    // créé un nouvel objet permettant d'envoyer une réponse au côté client
    $objResponse = new xajaxResponse();
    // l'Ajax remplacera le innerHTML (html intérieur) de la liste_souscat pour y mettre $options
    $objResponse->assign("liste_souscat","innerHTML",$options);
    // envoie la réponse en XML
    return $objResponse;
}

//fonction qui rempli la liste des sous-sous-catégrie en fonction de la catégorie selectionner
function SelectSscat($souscatid)
{
    $option="";
    // on selectionne les sous-catégorie en fonction de l'id de la catégorie mère
    $sql="SELECT id_sscateg,nom FROM sscategorie WHERE id_souscateg = '".$souscatid."'";
    $req=mysql_query($sql);
    while ($sscat = mysql_fetch_array($req))
    {
        // on place toutes les sous-catégories dans des options valables pour la liste SELECT
        $options .= '<option value="'.$sscat['id_sscateg'].'">'.$sscat['nom'].'</option>';
    }
  
    // créé un nouvel objet permettant d'envoyer une réponse au côté client
    $objResponse = new xajaxResponse();
    // l'Ajax remplacera le innerHTML (html intérieur) de la liste_souscat pour y mettre $options
    $objResponse->assign("liste_sscat","innerHTML",$options);
    // envoie la réponse en XML
    return $objResponse;
}

//déclaration des fonctions et des paramètres qui conviennent.
$reqSetSCat =& $xajax->registerFunction('SelectSouscat');
$reqSetSCat->setParameter(0, XAJAX_INPUT_VALUE, 'liste_cat');

$reqSetSsCat =& $xajax->registerFunction('SelectSscat');
$reqSetSsCat->setParameter(0, XAJAX_INPUT_VALUE, 'liste_souscat');

$xajax->processRequest();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

  <title>Test de select dynamiques</title>

  <!-- Fonction qui gère les changement-->
  <script language="javascript" type="text/javascript">
  <!--
  <?php
    $xajax->printJavascript("../");
  ?>

    window.onload = function() {
    <?php
      $reqSetSCat->printScript();
      $reqSetSsCat->printScript();
    ?>
    }
  --> 
  </script>
</head>

Test de select dynamiques

<!-- form begin -->
<form id="testform1" name="testform1" method="post">
cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
  ----

    Choisissez une catégorie :,
          <select id="liste_cat" name="liste_cat" onchange="<?php $reqSetSCat->printScript();?>">  
        <option value="0" selected="selected"></option>
        <?php
          $sql="SELECT id_categorie, categorie FROM categories ORDER BY categorie ASC";
          $req=mysql_query($sql) or die(mysql_error());
          while($cat = mysql_fetch_array($req)) {
            echo '<option value="', $cat['id_categorie'], '">', $cat['categorie'] ,'</option>';
          }
        ?>
      </select>
     

   ,
 
  ----

    Choisissez une sous-catégorie :,
          <select id="liste_souscat" name="liste_souscat" onchange="<?php $reqSetSsCat->printScript();?>">
      </select>
   ,
 
  ----

    Choisissez une sous-sous-catégorie :,
          <select id="liste_sscat" name="liste_sscat">
      </select>
   ,
 
 
<!-- form end -->
</form>



</html>








<hr size="2" width="100%" />


http://deefaze.gnomz.com
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
6 mars 2008

Okay,

Je vais regarder.

Je te tiens au courant.
Merci.
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
6 mars 2008

J'ai installé le debugueur de IE mais j'ai pas d'erreur de script ou je sais pas m'en servir.

Merci a foxi pour la mise en forme ^^ c'est un peu plus lisible.
Cepenant :
      <?php
    $xajax->printJavascript("../");
     ?>
ne doit pas etre mis dans le javascript ça n'en est pas.

Bon malgrés mes changements ça ne maarche pas mieux sous IE donc ça doit venir de la bibliothèque xajax.
Qu'en pensez vous ?
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
c'est probable, ne l'ayant jamais utiliser je ne peu pas dire si oui ou non y'a un probleme avec... voir sur le site de xajax peut etre...

<hr size="2" width="100%" />
http://deefaze.gnomz.com
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
6 mars 2008

Re salut,

Bon ben je trouve rien chez l'éditeur de la librairie....

Personne ne sais comment je pourrais faire à la place de ce script ?
Je souhaite juste faire des select imbriqué, le premier select donne une valeur qui est utiliser pour créer le 2eme via une requete a la base de données et ainsi de suite.

J'espère que vous pourrez me donner une solution, j'en ai vraiment besoin.

Merci d'avance et mersi aussi pour vos réponse précédante.

La Plopinette qui galère ><
Messages postés
10
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
6 mars 2008

Merci ^^

je vais me debrouillé avec cet exemple.