Jump to content

invalid argument ... in tools.php


Recommended Posts

Bonjour,

Les clics sur mes produits ne me donnent que 3 avertissements concernant le fichier classes/tools.php
Voici ces avertissements et les lignes concernées du fichier tools.php:
Warning: Invalid argument supplied for foreach() in //www/classes/Tools.php on line 748
Warning: uasort() [function.uasort]: The argument should be an array in //www/classes/Tools.php on line 753
Warning: Invalid argument supplied for foreach() in //www/classes/Tools.php on line 754

line748: foreach($array as &$row)
$row['price_tmp'] = Product::getPriceStatic($row['id_product'], true, ((isset($row['id_product_attribute']) AND !empty($row['id_product_attribute'])) ? intval($row['id_product_attribute']) : NULL), 2);
if(strtolower($orderWay) == 'desc')
uasort($array,"Tools::cmpPriceDesc");
else
line 753: uasort($array,"Tools::cmpPriceAsc");
line 754: foreach($array as &$row)

J'ai vu un sujet très ressemblant sur le forum anglais mais les échanges ne donnent pas la solution.
Pourriez-vous orienter ma recherche car je me casse la tête ?

Link to comment
Share on other sites

Merci de votre réaction.
Les warnings sont systématiquement générés chaque fois qu'on clique sur les produits.
Cela se produit sur le serveur, chez OVH.
Le site en question: collections-animaux.com

Si je rechercheles mots clés:
invalid argument classes tools
sur google, je vois des sites dont l'affichage en cache obtient les mêmes avertissements.
Y aurait-il un mauvais réglage de cache ?
Trouve-t-on cela du côté de Smarty ?

Link to comment
Share on other sites

Merci bien pour cette piste.
Le site a été fait en 2009 avec cette version 1.1
Mais il a fonctionné correctement jusqu'au mois de mai 2011: quelle pourrait être la raison de cette évolution ? Je pense que l'hébergeur n'y est pour rien mais sans en être sur...

Link to comment
Share on other sites

Je ne m'occupe de de ce site que depuis quelques jours comme ami du propriétaire et pour le dépanner.
J'ajoute qu'avec wampserver5 le même problème est rencontré sur mon ordi en local.

Ce que je constate est qu'à la date du 27 mai 2011 -qui semble correspondre à l'apparition du problème-, les fichiers suivants ont été enregistrés (modifiés ?):
classes/tools (la seule modif dans classes)
config.inc
settings.inc
et 1 fichier dans tools/smarty/compile qui se termine par maintenance.tpl (format php).
Mais je suis incapable de savoir ce qui a été modifié dans ces fichiers.

Link to comment
Share on other sites

Je viens d'essayer la substitution du classes/Tools de la version 1.1 par celle de la version en cours: la page d'accueil ne s'affiche plus.
Le message affiché dit que Classes/Tools n'est plus trouvé dans le fichier init.php à la ligne 21 (* @return string Password)
J'ai modifié dans init.php class ToolsCore en class Tools pour faire un essai et c'est un autre message qui s'affiche.
....
En fait les deux versions semblent bien trop différentes.

Link to comment
Share on other sites

Je n'ai pas de sauvegarde et je ne pense pas qu'il y en ait une.

J'ai remplacé la partie de code de classes/Tools indiquée dans les 3 messages par celle de la version actuelle. Il y a quelques différences de code mais cela n'a rien résolu et les 3 messages sont encore là.

Cela ne pourrait-il pas venir d'un défaut dans la base de données puisque les messages indiquent, si je comprends bien, que l'on est face à un problème de tableau (The argument should be an array) ?

Encore merci pour vos conseils et pistes.
J'avoue que je ne sais quoi faire.

Link to comment
Share on other sites

Voici la copie du passage de classes/Tools auxquels les 3 messages (voir haut de page) font référence. J'ai ajouté les lines.
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
static public function orderbyPrice(&$array, $orderWay)
{
line 748 foreach($array as &$row)
$row['price_tmp'] = Product::getPriceStatic($row['id_product'], true, ((isset($row['id_product_attribute']) AND !empty($row['id_product_attribute'])) ? intval($row['id_product_attribute']) : NULL), 2);
if(strtolower($orderWay) == 'desc')
uasort($array,"Tools::cmpPriceDesc");
else
line 753 uasort($array,"Tools::cmpPriceAsc");
line 754 foreach($array as &$row)
unset($row['price_tmp']);
}
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

Faut-il plus ?

Cordialement

Link to comment
Share on other sites

J'ai trouvé l'adresse où télécharger les différentes versions de Prestashop et en particulier la v1.1:
http://code.google.com/p/prestashop/downloads/detail?name=prestashop_1.1.zip&can=2&q;=

Malheureusement le remplacement de classes/Tools ne modifie pas l'affichage déficient. Les deux tools (celui du site et celui de la version zip) sont apparemment identiques, en tout cas en ce qui concerne les lignes citées par les avertissements.

>:(

Link to comment
Share on other sites

RE:

Je n'ai toujours pas trouvé la solution.

Je fais l'hypothèse que les trois avertissements sont peut-être sans conséquence et je les fais disparaitre en réglant sur Off la ligne de config.inc:

@ini_set('display_errors', 'off')

 

Reste le problème de l'affichage des produits qui ne se fait toujours pas, aussi bien en ligne qu'avec Wampserver en local. J'ai bien le nombre de produits mais pas les produits ni leurs images et j'obtiens aussi l'affichage: Il n'y a pas de produit dans cette catégorie.

 

Le forum donne la piste du .htaccess mais j'ai beau faire plein des modifs, rien n'améliore l'affichage des urls simplifiées des pages produits.

Bizarrement (pour moi)les urls simplifiées du module Informations commencent par "content" et fonctionnent correctement.

 

Une piste ?

Merci d'avance.

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour, je reprends le fil.

 

Après beaucoup d'essais (versions de PS plus récentes, réinstallations en local) je ne progresse pas d'un pouce. Toujours le "Il n'y a pas de produit dans la catégorie".

 

Je vois que la table ps_product_lang a un problème:

#145 Table...is marked as crashed and should be repaired.

La corruption de cette table peut-elle expliquer le défaut d'affichage ?

Si oui, comment faire la réparation (dans phpMyAdmin ?)

 

Merci de tout conseil.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...