Page 1 sur 1

explicatin d'une class

Posté : 14 juin 2013, 12:56
par Nadege21
Bonjour
j'ai hérité d'un développement dont je ne comprend pas grand chose, et sur lequel je dois faire une petite modification.
je dois remettre l'affichage des sous catégories d'un menu par ordre d'id.
le hic c'est que je ne vois pas où il y a un appel à la base pour chercher les sous catégories.
est ce que quelqu'un peut m'expliquer le code suivant?
surtout les functions return menu francais
merci beaucoup
Nadege
class menu_front {
    
    public static function return_menu($lang = "fr") {
        if($lang == "en") {
            return self::return_menu_anglais();
        } else {
            return self::return_menu_francais();
        }
        
    }
    
    private static function return_menu_anglais() {
        $categorie = categorie_front::getlistcategorie("en");
        $out = array();
        
        foreach ($categorie as $v) {
            
            $v['child'] = categorie_front::getlistsouscategorie_et_article($v['id'],"en");
            $out[] = $v;
        }
        
        
        return $out;
    }
    
    private static function return_menu_francais() {
        
        $categorie = categorie_front::getlistcategorie();
        
        $out = array();
        
        foreach ($categorie as $v) {
            
            $v['child'] = categorie_front::getlistsouscategorie_et_article($v['id']);
            $out[] = $v;
            
        }
        
        
        return $out;
    }
    

Re: explicatin d'une class

Posté : 14 juin 2013, 14:32
par jojolapine
Bonjour,

Les catégories sont à priori récupérée dans la classe categorie_front via la méthode getlistcategorie()
L'appel à la base de donnée devrait donc se trouver dans cette méthode.

Pour les sous-catégories ça devrait être la méthode getlistsouscategorie_et_article dans la même classe.

Cordialement,

Re: explicatin d'une class

Posté : 14 juin 2013, 15:07
par Nadege21
Merci de ta réponse ca m'a permis de trouver le code je crois
mais là encore je ne vois pas ou est l'affichage
    
public static function getlistcategorie($lang = "fr") {      
        $re = mysql::select(self::$base, "*", null, NULL);
          if($lang == "en") {
            $reanglais=array();
            foreach($re as $k => $value) {
            $a = mysql::select(self::$base_anglais, "*", "id_categorie=".$value['id'], null);
            $a[0]['id'] = $value['id'];
            $reanglais[] = $a[0];
            
            }
            $buff;
//            foreach ($reanglais as $k => $v) {
//                $buff[$k]['id'] = $v['id_categorie'];
//                $buff[$k] = $v;
//           }
           
//           return $buff;
            return $reanglais;
        } else {
            return $re;
        }
        
    }
je suppose que c'est dans la ligne
$a = mysql::select(self::$base_anglais, "*", "id_categorie=".$value['id'], null);
mais je ne sais pas comment ecrire order by id asc

Encore merci
Nadège

Re: explicatin d'une class

Posté : 14 juin 2013, 15:12
par jojolapine
La sélection semble à priori se trouver « derrière » cette ligne :
        $re = mysql::select(self::$base, "*", null, NULL);
Il te faut donc maintenant poursuivre en cherchant à quoi ressemble la méthode select de la classe mysql :)
Tu pourras ainsi voir si un paramètre « d'ordonnancement » est possible et si oui via quelle syntaxe.

Re: explicatin d'une class

Posté : 14 juin 2013, 15:20
par Nadege21
oui mais des select il y en a une flopée sur le site donc je ne sais pas trop comment trouver celui là.

parce que $a = mysql::select(self::$base_anglais, "*", "id_categorie=".$value['id'], null);
ça veut pas dire qu'on chercher dans base_anglais l'id_catefgorie=$id ?? ? c'est pas un select ca?

Re: explicatin d'une class

Posté : 14 juin 2013, 15:35
par jojolapine
A priori le premier mysql::select(...) va chercher toutes les entrées françaises (que l'on demande de l'anglais ou du français).
Et si jamais on demande de l'anglais, alors on parcours les résultats français pour récupérer l'équivalent anglais...

Mais pour savoir si l'appel à mysql::select permet où non de passer un « ordre » il est impératif de trouver la méthode d'origine :)

Une recherche dans les fichiers sur «class mysql» devrait pouvoir faire l'affaire ?

Re: explicatin d'une class

Posté : 14 juin 2013, 16:03
par Nadege21
ok
voilà donc la fonction secelct que j'ai trouvé
public static function select($from,$what,$where,$by) {
		
		$sql = "SELECT ".$what." FROM ".$from."".self::PutWhereToSelect($where)."".self::PutByToSelect($by);
		//echo $sql;
		$result = mysql_query($sql);
		$re = array();
		while($ok = mysql_fetch_assoc($result)) {
			$re[] = self::arraytoutf8($ok);
		}
		//echo $sql;

Re: explicatin d'une class

Posté : 14 juin 2013, 16:08
par jojolapine
Et donc ?

Qu'est-ce qu'elle nous apprend ? est-que le dernier paramètre $by pourrait être utile pour faire changer l'ordre à votre avis ?
à quoi correspond « self::PutByToSelect » ?
que donne la requête SQL si on passe un paramètre $by ?

il faut aussi chercher un petit peu par soi même ;)

Cordialement,

Re: explicatin d'une class

Posté : 14 juin 2013, 16:41
par Nadege21
Je crois avoir trovué un début de solution mais ce n'est pas le résultat escompté
j'ai mis
$re = mysql::select(self::$base, "*", null, "id desc");
ca marche mais pas pour les sous catégorie ca marche pour les catégories

Re: explicatin d'une class

Posté : 14 juin 2013, 16:44
par Spols
fait de même dans la méthode getlistsouscategorie_et_article

Re: explicatin d'une class

Posté : 15 juin 2013, 10:18
par Nadege21
Merci pour l'aide précieuse, tout fonctionne et en plus j'ai compris le mécanisme
Bon week end
Nadege