[spip-dev] [Bug 6111] Erreur MySQL

Bonjour,

En 6110, le bug ne se produisait pas.
En 6111, il est là :
# Erreur(s) dans le squelette

     * <BOUCLE_MenuHaut>(rubriques)
       Erreur MySQL
       SELECT rubriques.id_rubrique, rubriques.lang FROM spip_mots_rubriques AS L3, spip_mots AS L4, spip_rubriques AS rubriques WHERE rubriques.id_parent=0 AND L4.titre = 'MenuHaut' AND ((rubriques.id_rubrique NOT IN (0,6,21,22,35,49))) AND rubriques.statut='publie' AND .=L2. AND .=L1. GROUP BY rubriques.id_rubrique
       You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=L2. AND .=L1. GROUP BY rubriques.id_rubrique' at line 9
       </BOUCLE_MenuHaut>

Le squelette : http://va60.pyrat.net/squelettes/header.html

Jacques PYRAT a écrit :

Bonjour,

En 6110, le bug ne se produisait pas.
En 6111, il est là :
# Erreur(s) dans le squelette

     * <BOUCLE_MenuHaut>(rubriques)
       Erreur MySQL
       SELECT rubriques.id_rubrique, rubriques.lang FROM spip_mots_rubriques AS L3, spip_mots AS L4, spip_rubriques AS rubriques WHERE rubriques.id_parent=0 AND L4.titre = 'MenuHaut' AND ((rubriques.id_rubrique NOT IN (0,6,21,22,35,49))) AND rubriques.statut='publie' AND .=L2. AND .=L1. GROUP BY rubriques.id_rubrique
       You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=L2. AND .=L1. GROUP BY rubriques.id_rubrique' at line 9
       </BOUCLE_MenuHaut>

En fait, le squelette concerné est celui-ci : Pyrat.net – Création de sites Internet

Et la Boucle commence par :
<BOUCLE_MenuHaut(RUBRIQUES){racine}{titre_mot=MenuHaut}{doublons}>

Et en mode debug, quand je demande le résultat de cette boucle, j'ai dans la partie du bas du mode debug : rien du tout (c'est tout blanc).

Le début du php généré :
001 <?php
002 function BOUCLE_Rubriques_MenuHauthtml_108b1b5447b108f2c5d2c93c20fefc14(&$Cache, &$Pile, &$doublons, &$Numrows, $SP) {
003 $doublons_index = array();
004
005 // REQUETE
006 $result = spip_optim_select(
007 array("rubriques.id_rubrique",
008 "rubriques.descriptif",
009 "rubriques.titre",
010 "0+rubriques.titre AS num",
011 "rubriques.lang"), # SELECT
012 array('rubriques' => 'spip_rubriques'), # FROM
013 array("rubriques.id_parent = '" . addslashes($Pile[$SP]['id_rubrique']) . "'", "" .calcul_mysql_in('rubriques.id_rubrique', "0".$doublons[$doublons_index= ('rubriques' . '')], 'NOT') . "", "rubriques.statut='publie'"), # WHERE
014 array(), # WHERE pour jointure
015 '', # GROUP
016 array('num'), # ORDER
017 '', # LIMIT
018 '', # sous
019 '', # HAVING
020 'rubriques', # table
021 '_Rubriques_MenuHaut', # boucle
022 ''); # serveur
023 $t0 = "";
024 $SP++;
025 $old_lang = $GLOBALS['spip_lang'];

J'ai récupéré le squelette mais je ne reproduis pas le bug.
Du reste, il est clair pour moi que le code PHP ne peut pas produire la requete erronée que tu mentionnes.
Vide ton cache et tes logs.

Déesse A.

Déesse A. a écrit :

J'ai récupéré le squelette mais je ne reproduis pas le bug.
Du reste, il est clair pour moi que le code PHP ne peut pas produire la requete erronée que tu mentionnes.
Vide ton cache et tes logs.

Le cache, je l'ai vidé plusieurs fois.
Quand tu dis les logs, tu parles du dossier ecrire/data/

Une remarque : le problème se produit dans le squelette quand il est inclus, pas dans le le squelette en mode debug.

Que ne le disais-tu plus tôt. Essaye 6113.

Déesse A.

Déesse A. a écrit :