daftac
Avril 18, 2024, 10:54
1
Bonjour,
J’essaye de recharger les élements d’une facture et encore mieux de récupérer un attribut supplémentaire du tiers d’une facture à partir du champs calculé d’un attribut supplémentaire de facture (lignes).
Je m’explique :
Dans la configuration du module Factures, j’ajoute dans un attribut supplémentaire (lignes) le champ calculé suivant :
var_dump($objectoffield)
Résultat, il me ressort parfaitement toutes les infos de l’objet et notamment ceux ci :
[« fk_facture »]=>
string(3) « 315 »
[« fk_product »]=>
string(2) « 20 »
315 correspond bien à l’id de ma facture et 20 l’id du produit par rapport à cette ligne.
Je remplace le champ calculé par celui ci :
(($reloadedobj = new Product($db)) && ($reloadedobj->fetch($objectoffield->fk_product))) ? var_dump($reloadedobj) : ‹ Produit pas trouvé ›
Aucun problème, j’ai bien mon objet Produit par rapport à une ligne de facture qui m’est retourné.
Je remplace le champ calculé par celui ci :
(($reloadedobj = new Facture($db)) && ($reloadedobj->fetch($objectoffield->fk_facture))) ? var_dump($reloadedobj) : ‹ Facture pas trouvée ›
J’ai un traitement de quelques secondes pour m’afficher une erreur 500 à la fin.
Sauriez-vous pourquoi l’objet Facture n’est pas récupérer comme celui de Product ?
hello, peux-etre que la classe Facture n’est pas chargé par un include (alors que la Product l’est)
daftac
Avril 18, 2024, 11:51
3
D’après ce que j’arrive à comprendre du code, j’ai l’impression qu’elle est chargée de la même manière.
il faut sans doute investiguer plus précisement ce qu’il y a derrière l’erreur 500…
daftac
Avril 18, 2024, 12:16
5
En effet, j’y avais pas pensé.
J’ai 2 erreurs 500 :
2024-04-18 02:04:38 Error xxx.xxx.xxx.xxx POST /compta/facture/card.php?id=316 HTTP/1.0
2024-04-18 02:04:42 Error xxx.xxx.xxx.xxx AH01071: Got error ‹ PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16384 bytes) in /var/www/vhosts/website.com/www/core/db/mysqli.class.php on line 330 ›, referer: https://website.com/compta/facture/card.php?facid=316
Hmmm, ca m’a plus avancé que ça. La ligne 330 dans mysqli.class.php m’indique pas grand chose de plus. Ca à l’air de bouffer la mémoire ce code.
Sinon, est-il possible d’exécuter une requête sql dans un champ calculé ?
ksar
Avril 18, 2024, 8:32
6
Bonjour,
Vous pouvez toujours tenter d’augmenter la mémoire PHP de 128M à 256M
memory_limit = 256M
1 « J'aime »
daftac
Avril 20, 2024, 10:56
7
Bonjour,
J’ai réussi à avoir ce que je souhaitais en utilisant la fonction fetchNoCompute :
(($reloadedobj = new Facture($db)) && ($reloadedobj->fetchNoCompute($objectoffield->fk_facture)) && ($secondloadedobj = new Societe($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->socid) > 0)> 0 ? ($secondloadedobj->array_options[‹ options_showppn ›] == 1 ? ( (($reloadedobj = new Product($db)) && ($reloadedobj->fetch($objectoffield->fk_product))) ? ($reloadedobj->array_options[‹ options_xxxxxx ›] ==1 ? ( ‹ blabla ›: ‹ notblabla › ) : ‹ Erreur › ) : ‹ › ) : ‹ Erreur ›)
1 « J'aime »