Bonjour à tous,
Mon problème déjà signalé en décembre est réapparu ce matin.
Un article programmé pour le jeudi 23 janvier s’est affiché à la une du site ce matin.(j’ai pu vérifier dans la base de données que la date de l’article est bien au 2020-01-23 07:00:00)
Les résultats remontés par la boucle ne semblent plus prendre en compte le fait que les articles postdatés ne doivent pas être sélectionnés.
Il me semble que ce problème est apparu avec la mise à jour de la première version 3.7.x et n’a pas été réglé par les différentes mises à jour de maintenance.
Je viens donc d’ajouter un critère supplémentaire {date<=#ENV{date}} sur la boucle, j’espère que cela pourra empêcher l’affichage par erreur d’articles postdatés.
Je vous tiendrais informé.
Au cas où vous auriez d’autres pistes, voici la boucle, le code généré et les résultats avant la correction.
Merci de votre aide.
Julie
// La boucle
<B_articles_actus>
<BOUCLE_articles_actus(ARTICLES) {!par date} {enfants 12} {enfants #ENV{id_rubrique,12}}{0,#GET{nb_actus}} {date<=#ENV{date}}>
(#TITRE|supprimer_numero)
] [(#SOUSTITRE)
] [(#ENV{id_rubrique}|oui) [publié le (#DATE|affdate) ] [(#DESCRIPTIF|sinon{#INTRODUCTION|couper{150}}|ptobr)
] ]// Le code généré ----------
SELECT articles.date, articles.id_article, articles.id_rubrique, articles.titre, articles.soustitre, articles.descriptif, articles.texte, articles.chapo, articles.lang
FROM spip_articles AS `articles`
WHERE (articles.statut = 'publie')
AND articles.date<'2020-01-23 08:00:00'
AND ((articles.id_rubrique = 12) OR (articles.id_article IN (SELECT * FROM(
SELECT rl.id_objet
FROM spip_rubriques_liens as rl
WHERE rl.id_parent=12 AND rl.objet='article') AS subquery)))
AND ((articles.id_rubrique = 12) OR (articles.id_article IN (SELECT * FROM(
SELECT rl.id_objet
FROM spip_rubriques_liens as rl
WHERE rl.id_parent=12 AND rl.objet='article') AS subquery)))
ORDER BY articles.date DESC
LIMIT 0,2
// Les résultats ----------### 1 sur 2
date => 2020-01-23 07:00:00
id_article => 1645
id_rubrique => 12
titre => Quartier Rousseau-Léger
soustitre => Réunion publique mercredi 29 janvier 2020 à 18h30 ouverte à tous les habitants du quartier - Salle Alain Bombard.
descriptif =>
texte => Le conseil de quartier « Rousseau-Léger » Tous les habitants du Conseil de quartier Rousseau-Léger sont conviés à une réunion publique où seront (…)
chapo =>
lang => fr
2
date => 2020-01-13 08:00:00
id_article => 527
id_rubrique => 12
titre => Recensement de la population 2020
soustitre => Répondez sur le-recensement-et-moi.fr, c’est encore plus simple !
descriptif => Du 16 janvier au 22 février 2020, le recensement de la population aura lieu à Berre l’Etang, comme dans l’ensemble des communes de 10 000 habitants (…)
texte => Qui sera recensé ? La collecte se déroule par sondage auprès d’un échantillon de 8% de la population dispersé sur l’ensemble du territoire communal. (…)
chapo =>
lang => fr
Début du message réexpédié :
De: Pôle Web <poleweberre@gmail.com>
Objet: Rép : [Spip] Articles postdatés qui apparaissent en avance sur le site
Date: 13 décembre 2019 10:55:07 UTC+1
Bonjour,
Un article qui n’aurait pas du est apparu à la une ce matin … il semble en effet qu’il y ait un problème dans le sql généré.
SELECT articles.date, articles.id_article, articles.id_rubrique, articles.titre, articles.soustitre, articles.descriptif, articles.texte, articles.chapo, articles.lang FROM spip_articles AS `articles` WHERE (articles.statut = 'publie') AND articles.date<'2019-12-16 07:00:00' AND ((articles.id_rubrique = 12) OR (articles.id_article IN (SELECT * FROM( SELECT rl.id_objet FROM spip_rubriques_liens as rl WHERE rl.id_parent=12 AND rl.objet='article') AS subquery))) AND ((articles.id_rubrique = 12) OR (articles.id_article IN (SELECT * FROM( SELECT rl.id_objet FROM spip_rubriques_liens as rl WHERE rl.id_parent=12 AND rl.objet='article') AS subquery))) ORDER BY articles.date DESC LIMIT 0,2Le 10 déc. 2019 à 09:53, Pôle Web <poleweberre@gmail.com> a écrit :
Bonjour,
@Bernard, Merci de ton retour. Oui le serveur est à la bonne heure et au bon jour …
@RealET, je vais attendre que le problème se reproduise pour reprendre les explorations … je vous tiendrais informés de ce que je constaterais …
Merci à tous les 2 de votre aide. Bonne journée.
JulieLe 9 déc. 2019 à 11:44, Bernard Blazin <blazin.bernard@gmail.com> a écrit :
Bonjour,
Est ce que tu es sur que ton serveur est à la bonne heure et au bon jour?
Le 09/12/2019 à 10:58, RealET a écrit :
Pôle Web a écrit le 09/12/2019 à 10:36 :
Bonjour RealET
Voici le sql généré par la boucle
SELECT articles.date, articles.id_article, articles.id_rubrique, articles.titre, articles.soustitre, articles.descriptif, articles.texte, articles.chapo, articles.lang
FROM spip_articles ASarticles
WHERE (articles.statut = ‹ publie ›)
AND articles.date<‹ 2019-12-07 07:00:00 ›
AND ((articles.id_rubrique = 12) OR (articles.id_article IN (SELECT * FROM(
SELECT rl.id_objet
FROM spip_rubriques_liens as rl
WHERE rl.id_parent=12 AND rl.objet=‹ article ›) AS subquery)))
AND ((articles.id_rubrique = 12) OR (articles.id_article IN (SELECT * FROM(
SELECT rl.id_objet
FROM spip_rubriques_liens as rl
WHERE rl.id_parent=12 AND rl.objet=‹ article ›) AS subquery)))
ORDER BY articles.date DESC
LIMIT 0,2La requête a l’air bonne à première vue
Le
AND articles.date<‹ 2019-12-07 07:00:00 ›
dit bien de prendre les articles dont la date de publication est antérieure à une certaine date (qui devait être dans le futur quand tu as fait la manipulation)
Reste à regarder avec PhpMyAdmin quelle est la date de l’article dont tu penses qu’il ne devrait pas être visible.
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.netArchives : https://www.mail-archive.com/spip@rezo.net/maillist.html
Infos : https://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
Irc : de l’aide à toute heure : http://spip.net/irc