[spip-dev] Type de document

Bonjour,

<BOUCLE_documents_joints>()
Unknown column 'documents.id_type' in 'on clause'

Donc bon, mon problème ne viendrait pas de ma base, qui a perdu son id_type pour les documents je ne sais quand, mais de mes boucles. Enfin de toutes le boucles un peu sensées qu'on peut faire pour des documents, en effet, la dist 11526 contient un squelette inc-documents qui plante chez moi.

En rétrécissant la syntaxe, je vois que c'est #MIME_TYPE ou #TYPE_DOCUMENT, au choix, qui provoquent l'erreur mysql.

Alors bon, ça signifie que les squelettes de la dist sont incompatibles avec les changements de la base ou bien c'est un bug sur ces balises, ou bien id_type devrait toujours être dans la base. Quelqu'un peut-il apporter des éléments de réponses? Merci.

Cordialement, Ch.M.

J'ai un site sous 11519 qui tourne, la boucle de inc-documents

01 <B_documents_joints>
02 <div class="menu" id="documents_joints">
03 <h2><:titre_documents_joints:></h2>
04 <ul>
05 <BOUCLE_documents_joints(DOCUMENTS)
06 {id_article}
07 {extension !IN gif,jpg,png}
08 {vu=non}
09 {par num titre, date}>[
10 <li>
11 <strong><a href="(#URL_DOCUMENT)" title="<:bouton_telecharger:>"
12 type="#MIME_TYPE">[(#TITRE|sinon{<:info_document:>})]</

</strong>

13 <small>(<span>#TYPE_DOCUMENT[ &ndash;
14 (#TAILLE|taille_en_octets)]</span>)</small>
15 #DESCRIPTIF
16 ]</li>
17 </BOUCLE_documents_joints>
18 </ul>
19 </div>
20 </B_documents_joints>

me donne la requête mysql:

  SELECT FIELD(documents.extension,'gif','jpg','png') AS cpt3, 0+documents.titre AS num, documents.date, documents.id_document, L2.mime_type, documents.titre, L2.titre AS type_document, documents.taille, documents.descriptif
  FROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L2 ON ( L2.extension = documents.extension ) INNER JOIN spip_documents_articles AS L1 ON ( L1.id_document = documents.id_document )
  WHERE (documents.mode != 'vignette')
      AND (documents.taille > 0 OR documents.distant='oui')
      AND (L1.id_article = 81)
      AND (FIELD(documents.extension,'gif','jpg','png') = 0)
      AND (L1.vu = 'non')
  ORDER BY num, documents.date

Tandis que la même boucle, sous la 11526 (pas de plugin, squelettes de base) me donne:

  SELECT FIELD(documents.extension,'gif','jpg','png') AS cpt3, 0+documents.titre AS num, documents.date, documents.id_document, L2.mime_type, documents.titre, L2.titre AS type_document, documents.taille, documents.descriptif
  FROM spip_documents AS `documents` INNER JOIN spip_types_documents AS L2 ON ( L2.id_type = documents.id_type ) INNER JOIN spip_documents_articles AS L1 ON ( L1.id_document = documents.id_document )
  WHERE (documents.mode != 'vignette')
      AND (documents.taille > 0 OR documents.distant='oui')
      AND (L1.id_article = 19)
      AND (FIELD(documents.extension,'gif','jpg','png') = 0)
      AND (L1.vu = 'non')
  ORDER BY num, documents.date

C'est-à-dire que je ne sais pas pourquoi, le ON (L2.extension) devient ON (L2.id_type) qui bien sûr foire...

Pourtant, je viens de refaire une màj: > rm -rf ecrire/; svn up

Je ne sais pas dans quel fichier est le coupable, si quelqu'un sait?

Merci, cordialement, Christian

ok alors, effectivement , il est probable que ta base ne soit pas completement convertie.
Essaye de comparer les tables en cause sur les deux bases.
Dans ce cas, cela signifie que la maj a foiré. Tu avais deja fait des maj en svn, ou c'est une mise a jour complete depuis 1.92 avec la derniere version ?
(le process de maj a été buggué pendant un moment)
Cédric

Bon, ben moi cette analyse m'expliquait au contraire que ce n'est pas la base de donnée qui est en cause. D'ailleurs un "describe spip_documents" me donne la même chose sur les deux sites. Et que le problème était à chercher du côté du php.

Mais en fait "describe spip_types_documents" me donne un id_type (mais même primary sur l'extension) qui est cherché comme jointure au lieu de l'extension...

Bon alors j'ai fait une copie de ma table, j'ai viré le champ id_type, maintenant le message d'erreur a changé:

<BOUCLE_documents_portfolio(DOCUMENTS) {id_article} {mode=document} {extension IN png,jpg,gif} {par num titre, date} {doublons}>
aboutit à
  FIELD(L2.extension,'png','jpg','gif') AS cpt1, 0+L2.titre AS num, L2.date, L2.fichier, L2.titre, L2.id_document, L2.mime_type FROM spip_types_documents AS `L2` INNER JOIN spip_documents_articles AS L1 ON ( L1.id_document = documents.id_document ) WHERE (L2.taille > 0 OR L2.distant='oui') AND (L1.id_article = 4786) AND (L2.mode = 'document') AND (FIELD(L2.extension,'png','jpg','gif') <> 0) ORDER BY num, L2.date

qui bien-sûr me donne une

Unknown column 'L2.date' in 'field list'

C'est un bug de prendre l'ordre sur la date des documents comme produisant un ordre sur la date (inexistante) des types de document.

De plus, j'aimerai toujours comprendre pourquoi mon essai de mise à niveau ecrire/?exec=upgrade&reinstall=non&bonjour=oui aboutit à pointer vers "ecrire/Array" avec bien-sûr un 404
The requested URL ecrire/Array was not found on this server.

Le mystère s'épaissit...

Ch. M.

Bon, j'ai résolu mon problème en créant une base vide et en recopiant le contenu seul (pas la structure) de ma base. Bon, je ne voudrais pas dire mais c'est un peu sous-optimale comme solution... Donc la question reste: comment faire pour réparer une table qui est cassée, d'abord comment diagnostiquer que ma table est malade, il devrait y avoir une solution plus simple...

Christian