Accès à une autre base que celle de Spip... infructueux.

Bonjour ami(e)s éclairé(e)s,

Je tente de consulter, avec Spip, la base SQLite3 de Filmotech (une seule table : fmt_films).
J’ai suivi les articles de Marcillaud :
https://programmer.spip.net/Acceder-a-une-base-declaree

J’ai déclaré une autre base dans un fichier filmotech.php

et modifié le fichier récents.html qui liste les derniers articles de la page « sommaire » en y ajoutant :
<B_autres>
<div class="menu menu_articles">
  <ul>
    <BOUCLE_autres(filmotech:FMT_FILMS)>
    <li>#TITREVF</li>
    </BOUCLE_autres>
  </ul>
</div><!--#articles_recents-->
</B_articles>

J’obtiens une longue liste de <li></li> vides.
Autant de <li> que de titres dans la table. Demi-résultat encourageant.
Je chauffe mais je ne brûle pas encore !

Deux interrogations :

1) les requêtes SQL
avec un var_profile=1
sur les 11 requêtes affichées, 2 sont pour la « BOUCLE_autres »

La première (la plus gourmande) que je ne comprend pas mais qui semble liée à la « Master table » :
SELECT sql, type FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE tbl_name LIKE 'fmt_meta' AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%' ORDER BY substr(type,2,1), name

La seconde (la dernière et la plus rapide en exécution)
SELECT FMT_FILMS.titrevf FROM FMT_FILMS AS ‘FMT_FILMS'
qui ne remonte rien dans spip mais qui fonctionne très bien dans le gestionnaire de SQLite : 879 titres remontés.

Où est l’erreur ?

2) le fichier de connexion à la base étrangère
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS['spip_connect_version'] = 0.8;
spip_connect_db('localhost','’,'monLoginSpip','monPpassSpip','filmotech','sqlite3', 'fmt','','');
?>

Je crois avoir essayé toutes les combinaisons possibles sans savoir si le problème vient de là.
- ajout ou pas du port 8889
- login & pass de Spip ou ceux du serveur Mamp ou rien
- pas de préfixe de table ou préfixe spip ou préfixe réel de la table = fmt bien que déjà dans la BOUCLE.
(<BOUCLE_autres(filmotech:FILMS)> provoque une erreur : Table inconnue)

Je ne sais plus où chercher...

Je suis en local, Mamp 3.5.1 : PHP 5.6.10 SQLite 3.8.10.2
SPIP 3.1.6 [23598] + écran de sécurité 1.3.2

Le 24/08/2017 à 12:11, Yves Le Houerf a écrit :

J’obtiens une longue liste de <li></li> vides.
Autant de <li> que de titres dans la table. Demi-résultat encourageant.
Je chauffe mais je ne brûle pas encore !

Un problème d'encodage (charset) des données ?

--
nicod_

La base Filmotech est en UTF-8 comme Spip.
YLH

La base Filmotech est en UTF-8 comme Spip.
YLH

Le 24 août 2017 à 13:39, nicod_ <nicolas.dorigny@gmail.com> a écrit :

Le 24/08/2017 à 12:11, Yves Le Houerf a écrit :

J’obtiens une longue liste de <li></li> vides.
Autant de <li> que de titres dans la table. Demi-résultat encourageant.
Je chauffe mais je ne brûle pas encore !

Un problème d'encodage (charset) des données ?

--
nicod_

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le problème vient des noms de champs de la base Filmotech.
Elle utilise majuscules et minuscules. Exemple DateHeureMAJ, TitreVF, TitreVO, etc.
Le renommage en minuscule règle le problème.

Y a-t-il un moyen de contourner ce problème depuis SPIP ?
La mise à jour fréquente de la base Filmotech fera réapparaître constamment ce PB.
YLH

Le 24 août 2017 à 12:11, Yves Le Houerf <yves@lehouerf.com> a écrit :

Bonjour ami(e)s éclairé(e)s,

Je tente de consulter, avec Spip, la base SQLite3 de Filmotech (une seule table : fmt_films).
J’ai suivi les articles de Marcillaud :
Accéder à une base déclarée - Programmer avec SPIP 4

J’ai déclaré une autre base dans un fichier filmotech.php

et modifié le fichier récents.html qui liste les derniers articles de la page « sommaire » en y ajoutant :
<B_autres>
<div class="menu menu_articles">
  <ul>
    <BOUCLE_autres(filmotech:FMT_FILMS)>
    <li>#TITREVF</li>
    </BOUCLE_autres>
  </ul>
</div><!--#articles_recents-->
</B_articles>

J’obtiens une longue liste de <li></li> vides.
Autant de <li> que de titres dans la table. Demi-résultat encourageant.
Je chauffe mais je ne brûle pas encore !

Deux interrogations :

1) les requêtes SQL
avec un var_profile=1
sur les 11 requêtes affichées, 2 sont pour la « BOUCLE_autres »

La première (la plus gourmande) que je ne comprend pas mais qui semble liée à la « Master table » :
SELECT sql, type FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE tbl_name LIKE 'fmt_meta' AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%' ORDER BY substr(type,2,1), name

La seconde (la dernière et la plus rapide en exécution)
SELECT FMT_FILMS.titrevf FROM FMT_FILMS AS ‘FMT_FILMS'
qui ne remonte rien dans spip mais qui fonctionne très bien dans le gestionnaire de SQLite : 879 titres remontés.

Où est l’erreur ?

2) le fichier de connexion à la base étrangère
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS['spip_connect_version'] = 0.8;
spip_connect_db('localhost','’,'monLoginSpip','monPpassSpip','filmotech','sqlite3', 'fmt','','');
?>

Je crois avoir essayé toutes les combinaisons possibles sans savoir si le problème vient de là.
- ajout ou pas du port 8889
- login & pass de Spip ou ceux du serveur Mamp ou rien
- pas de préfixe de table ou préfixe spip ou préfixe réel de la table = fmt bien que déjà dans la BOUCLE.
(<BOUCLE_autres(filmotech:FILMS)> provoque une erreur : Table inconnue)

Je ne sais plus où chercher...

Je suis en local, Mamp 3.5.1 : PHP 5.6.10 SQLite 3.8.10.2
SPIP 3.1.6 [23598] + écran de sécurité 1.3.2
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc