Selcet imbriqués et dynamique avec xajax.

Résolu
Plopinettedu63 Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 6 mars 2008 - 4 mars 2008 à 14:56
Plopinettedu63 Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 6 mars 2008 - 6 mars 2008 à 11:22
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 mars 2008 à 11:13
>>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]
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 mars 2008 à 15:07
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]
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
4 mars 2008 à 15:54
<?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
0
Plopinettedu63 Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 6 mars 2008
4 mars 2008 à 15:54
Okay,

Je vais regarder.

Je te tiens au courant.
Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Plopinettedu63 Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 6 mars 2008
4 mars 2008 à 16:23
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 ?
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
4 mars 2008 à 19:12
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
0
Plopinettedu63 Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 6 mars 2008
6 mars 2008 à 10:40
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 ><
0
Plopinettedu63 Messages postés 10 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 6 mars 2008
6 mars 2008 à 11:22
Merci ^^

je vais me debrouillé avec cet exemple.
0
Rejoignez-nous