[spip-dev] dates dans spip 2.0 beta 2 [12813]

Bonjour,

j'ai une boucle

  <!-- Dicton du jour (recuperer la date sans l'annee) -->
  <BOUCLE_dicton(ARTICLES) {id_rubrique=NN} {date_redac == #ENV{mois,.*}}>
  <a href="#URL_ARTICLE">dicton du jour ([(#DATE_REDAC|jour)]&nbsp;[(#DATE_REDAC|nom_mois)])&nbsp;:</a>

  [(#DESCRIPTIF)][(#CHAPO)]
</li>
  </BOUCLE_dicton>

et, dans mes_fonctions.php, ce :

$contexte_inclus['mois'] = $_GET['mois'] = '.{4}'.date('-m-d');

en passant de la 1.9.x à la beta 2, j'ai l'ensemble de mes 366 articles qui s'affichent sous la date du 1er~janvier

d'abord l'article du jour, puis les autres par id_article
en fait, l'article du jour le 299 (la Saint Bruno ou... 15 vendémiaire) a été le premier saisi de cette rubrique.
  Est-ce un hasard ou a-t'il un lien ? Ou le bug est-t-il que je tente le passage en 2/0 beta ce jour ci :slight_smile:
il n'y a pas de problème en SPIP 1.9.3 dev [11250]
voir :
http://hortical.com/
et
http://cybertaria.org/hortical2/

Claude

Il NE FAUT PAS compter sur les globales.

Committo,Ergo:Sum

damned, va falloir apprendre le php !

bon, je vais fouiller

Claude

bonjour,

je reviens avec un problème de dates :

[(#DATE_REDAC|affdate)] donne
6 octobre 2008 pour un article daté du 6 octobre 2008
mais
1er janvier 1970 pour un article daté du 6 octobre 0

[la 11250 (1 9 3 dev) me donnait bien 6 octobre]

Claude

Bonjour,

donc, je me suis passé de php pour répondre au rappel d'Emmanuel et j'ai une boucle simple :

<BOUCLE_dicton(ARTICLES) {id_rubrique=17} {jour_redac=#DATE|jour} {mois_redac=#DATE|mois}>
  <a href="#URL_ARTICLE">dicton du jour ([(#DATE_REDAC|jour)]&nbsp;[(#DATE_REDAC|nom_mois)])&nbsp;:</a>
  [(#DESCRIPTIF)][(#CHAPO)]
  </BOUCLE_dicton>

le problème est que mes date_redac ont une année à "0", or depuis la 2.0.0 [(#DATE_REDAC|affdate)] donne 6 octobre 2008 pour un article daté du 6 octobre 2008 mais 1er janvier 1970 pour un article daté du 6 octobre 0

Je vais donc dater mes 366 articles (1/jour de l'année) avec une année fictive (pas fois que l'année "0", certes). Je peux le faire à la main, ce n'est pas insurmontable (je vais déjà faire novembre) mais si quelqu'un quelqu'une a une commande SQL sous la main pour passer les #DATE_REDAC de "0" à "NNNN", je prends.

Claude

Salut, une petite requête simplement utilisée dans phpmyadmin sur ton fichier spip_articles :

UPDATE 'spip_articles' SET 'date_redac' = 'nnnn' WHERE 'date_redac' = ' '

L'ensemble sera mis à jour en 1 seconde, et seulement les articles dont la date_redac est vide ...

dlatr a écrit :

Je vais donc dater mes 366 articles (1/jour de l'année) avec une année fictive (pas fois que l'année "0", certes). Je peux le faire à la main, ce n'est pas insurmontable (je vais déjà faire novembre) mais si quelqu'un quelqu'une a une commande SQL sous la main pour passer les #DATE_REDAC de "0" à "NNNN", je prends.

" UPDATE spip_articles
      SET date_redac = '2008-01-01 01:01:01'
    WHERE date_redac = '0000-00-00 00:00:00' ";

merci à toi et à Marc qui propose aussi
UPDATE 'spip_articles' SET 'date_redac' = 'nnnn' WHERE 'date_redac' = ' '

ma question était mal posée, je souhaite juste changer l'année sans toucher au jour et au mois (les horaires n'ont ici pas d'importance) donc passer de 0000 à 2000 par exemple

Claude

dlatr a écrit :

ma question était mal posée, je souhaite juste changer l'année sans toucher au jour et au mois (les horaires n'ont ici pas d'importance) donc passer de 0000 à 2000 par exemple

ben...
si année est à zéro,
alors *obligatoirement* mois, jour et heure sont à zéro.

tu ne peux pas avoir '0000-09-25 18:54:31'

mais si tu veux modifier juste l'année d'une date en conservant mois,jour, heure, alors :

   SET date_redac = CONCAT('2000', SUBSTRING(date_redac, 5))

dlatr a écrit :

ma question était mal posée, je souhaite juste changer l'année sans toucher au jour et au mois (les horaires n'ont ici pas d'importance) donc passer de 0000 à 2000 par exemple

ben...
si année est à zéro,
alors *obligatoirement* mois, jour et heure sont à zéro.

tu ne peux pas avoir '0000-09-25 18:54:31'

effectivement la date n'est pas nulle ; je viens de chercher, la base affiche '9000-10-06 00:00:00' pour le 16 octobre 0

Claude

Oui je comprends, mais, vu que le format du champ est ainsi fait, il te faut saisir, par exemple pour 2004, '2004-01-01 00:00:00' pour que php aille bien avec ...
----
Marc

ok
j'ai tenté (sur un double du site)

Nombre d'enregistrements affectés : 0 (traitement: 0.0004 sec.)
requête SQL: UPDATE spip_articles SET date_redac = '2000' WHERE date_redac = '9000'

manque un joker pour mettre à jour ma rubrique

UPDATE spip_articles SET date_redac = CONCAT( '2000', SUBSTRING( date_redac, 5 ) ) n'a rien donné non plus mais il aurait modifié tous les articles, pas que ceux à '9000'. Comme je n'utilise plus les date_redac ailleurs dans ce site, ce n'était pas génant.

Claude

dlatr a écrit :

j'ai tenté (sur un double du site)
UPDATE spip_articles SET date_redac = CONCAT( '2000', SUBSTRING( date_redac, 5 ) )

ouille...
il te faut une clause WHERE pour limiter les modifications à certains enregistrements...

dans ton cas (année à 9000) :

    " UPDATE spip_articles
         SET date_redac = CONCAT( '2000', SUBSTRING(date_redac, 5 ) )
       WHERE LEFT(date_redac, 4) = '9000'; "

j'avais aussi essayé avec une autre WHERE ; et maintenant avec ton code. Rien

pas grave, rien d'urgent

merci

Claude

merci, entre temps, j'ai réussi avec ceci
UPDATE horticalbis_articles
        SET date_redac = CONCAT( '2000', SUBSTRING(date_redac, 5 ) )
      WHERE LEFT(date_redac, 4) = '9000'

Je veillerai aux quotes pour de futures manœuvres

Claude

dlatr a écrit :

j'ai tenté (sur un double du site)
UPDATE spip_articles SET date_redac = CONCAT( '2000', SUBSTRING( date_redac, 5 ) )

ouille...
il te faut une clause WHERE pour limiter les modifications à certains enregistrements...

dans ton cas (année à 9000) :

" UPDATE spip_articles
      SET date_redac = CONCAT( '2000', SUBSTRING(date_redac, 5 ) )
    WHERE LEFT(date_redac, 4) = '9000'; "

excuse moi, si si c'est bon
la table était horticalbis_articles et non spip_articles