Pourquoi la boucle ne me retourne rien du tout?
Alors que quand je vais voir dans phpmyadmin, il y a bien les lignes?
Je souhaiterais récupérer la largeur et la hauteur entrées en base de tous mes logos pour ensuite pouvoir les modifier sans avoir a reup le logo sur chaque article.
C’est qu’un critère empêche le retour. Soit un critère explicite inadéquat genre {statut=publie} (au hasard) soit un critère implicite automagique ajouté par SPIP et qu’il faudrait désactiver.
Avec ?var_mode=debug , demande donc à voir quelle est la requête générée par SPIP pour la boucle, en cliquant sur l’onglet « résultat » de la boucle, et tu verras exactement quels critères MYSQL sont utilisés et tu pourras trouver quel critère SPIP tu dois désactiver ou corriger… au besoin en t’aidant de phpMyAdmin, puisque tu l’utilises déjà, pour la compréhension mise au point vérification.
Je viens d’utiliser le debug et voici ce que j’ai obtenu dans le champ résultats:
SELECT documents.id_document
FROM spip_documents AS `documents`
WHERE (documents.taille > 0 OR documents.distant='oui')
AND (documents.id_article = 1916)
AND (documents.mode = 'logoon')
AND (documents.statut = 'prop')
Il y a bien dans la table cette ligne mais spip ne me renvoie rien dans la boucle…
Graphie, il s’agit des logos des articles et oui je fais la boucle sur le bon objet.
Peut être te trompes tu en disant « Il y a bien dans la table cette ligne ».
Pour le savoir, que donne l’exécution de cette requête exacte dans phpmyadmin ?
Et sinon c’est que ton squelette ne fait rien du résultat attendu, soit qu’il ne le calcule pas du tout soit qu’il ne l’affiche pas. Ça peut être à cause du contenu de cette boucle (ou peut être de la boucle englobante mais ça m’étonnerait puisque le debugueur fournit un id_article)
Alors effectivement cette boucle fonctionne sans problème.
Par contre, dès que j’essaie de l’englober dans une boucle article (en rajoutant l’id article bien sûr), ca ne marche plus…
Le problème semble venir de la jointure effectivement. Quand je fais avec ta boucle, ca ne fonctionne toujours pas…
Alors que pour tous les autres types de documents, je n’ai pas ce problème de jointure.
La requête générée par la boucle des documents est bonne, cf :
SELECT documents.fichier, documents.largeur, documents.hauteur
FROM spip_documents AS `documents`
INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document )
WHERE (documents.taille > 0 OR documents.distant='oui')
AND (L1.id_objet = 108)
AND (L1.objet = 'article')
AND (documents.mode = 'logoon')
Quand je saisie la même boucle chez moi, je n’ai que « article » suivi de l’id de l’article qui s’affiche.
Et le résultat donne ca:
SELECT documents.fichier, documents.largeur, documents.hauteur
FROM spip_documents AS `documents`
WHERE (documents.taille > 0 OR documents.distant='oui')
AND (documents.id_article = 1916)
AND (documents.mode = 'logoon')
C’est bien la fameuse ligne de jointure qui me manque…
Je suis en 4.1.2 pour ma part.
Est ce possible qu’il ai un plugin qui interfère sur la jointure naturelle de spip?
Ha ben vi, quand on soupçonne un bug de SPIP la première chose à faire est de tester sans aucun plugin Ensuite, si le bug n’est plus présent, il faut réactiver les plugins un à un entre chaque test pour trouver le fautif.