Nb Categories

6 messages dans ce sujet

Posté(e) · Signaler ce message

Dans ma migration de 6.31 à 7.21 www.animalins.fr/animalinsv7 si je met display_nb_product à oui (1) mon site se plante et j'ai page blanche. J'ai cherché un bon moment et rechargé un peel_configuration pour trouver le bogue ?

Merci.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

 

Nous ne connaissons pas de problème sur cette configuration. Pouvez-vous afficher le message d'erreur ? Sinon avez-vous accès au logs d'erreur de votre hébergement ? Il faut connaitre le message d'erreur PHP pour comprendre l'origine de votre problème.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Je fais le test sur une version en local et voila le message:

 

(!) Fatal error: niveau d'imbrication de fonction maximum de '100' atteint, avorter! dans C: \ wamp \ www \ animalinsv7 \ lib \ fonctions \ fonctions.php sur la ligne 134

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

A la lecture de ce message d'erreur, qui vient d'une limitation définie par la configuration de votre serveur :
- soit votre arborescence est énorme, et auquel cas il faut que vous adaptiez la configuration de votre serveur
- soit vous avez une incohérence dans votre arborescence, avec par exemple une catégorie qui est parente d'une catégorie qui est directement ou indirectement sa propre parente => mettez de l'ordre dans ce cas dans vos catégories pour régler cette incohérence

Et vous pouvez aussi utiliser une version que je viens d'adapter de la fonction get_sons_cat suivante pour protéger contre ce type d'incohérence de données (=> code à remplacer dans lib/fonctions/fonctions) :
 

/**
 * Récupère la liste des fils d'une catégorie à partir d'une liste ordonnée
 *
 * @param mixed $all_parents_with_ordered_direct_sons_array
 * @param integer $catid
 * @param array $ids_array Liste à compléter
 * @return $ids_array Liste complétée
 */
function get_sons_cat($all_parents_with_ordered_direct_sons_array, $catid, $ids_array = array())
{
 // On met une protection au cas où une catégorie parente ait un enfant direct ou indirect qui est son propre parent
 static $studied_cats_array;
 if(empty($studied_cats_array[$catid])) {
  foreach ($all_parents_with_ordered_direct_sons_array[$catid] as $son_catid) {
   $ids_array[] = $son_catid;
   if (!empty($all_parents_with_ordered_direct_sons_array[$son_catid])) {
    $ids_array = get_sons_cat($all_parents_with_ordered_direct_sons_array, $son_catid, $ids_array);
   }
  }
  $studied_cats_array[$catid] = true;
 }
 return $ids_array;
}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Ok merci jai effectivement 2 à 3 niveaux dans mes catégories je vais vérifier ma migration et prendre votre code en compte.

 

J'ai modifié fonction et voila ce que je recois ?

 

( ! ) Notice: Erreur SQL 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND p.etat='1' AND p.site_id IN (0,1)' at line 4 - Page : /animalinsv7/ - IP ::1 - SELECT COUNT(*) AS this_count FROM peel_produits p INNER JOIN peel_produits_categories pc ON pc.produit_id = p.id WHERE pc.categorie_id IN () AND p.etat='1' AND p.site_id IN (0,1) - Error number in C:\wamp\www\animalinsv7\lib\fonctions\database.php on line 239 Call Stack # Time Memory Function Location 1 0.0010 271432 {main}( ) ..\index.php:0 2 0.4980 11287384 include( 'C:\wamp\www\animalinsv7\modeles\anima2\haut.php' ) ..\index.php:79 3 0.5117 11424976 get_modules( ) ..\haut.php:84 4 0.5421 11615624 affiche_menu_recherche( ) ..\fonctions.php:538 5 0.5434 11666776 get_categories_output( ) ..\display.php:1447 6 0.5518 11683920 get_recursive_items_display( ) ..\display.php:656 7 0.5732 11735872 get_recursive_items_display( ) ..\display.php:759 8 0.5733 11738224 calcul_nbprod_parcat( ) ..\display.php:751 9 0.5747 11739616 query( ) ..\fonctions.php:196 10 0.5999 11741072 trigger_error ( ) ..\database.php:239

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

effectivement la fonction retournait un tableau vide, ce qui posait provoquait une erreur SQL.
Ci dessous la version corrigée :    
 

function get_sons_cat($all_parents_with_ordered_direct_sons_array, $catid, $ids_array = array())
{
    // On met une protection au cas où une catégorie parente ait un enfant direct ou indirect qui est son propre parent
    static $studied_cats_array;
    $hash = md5(serialize($all_parents_with_ordered_direct_sons_array));
    if(!count($ids_array)) {
        // Si on relance la fonction avec la même liste $all_parents_with_ordered_direct_sons_array
        unset($studied_cats_array[$hash]);
    }
    if(empty($studied_cats_array[$hash][$catid])) {
        $studied_cats_array[$hash][$catid] = true;
        foreach ($all_parents_with_ordered_direct_sons_array[$catid] as $son_catid) {
            $ids_array[] = $son_catid;
            if (!empty($all_parents_with_ordered_direct_sons_array[$son_catid])) {
                $ids_array = get_sons_cat($all_parents_with_ordered_direct_sons_array, $son_catid, $ids_array);
            }
        }
    }
    return $ids_array;
}

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping