[RESOLU] explicatin d'une class

Eléphanteau du PHP | 13 Messages

14 juin 2013, 12:56

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;
    }
    

ViPHP
ViPHP | 3607 Messages

14 juin 2013, 14:32

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,

Eléphanteau du PHP | 13 Messages

14 juin 2013, 15:07

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

ViPHP
ViPHP | 3607 Messages

14 juin 2013, 15:12

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.

Eléphanteau du PHP | 13 Messages

14 juin 2013, 15:20

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?

ViPHP
ViPHP | 3607 Messages

14 juin 2013, 15:35

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 ?

Eléphanteau du PHP | 13 Messages

14 juin 2013, 16:03

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;

ViPHP
ViPHP | 3607 Messages

14 juin 2013, 16:08

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,

Eléphanteau du PHP | 13 Messages

14 juin 2013, 16:41

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

Mammouth du PHP | 1967 Messages

14 juin 2013, 16:44

fait de même dans la méthode getlistsouscategorie_et_article
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 13 Messages

15 juin 2013, 10:18

Merci pour l'aide précieuse, tout fonctionne et en plus j'ai compris le mécanisme
Bon week end
Nadege