par
jkb » 29 mai 2007, 13:17
bonjour,
Je suis étudiant j'ai un projet en php5 suivant un dossier de conception.
Je suis bloqué sur la création d'une fonction dont la description est la suivante:
Static Public get_ javascript_for_selectList()
Cette méthode retourne une chaîne de caractères contenant les fonctions javascript gérant le rechargement dynamique des listes déroulantes de domaines, sous-domaines, thèmes et sous-thème.
Après avoir appelé la méthode loadListes qui initialise les différents tableaux décrivant les listes déroulantes, cette méthode génère le code javascript nécessaire à la gestion des listes déroulantes dynamiques contenu dans la fonction update_listes_domaine(nom_form, nom_) : nom_form est le nom du formulaire (par défaut il est défini dans la classe Table wizard), nom_element est le nom de la liste déroulante (contient soit : domaine, sousdomaine, theme ou soustheme)
Le contenu est généré en 3 temps :
tout d’abord récupération de la nouvelle valeur de la liste déroulante modifiée,
var id_domaine = document.forms[nom_form].elements[prefixe+nom_element].value;
puis définition des tableaux javascript décrivant les listes déroulantes : initialisation des tableaux javascript, puis remplissage de chacun avec les valeurs des tableaux domaines, sousdomaines, themes et sousthemes initialisés avec la méthode loadListes.
enfin traitement de l’action nécessitant le rechargement d’une des listes déroulantes : test de la valeur de l’argument nom_element :
o si nom_element contient domaine, alors rechargement de la liste sous-domaine : suppression des éléments actuels de la liste, puis chargement des sous-domaines associé au domaine selectionné d’identifiant id_domaine.
o Si nom_element contient sousdomaine, rechargement de la liste déroulante theme en fonction de la nouvelle valeur du sous-domaine.
o Si nom_element contient theme, rechargement de la liste déroulante soustheme en fonction du thème sélectionné.
sachant que j'ai develloper les autre fonctions.
svp qulqu'un peyt 'il m'aidé merci
voici le code de la classe domaine:
<?php
/**
* Domaine.class.php
*/
require_once $conf['app']['class'].'HomeMade/Table.php';
/**
* Description...
*/
class Domaine extends Table
{
/*******************************attributs***************************************
* *
/******************************************************************************/
static private $domaines=array();
static private $sousdomaines=array();
static private $themes=array();
static private $sousthemes=array();
/*********************************Ses méthodes**********************************
* *
/******************************************************************************/
/*******************************loadListes**************************************
*Initialise les tableaux domaines, sousdomaines, themes et sousthemes *
* destinés à remplir les listes déroulantes associées dans la langue courante *
* de l’application. *
/******************************************************************************/
Static public function loadListes()
{
//Récupération de la langue courante
$lang=$_SESSION['lang'];
//Récupération l'instance de l'accesseur aux données
$db = Accesseur_DB::GetInstance();
//Initialisation du tableau domaines
if($lang==fr)
self::$domaines[0]='Tous les domaines';
if($lang==en)
self::$domaines[0]='All domaines';
$sqldomaine="SELECT domaine,libelle" ;
$sqldomaine.=$lang ;
$sqldomaine.=" FROM domaine WHERE sousdomaine=0 ORDER BY libelle";
$sqldomaine.=$lang;
$sqldomaine.=";";
$result = $db->query_db($sqldomaine);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$domaines[$raw['domaine']]=$row['libelle'.$lang];
}
//Initialisation du tableau sousdoamine
$sqlsousdomaine="SELECT domaine,sousdomaine,libelle" ;
$sqlsousdomaine.=$lang ;
$sqlsousdomaine.=" FROM domaine WHERE sousdomaine!=0 AND theme=0 ORDER BY libelle";
$sqlsousdomaine.=$lang;
$sqlsousdomaine.=";";
$result = $db->query_db($sqlsousdomaine);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$sousdomaines[$raw['domaine']['sousdomaine']]=$row['libelle'.$lang];
}
//Initialisation du tableau themes
$sqlthemes="SELECT sousdomaine,theme,libelle" ;
$sqlthemes.=$lang ;
$sqlthemes.=" FROM domaine WHERE theme!=0 AND soustheme=0 ORDER BY libelle";
$sqlthemes.=$lang;
$sqlthemes.=";";
$result = $db->query_db($sqlthemes);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$themes[$raw['sousdomaine']['theme']]=$row['libelle'.$lang];
}
//Initialisation du tableau sousthemes
$sqlsoustheme="SELECT theme,soustheme,libelle" ;
$sqlsoustheme.=$lang ;
$sqlsoustheme.=" FROM domaine WHERE soustheme!=0 ORDER BY libelle";
$sqlsoustheme.=$lang;
$sqlsoustheme.=";";
$result = $db->query_db($sqlsoustheme);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$sousthemes[$raw['theme']['soustheme']]=$row['libelle'.$lang];
}
}
/*****************************get_ javascript_for_selectList()*****************
* Cette méthode retourne une chaîne de caractères contenant les fonctions
* javascript gérant le rechargement dynamique des listes déroulantes
* de domaines, sous-domaines, thèmes et sous-thème
******************************************************************************/
Static Public function get_javascript_for_selectList()
{
self::loadListes();
}
/*********************************get_domaines($id)****************************
* *
******************************************************************************/
Static Public function get_domaines()
{
self::loadListes();
return $domaines;
}
/*****************************get_sousdomaines($id = 0)*************************
* Retourne le tableau du tableau sousdomaines listant les sous domaines
* associé au domaine dont l’identifiant est le paramètre transmit à la méthode.
*******************************************************************************/
Static Public function get_sousdomaines($id = 0)
{
$lang=$_SESSION['lang'];
//Récupération l'instance de l'accesseur aux données
$db = Accesseur_DB::GetInstance();
if($id=0){
if($lang==fr)
{
self::$sousdomaines[0]='Tous les sous-domaines';
}
else
{
self::$sousdomaines[0]='All sub-domaines ';
}
}
else {
$sqlsousdomaine="SELECT domaine,sousdomaine,libelle" ;
$sqlsousdomaine.=$lang ;
$sqlsousdomaine.=" FROM domaine WHERE domaine=$id ORDER BY libelle";
$sqlsousdomaine.=$lang;
$sqlsousdomaine.=";";
$result = $db->query_db($sqlsousdomaine);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$sousdomaines[$raw['domaine']['sousdomaine']]=$row['libelle'.$lang];
}
}
return $sousdomaines;
}
/***********************************get_themes**********************************
* Retourne un tableau listant les thèmes associé au sous domaine dont *
* l’identifiant est le paramètre transmit à la méthode. * *
******************************************************************************/
Static Public function get_themes($id = 0)
{
$lang=$_SESSION['lang'];
//Récupération l'instance de l'accesseur aux données
$db = Accesseur_DB::GetInstance();
if($id=0){
if($lang==fr)
{
self::$themes[0]='Tous les themes';
}
else
{
self::$themes[0]='All themes ';
}
}
else{
$sqlthemes="SELECT sousdomaine,theme,libelle" ;
$sqlthemes.=$lang;
$sqlthemes.=" FROM domaine WHERE sousdomaine $id ORDER BY libelle";
$sqlthemes.=$lang;
$sqlthemes.=";";
$result = $db->query_db($sqlthemes);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$themes[$raw['sousdomaine']['theme']]=$row['libelle'.$lang];
}
}
return $themes;
}
/**********************************get _sousthemes*****************************
*Retourne un tableau listant les sous thèmes associé au thème dont *
*l’identifiant est le paramètre transmit à la méthode. * *
******************************************************************************/
Static Public function get_sousthemes($id = 0)
{
$lang=$_SESSION['lang'];
//Récupération l'instance de l'accesseur aux données
$db = Accesseur_DB::GetInstance();
if($id=0){
if($lang==fr)
{
self::$themes[0]='Tous les sous-themes';
}
else
{
self::$themes[0]='All sub-themes ';
}
}
else{
$sqlsoustheme="SELECT theme,soustheme,libelle" ;
$sqlsoustheme.=$lang ;
$sqlsoustheme.=" FROM domaine WHERE theme=$id ORDER BY libelle";
$sqlsoustheme.=$lang;
$sqlsoustheme.=";";
$result = $db->query_db($sqlsoustheme);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$sousthemes[$raw['theme']['soustheme']]=$row['libelle'.$lang];
}
}
return $sousthemes ;
}
/**********************************get_domaine_liste****************************
* le tableau décrivant la liste déroulante à afficher. Id représente *
* l’identifiant de l’élément parent associé à la liste *
* (domaine, sous domaine ou thème), niveau indique si la liste a afficher est *
* celle des domaines, sous domaines, thèmes ou sous thèmes. * *
******************************************************************************/
Static Public function get_domaine_liste($id,$niveau)
{
switch($niveau)
{
case'domaines':
return $this->get_domaines();
break;
case'sous-doamines':
return $this->get_sousdomaines($id);
break;
case'themes':
return $this->get_themes($id);
break;
case 'sous-themes':
return $this->get_sousthemes($id);
break;
}
}
/********************************constructeur***********************************
* •Appel du constructeur parent ; *
* •Initialisation des fonctionnalités en fonction des droits utilisateurs *
* (seuls les administrateurs accèdent aux fonctionnalités d’ajout, *
* modification et suppression d’un domaine). *
* •Appel de la méthode init_domaine. *
*******************************************************************************/
public function __construct($table = 'domaine')
{
parent::__construct($table);
global $page;
if($page->get_userRole() < 3)
{
$this->edition = true;
$this->ajout = true;
}
$this->init_domaine();
}
private function init_domaine()
{
$this->intitule_table='domaine';
$this->action = 'index.php?section=admin&action=domaines';
$this->params =array('action'=>'domaines','section'=>'admin');
$this->libelles['contenu'] ='doamine';
$this->defaultParams['order'] = 'domaine,sousdomaine,theme,soustheme';
/***********************************************************************
* description de la table *
* liste des champs pour les formulaires d'ajout / modification *
* et des colonnes de l'affichage liste *
************************************************************************/
/* */
$this->add_field('libellefr','Libellé français','text','maxlength=255 size=70',false);
$this->add_field('libelleen','Libellé anglais','text','maxlength=255 size=70',false);
$this->add_fk_field('domaine','Domaine','id','domaine','libellefr',true) ;
$this->add_fk_field('sousdomaine','Ss-domaine','id','domaine','libellefr',true) ;
$this->add_fk_field('theme','Thème','id','domaine','libellefr',true) ;
$this->add_fk_field('southeme','Ss-thème','id','domaine','libellefr',true) ;
}
bonjour,
Je suis étudiant j'ai un projet en php5 suivant un dossier de conception.
Je suis bloqué sur la création d'une fonction dont la description est la suivante:
Static Public get_ javascript_for_selectList()
Cette méthode retourne une chaîne de caractères contenant les fonctions javascript gérant le rechargement dynamique des listes déroulantes de domaines, sous-domaines, thèmes et sous-thème.
Après avoir appelé la méthode loadListes qui initialise les différents tableaux décrivant les listes déroulantes, cette méthode génère le code javascript nécessaire à la gestion des listes déroulantes dynamiques contenu dans la fonction update_listes_domaine(nom_form, nom_) : nom_form est le nom du formulaire (par défaut il est défini dans la classe Table wizard), nom_element est le nom de la liste déroulante (contient soit : domaine, sousdomaine, theme ou soustheme)
Le contenu est généré en 3 temps :
tout d’abord récupération de la nouvelle valeur de la liste déroulante modifiée,
var id_domaine = document.forms[nom_form].elements[prefixe+nom_element].value;
puis définition des tableaux javascript décrivant les listes déroulantes : initialisation des tableaux javascript, puis remplissage de chacun avec les valeurs des tableaux domaines, sousdomaines, themes et sousthemes initialisés avec la méthode loadListes.
enfin traitement de l’action nécessitant le rechargement d’une des listes déroulantes : test de la valeur de l’argument nom_element :
o si nom_element contient domaine, alors rechargement de la liste sous-domaine : suppression des éléments actuels de la liste, puis chargement des sous-domaines associé au domaine selectionné d’identifiant id_domaine.
o Si nom_element contient sousdomaine, rechargement de la liste déroulante theme en fonction de la nouvelle valeur du sous-domaine.
o Si nom_element contient theme, rechargement de la liste déroulante soustheme en fonction du thème sélectionné.
sachant que j'ai develloper les autre fonctions.
svp qulqu'un peyt 'il m'aidé merci
voici le code de la classe domaine:
[php]<?php
/**
* Domaine.class.php
*/
require_once $conf['app']['class'].'HomeMade/Table.php';
/**
* Description...
*/
class Domaine extends Table
{
/*******************************attributs***************************************
* *
/******************************************************************************/
static private $domaines=array();
static private $sousdomaines=array();
static private $themes=array();
static private $sousthemes=array();
/*********************************Ses méthodes**********************************
* *
/******************************************************************************/
/*******************************loadListes**************************************
*Initialise les tableaux domaines, sousdomaines, themes et sousthemes *
* destinés à remplir les listes déroulantes associées dans la langue courante *
* de l’application. *
/******************************************************************************/
Static public function loadListes()
{
//Récupération de la langue courante
$lang=$_SESSION['lang'];
//Récupération l'instance de l'accesseur aux données
$db = Accesseur_DB::GetInstance();
//Initialisation du tableau domaines
if($lang==fr)
self::$domaines[0]='Tous les domaines';
if($lang==en)
self::$domaines[0]='All domaines';
$sqldomaine="SELECT domaine,libelle" ;
$sqldomaine.=$lang ;
$sqldomaine.=" FROM domaine WHERE sousdomaine=0 ORDER BY libelle";
$sqldomaine.=$lang;
$sqldomaine.=";";
$result = $db->query_db($sqldomaine);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$domaines[$raw['domaine']]=$row['libelle'.$lang];
}
//Initialisation du tableau sousdoamine
$sqlsousdomaine="SELECT domaine,sousdomaine,libelle" ;
$sqlsousdomaine.=$lang ;
$sqlsousdomaine.=" FROM domaine WHERE sousdomaine!=0 AND theme=0 ORDER BY libelle";
$sqlsousdomaine.=$lang;
$sqlsousdomaine.=";";
$result = $db->query_db($sqlsousdomaine);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$sousdomaines[$raw['domaine']['sousdomaine']]=$row['libelle'.$lang];
}
//Initialisation du tableau themes
$sqlthemes="SELECT sousdomaine,theme,libelle" ;
$sqlthemes.=$lang ;
$sqlthemes.=" FROM domaine WHERE theme!=0 AND soustheme=0 ORDER BY libelle";
$sqlthemes.=$lang;
$sqlthemes.=";";
$result = $db->query_db($sqlthemes);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$themes[$raw['sousdomaine']['theme']]=$row['libelle'.$lang];
}
//Initialisation du tableau sousthemes
$sqlsoustheme="SELECT theme,soustheme,libelle" ;
$sqlsoustheme.=$lang ;
$sqlsoustheme.=" FROM domaine WHERE soustheme!=0 ORDER BY libelle";
$sqlsoustheme.=$lang;
$sqlsoustheme.=";";
$result = $db->query_db($sqlsoustheme);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$sousthemes[$raw['theme']['soustheme']]=$row['libelle'.$lang];
}
}
/*****************************get_ javascript_for_selectList()*****************
* Cette méthode retourne une chaîne de caractères contenant les fonctions
* javascript gérant le rechargement dynamique des listes déroulantes
* de domaines, sous-domaines, thèmes et sous-thème
******************************************************************************/
Static Public function get_javascript_for_selectList()
{
self::loadListes();
}
/*********************************get_domaines($id)****************************
* *
******************************************************************************/
Static Public function get_domaines()
{
self::loadListes();
return $domaines;
}
/*****************************get_sousdomaines($id = 0)*************************
* Retourne le tableau du tableau sousdomaines listant les sous domaines
* associé au domaine dont l’identifiant est le paramètre transmit à la méthode.
*******************************************************************************/
Static Public function get_sousdomaines($id = 0)
{
$lang=$_SESSION['lang'];
//Récupération l'instance de l'accesseur aux données
$db = Accesseur_DB::GetInstance();
if($id=0){
if($lang==fr)
{
self::$sousdomaines[0]='Tous les sous-domaines';
}
else
{
self::$sousdomaines[0]='All sub-domaines ';
}
}
else {
$sqlsousdomaine="SELECT domaine,sousdomaine,libelle" ;
$sqlsousdomaine.=$lang ;
$sqlsousdomaine.=" FROM domaine WHERE domaine=$id ORDER BY libelle";
$sqlsousdomaine.=$lang;
$sqlsousdomaine.=";";
$result = $db->query_db($sqlsousdomaine);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$sousdomaines[$raw['domaine']['sousdomaine']]=$row['libelle'.$lang];
}
}
return $sousdomaines;
}
/***********************************get_themes**********************************
* Retourne un tableau listant les thèmes associé au sous domaine dont *
* l’identifiant est le paramètre transmit à la méthode. * *
******************************************************************************/
Static Public function get_themes($id = 0)
{
$lang=$_SESSION['lang'];
//Récupération l'instance de l'accesseur aux données
$db = Accesseur_DB::GetInstance();
if($id=0){
if($lang==fr)
{
self::$themes[0]='Tous les themes';
}
else
{
self::$themes[0]='All themes ';
}
}
else{
$sqlthemes="SELECT sousdomaine,theme,libelle" ;
$sqlthemes.=$lang;
$sqlthemes.=" FROM domaine WHERE sousdomaine $id ORDER BY libelle";
$sqlthemes.=$lang;
$sqlthemes.=";";
$result = $db->query_db($sqlthemes);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$themes[$raw['sousdomaine']['theme']]=$row['libelle'.$lang];
}
}
return $themes;
}
/**********************************get _sousthemes*****************************
*Retourne un tableau listant les sous thèmes associé au thème dont *
*l’identifiant est le paramètre transmit à la méthode. * *
******************************************************************************/
Static Public function get_sousthemes($id = 0)
{
$lang=$_SESSION['lang'];
//Récupération l'instance de l'accesseur aux données
$db = Accesseur_DB::GetInstance();
if($id=0){
if($lang==fr)
{
self::$themes[0]='Tous les sous-themes';
}
else
{
self::$themes[0]='All sub-themes ';
}
}
else{
$sqlsoustheme="SELECT theme,soustheme,libelle" ;
$sqlsoustheme.=$lang ;
$sqlsoustheme.=" FROM domaine WHERE theme=$id ORDER BY libelle";
$sqlsoustheme.=$lang;
$sqlsoustheme.=";";
$result = $db->query_db($sqlsoustheme);
while ($row=$result->fetchRow(DB_FETCHMODE_ASSOC))
{
self::$sousthemes[$raw['theme']['soustheme']]=$row['libelle'.$lang];
}
}
return $sousthemes ;
}
/**********************************get_domaine_liste****************************
* le tableau décrivant la liste déroulante à afficher. Id représente *
* l’identifiant de l’élément parent associé à la liste *
* (domaine, sous domaine ou thème), niveau indique si la liste a afficher est *
* celle des domaines, sous domaines, thèmes ou sous thèmes. * *
******************************************************************************/
Static Public function get_domaine_liste($id,$niveau)
{
switch($niveau)
{
case'domaines':
return $this->get_domaines();
break;
case'sous-doamines':
return $this->get_sousdomaines($id);
break;
case'themes':
return $this->get_themes($id);
break;
case 'sous-themes':
return $this->get_sousthemes($id);
break;
}
}
/********************************constructeur***********************************
* •Appel du constructeur parent ; *
* •Initialisation des fonctionnalités en fonction des droits utilisateurs *
* (seuls les administrateurs accèdent aux fonctionnalités d’ajout, *
* modification et suppression d’un domaine). *
* •Appel de la méthode init_domaine. *
*******************************************************************************/
public function __construct($table = 'domaine')
{
parent::__construct($table);
global $page;
if($page->get_userRole() < 3)
{
$this->edition = true;
$this->ajout = true;
}
$this->init_domaine();
}
private function init_domaine()
{
$this->intitule_table='domaine';
$this->action = 'index.php?section=admin&action=domaines';
$this->params =array('action'=>'domaines','section'=>'admin');
$this->libelles['contenu'] ='doamine';
$this->defaultParams['order'] = 'domaine,sousdomaine,theme,soustheme';
/***********************************************************************
* description de la table *
* liste des champs pour les formulaires d'ajout / modification *
* et des colonnes de l'affichage liste *
************************************************************************/
/* */
$this->add_field('libellefr','Libellé français','text','maxlength=255 size=70',false);
$this->add_field('libelleen','Libellé anglais','text','maxlength=255 size=70',false);
$this->add_fk_field('domaine','Domaine','id','domaine','libellefr',true) ;
$this->add_fk_field('sousdomaine','Ss-domaine','id','domaine','libellefr',true) ;
$this->add_fk_field('theme','Thème','id','domaine','libellefr',true) ;
$this->add_fk_field('southeme','Ss-thème','id','domaine','libellefr',true) ;
}
[/php]