Re: Problème WHERE

JLuc <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <[email protected]>
C'est surtout le calcul de ces critères qui a foiré son calcul
en laissant les quotes autour de "'='" et "'sql_quote(..)'"
et après c'est normal que ça provoque une erreur.

Je demandais hier sur irc : quand tu cites le message d'erreur
il y a ce qui ressemble à la pile d'appel :
"[sql_select(), calculer_select(), objet_test_si_publie(), inc_determiner_statut_document(), document_instituer(), 
medias_post_edition(), etc ]
C'est étonnant ça : c'est SPIP qui a gardé une trace de la pile d'appel ayant calculé les critères
et qui la présente ainsi ou c'est toi ?

Cette pile c'est justement ce qui semble construire les critères.
Ça décrit, dans le pipeline post_edition, le calcul du statut du document
à partir du statut de l'objet auteur il est lié.

objet_test_si_publie appelle instituer_boucle
et on dirait que instituer_boucle se trompe :
- Dans le cas où il y a une exception (cas 'visiteur'), ça retourne prématurément
et ça n'appelle pas fabrique_jointures et ça se passe bien
- mais dans le cas administrateur, ça appelle fabrique_jointures
et c'est un peu comme si fabrique_jointures était alors appelé avec $echap=true
et du coup le calculer_select se plante après


Note que dans ton message d'erreur, c'est id_auteur 21 qui apparaît
et non 13 comme tu le dis. Ça change quelque chose ?

JL


Le 14/04/2021 à 01:06, pierre laszczak a écrit :
> C'est entre quote car ça doit génère du code à interpréter. Il me semble que les fonctions calculer_XX s'exécutent dans 
> l'environnement de compilation pour produire du php.
> Est-ce que c'est une erreur bloquante qui t'empêche de joindre le document?
> 
> Vu le code, je dirai que c'est une requête générée par une boucle. Je pense plutôt que ça vient d'un critère foireux ou 
> d'un mauvais paramètre passer en critère.
> T'as pas une Boucle *AUTEURS* avec une jointure qui se ferait sur documents_liens et articles? (AUTEURS 
> documents_liens){objet?} ou un truc du genre (pour afficher un résumer de l'upload par exemple...)
> 
> Perso  je vois pas où pourrait se cacher cette requête dans l'api joindre_document...
> 
> Bon courage & bonne nuit ;)
> Le mer. 14 avr. 2021 à 00:11, tofulm <[email protected] <mailto:[email protected]>> a écrit :
> 
>     la fonction calculer_mysql_where($where)
> 
>     si elle prend en entrée un array :
> 
>     Array (
> 
>     [0] => '='
> 
>     [1] => 'L1.objet'
> 
>     [2] => sql_quote('article')
> 
>     )
> 
> 
>     va produire :
> 
>     $arg = "'L1.objet'";
> 
>     $arg2 = "sql_quote('article')";
> 
>     $op = "'='";
> 
>     Donc
> 
>     return "($arg $op $arg2)"; => donne : ('L1.objet' '=' sql_quote('article'))
> 
>     Pourquoi dans la valeur d'entrée le = et L1.objet sont entre quote ?
> 
>     Je continue mes investigations
> 
> 
> 
> 
>     -- 
> 
>     tofulm
> 
>     _______________________________________________
>     liste: https://listes.rezo.net/mailman/listinfo/spip-dev <https://listes.rezo.net/mailman/listinfo/spip-dev>
>     doc: https://www.spip.net/ <https://www.spip.net/>
>     dev: https://core.spip.net/ <https://core.spip.net/>
>     irc://irc.freenode.net/spip <http://irc.freenode.net/spip>
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.