Accés SPIP aux tables non-SPIP et jointures - commentaires Accés SPIP aux tables externes et jointures 2014-04-27T21:09:57Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment475138 2014-04-27T21:09:57Z <p>Bonjour<br class="autobr"> Je n'arrive pas à reproduire l'exemple des pommes ...<br class="autobr"> Sous spip 3, j'ai un fichier config/mes_options.php avec</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>$tables_principales['pommes']['field']['variete']= "varchar(10)"; $tables_principales['pommes']['key']['PRIMARY KEY']= "variete"; $tables_principales['gardiens']['field']['id_gardien']= "int auto_increment"; $tables_principales['gardiens']['field']['nom']= "varchar(10)"; $tables_principales['gardiens']['field']['prenom']= "varchar(10)"; .... $tables_principales['gardiens']['key']['PRIMARY KEY']= "id_gardien";</code></pre></div> <p>et les tables qui vont bien, et la boucle :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><BOUCLE_trouve(pommes gardiens){variete}> La pomme #VARIETE est gardée par #NOM #PRENOM </BOUCLE_trouve></code></pre></div> <p>me répond :</p> <blockquote class="spip"> <p>Erreur SQL 1054<br class="autobr"> Champ 'pommes.id_gardien' inconnu dans on clause<br class="autobr"> SELECT pommes.variete, L1.nom, L1.prenom FROM pommes AS <code class="spip_code spip_code_inline" dir="ltr">pommes</code> INNER JOIN gardiens AS L1 ON ( L1.id_gardien = pommes.id_gardien ) WHERE (pommes.variete = NULL)</p> </blockquote> <p>et je ne comprends pas ...</p> Accés SPIP aux tables externes et jointures 2011-04-16T09:24:13Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment444415 2011-04-16T09:24:13Z <p>C'est fait Sévero, j'ai intégré ta proposition d'amélioration en la développant un peu avec notamment un lien vers ton nouvel article. Cette doc est une belle issue je trouve après tes difficultés avec les jointures. :-)</p> Accés SPIP aux tables externes et jointures 2011-04-14T21:48:51Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment444353 2011-04-14T21:48:51Z <p>Salut,</p> <p>il faudrait sûrement revoir un peu le paragraphe « $table_des_jointures » pour deux raisons :<br class="autobr"> * la table s'appelle $tables_jointures (<a href="http://programmer.spip.org/Declarations-de-jointures" class="spip_url spip_out auto" rel="nofollow external">http://programmer.spip.org/Declarations-de-jointures</a>)<br class="autobr"> * pour afficher la balise #CHAMP_TABLE_2, il faut forcer la jointure, par (TABLE1 spip_table2)... (dernier paragraphe de <a href="http://programmer.spip.org/Forcer-des-jointures" class="spip_url spip_out auto" rel="nofollow external">http://programmer.spip.org/Forcer-des-jointures</a>)</p> <p>Du coup, le paragraphe serait plutôt quelque chose comme :</p> <blockquote class="spip"> <p><strong><a href="http://programmer.spip.org/Declarations-de-jointures" class="spip_out" rel='nofollow external'>$tables_jointures</a> :</strong></p> <p>Sert à SPIP pour relier automatiquement 2 tables, ce qui fait que si on fait une boucle</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><boucle_bb(TABLE1){champ_table2}> ... </boucle_bb></code></pre></div> <p>SPIP fera la liaison entre les 2 tables, à condition évidemment qu'elles aient une colonne de nom identique, par exemple « id_rubrique » toutes les deux.</p> <p>Attention, la jointure automatique fonctionne seulement pour les critères. Pour utiliser les champs de la table 2 comme balises, il faut <a href="http://programmer.spip.org/Forcer-des-jointures" class="spip_out" rel='nofollow external'>forcer la jointure</a> :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><boucle_bb(TABLE1 spip_table2)> #CHAMP_TABLE2 </boucle_bb></code></pre></div></blockquote> Accés SPIP aux tables externes et jointures 2010-01-11T11:03:58Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment425016 2010-01-11T11:03:58Z <p>oulala, il n'y a pas vraiment de raison de rester avec une aussi vieille version<small class="fine d-inline"> </small>!</p> Accés SPIP aux tables externes et jointures 2010-01-11T09:54:36Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment425012 2010-01-11T09:54:36Z <p>Bonjour,</p> <p>J'utilise une ancienne version de spip 1.8.2 et j'essaie de lier mes tables externes à spip hélas sans succès.</p> <p>J'ai déclaré ma nouvelle table dans un nouveau fichier php3, ma table est ajoutée à la variable table_des_tables.</p> <p>Néanmoins lorsque j'essaie de faire une boucle sur cette table j'ai une erreur :</p> <p>Erreur(s) dans le squelette</p> <p>(ag_vl)<br class="autobr"> Erreur MySQL<br class="autobr"> SELECT mytable. FROM mytable AS mytable<br class="autobr"> Erreur de syntaxe près de 'FROM mytable AS mytable' à la ligne 2<br class="autobr"> ,</p> <p>Est-ce que pour cette version d'autres étapes sont nécessaires<small class="fine d-inline"> </small>?</p> <p>Merci.</p> Accés SPIP aux tables externes et jointures 2009-05-11T15:47:52Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment416233 2009-05-11T15:47:52Z <p>Hello,</p> <p>Si la table externe s'appelle ma_table (sans s donc), et qu'on la declare comme cela : <br class="manualbr">$tables[ma_table][titre]=1<small class="fine d-inline"> </small>;</p> <p>on va obtenir une erreur de requet sur ma_tables (spip rajoute le s tout seul a priori). Donc, la bonne declaration devient <br class="manualbr">$tables[ma_tables][titre]=1<small class="fine d-inline"> </small>;</p> <p>avec un s cette fois ci que spip retirera lui meme. Il semble également que les tables supplémentaires que l'on souhaite indexer doivent avoir au moins 1 index</p> <p>Chag</p> Warning : relation « spip_meta » does not exist 2009-05-05T14:17:31Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment416043 2009-05-05T14:17:31Z <p>Bon, j'ai trouvé la solution à mon problème.</p> <p>Le truc, c'est que comme la base à laquelle je voulais acceder était sur une autre machine, et que la machine sur laquelle était hébergée la base spip n'avait pas de base postgresql, le fichier d'install (inc/install.php) ne me proposait pas de choisir entre différents types de bd (mysql versus postgresql).</p> <p>Du coup, j'avais écris un fichier de connection à la main en patchant celui généré par spip (nommé connect.php). Et manifestement, il n'était pas tout à fait bon.</p> <p>Donc, à grand coup de hache, et de positionnement de variables en dur dans install.php et pg.php, j'ai finalement réussit à lui faire me générer un fichier de connection propre. Et la seule différence était l'absence de la ligne :</p> <p> $GLOBALS['spip_connect_version'] = 0.7<small class="fine d-inline"> </small>;</p> <p>Une fois enlevé cette instruction de mon fichier de connection, plus de Warning disgracieux.<br class="autobr"> Vous savez quoi, je suis content.</p> Warning : relation « spip_meta » does not exist 2009-04-30T07:39:24Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment415890 2009-04-30T07:39:24Z <p>Non, en fait, la machine sur laquelle tourne le serveur internet est en 8.3.7...</p> Warning : relation « spip_meta » does not exist 2009-04-29T15:57:30Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment415871 2009-04-29T15:57:30Z <p>Bonjour,</p> <p>J'interroge depuis une boucle spip une base postgres externe. Tout marche nickel, à part qu'il m'affiche un warning disgracieux :<br class="autobr"> «<small class="fine d-inline"> </small>Warning : pg_query() [function.pg-query] : Query failed : ERROR : relation "spip_meta" does not exist in<br class="autobr"> /spip/ecrire/req/pg.php on line 146<small class="fine d-inline"> </small>»</p> <p>Dans une autre fenêtre, j'ai par ailleurs un <br class="autobr"> «<small class="fine d-inline"> </small>Erreur SQL<br class="autobr"> SELECT valeur FROM spip_meta WHERE nom='charset_sql_connexion'<br class="autobr"> 0<small class="fine d-inline"> </small>»</p> <p>J'utilise "spip 2.0.7". Merci à toute bonne ame qui pourrait éclairer ma lanterne.</p> <p>Edit : et ma version de posgresql est 7.4.23. Ce pourrait bien être ca le problème...</p> Mise à jour : Accés SPIP aux tables externes et jointures 2009-04-12T08:02:56Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment415336 2009-04-12T08:02:56Z <p>J'ai complété l'article avec une note pour permettre la recherche dans des tables externes.</p> Accés SPIP aux tables externes et jointures 2009-02-11T12:26:59Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment413285 2009-02-11T12:26:59Z <p>Problème résolu.</p> <p>En effet, il fallait spécifier le nom de la table (amo_articles) avant la colonne (titre) :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>{par amo_articles.titre}</code></pre></div> <p>Merci beaucoup.</p> Utiliser un nom de champ comme critère 2009-02-11T10:28:33Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment413279 2009-02-11T10:28:33Z <p>tu ne nous dis pas tout :<br class="autobr"> le message d'erreur dénonce « BOUCLE_articleasso » alors que tes boucles s'appellent « BOUCLE_...amo ».</p> <p>sinon, essaye <code class="spip_code spip_code_inline" dir="ltr">{par amo_articles.titre}</code></p> Utiliser un nom de champ comme critère 2009-02-10T17:52:09Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment413253 2009-02-10T17:52:09Z <p>sisi ça ne marche pas.<br class="autobr"> le probleme vient peut-être d'ailleurs.</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code> * Erreur(s) dans le squelette o Erreur sur le site, {par titre inverse} BOUCLE_articleasso <BOUCLE_rubriqueamo(amo_rubriques) {id_rubrique=14} > <h2> #TITRE </h2> <br> #TEXTE <B_articleamo> <BOUCLE_articleamo(amo_articles) {id_rubrique} {statut='publie'} {par titre} {inverse} > #TITRE #TEXTE </BOUCLE_articleamo> </B_articleamo> </BOUCLE_rubriqueamo></code></pre></div> <p>Notons que « par titre » et « inverse » se retrouve dans la même accolade de l'affichage du debug.</p> <p>Quand je ne mets pas <br class="autobr"> <code class="spip_code spip_code_inline" dir="ltr"> {par titre} {inverse} </code> l'affichage des articles se fait par numéros.</p> Utiliser un nom de champ comme critère 2009-02-09T16:21:42Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment413210 2009-02-09T16:21:42Z <p>sisi ça marche.<br class="manualbr">le probleme doit venir d'ailleurs.</p> <p>dans ton précédent message, il manque la parenthese fermante apres le nom de table.<br class="manualbr">essaye avec un squelette qui contient juste la boucle (entière) <br class="manualbr">et si jamais encore pb, indique nous cette boucle</p> Utiliser un nom de champ comme critère 2009-02-09T15:53:05Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment413209 2009-02-09T15:53:05Z <p>Le problème continue avec la version SPIP 2.0.3 qui affiche « Erreur(s) dans le squelette ».</p> <p>Quelqu'un a-t-il trouver une solution<small class="fine d-inline"> </small>?</p> Le traitement des images et les tables externes 2008-12-27T18:02:18Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment411539 2008-12-27T18:02:18Z <p>Tu parles d'une utilisation de la balise #LOGO_ARTICLE qui référence un article issu d'une table externe<small class="fine d-inline"> </small>?</p> Accés SPIP aux tables externes et jointures 2008-12-27T11:03:32Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment411530 2008-12-27T11:03:32Z <p>Une remarque : pour que la jointure se fasse, il est impératif d'utiliser dans la boucle des champs des <strong>2 tables</strong>. Si l'on ne procède pas ainsi, SPIP ne fera pas de jointure.</p> Le traitement des images et les tables externes 2008-10-01T00:39:38Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment408862 2008-10-01T00:39:38Z <p>Je travaille avec 2 sites sous SPIP 1 beta2. Le deuxième site récupère les données du premier site grâce à la fonctionnalité des tables externes. Ça fonctionne super bien sauf pour les logo_article. J'ai essayé avec et sans filtre. Quelqu'un a une astuce pour contourner ce problème.</p> <p>Merci de votre,</p> <p>Pierre</p> Utiliser un nom de champ comme critère 2008-06-27T16:13:47Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment407152 2008-06-27T16:13:47Z <p>Pour prolonger votre contribution, comment peut-on faire en sorte qu'un des champ d'une table externe puisse être utilisé comme un critère dans une boucle genre :</p> <p><code class="spip_code spip_code_inline" dir="ltr"><BOUCLE_naboucle(MATABLE {nom_dun_champ=valeur}></code></p> <p>Pour l'instant, j'ai comme réponse : erreur critère inconnu. <br class="autobr"> Quelque chose à déclarer quelque part<small class="fine d-inline"> </small>? (SPIP 192)</p> Accés SPIP aux tables externes et jointures 2007-10-14T17:47:27Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399160 2007-10-14T17:47:27Z <p>Un élément de réponse se trouve dans la page <a href='https://files.spip.net/JonctionEntreTables' class="spip_url" rel='nofollow'>JonctionEntreTables</a></p> Accés SPIP aux tables externes et jointures 2007-10-14T15:55:13Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399152 2007-10-14T15:55:13Z <p>Bonjour à tous,<br class="autobr"> Quelle est la procédure de déclaration de la clé commune si elle ne porte pas le même nom dans les deux tables<small class="fine d-inline"> </small>?<br class="autobr"> Merci</p> Accés SPIP aux tables externes et jointures 2007-10-12T19:33:32Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399093 2007-10-12T19:33:32Z <p>Pour un SPIP qui tourne déjà, il suffit de détruire son ficher de connexion : ça relance l'installation sans même avoir besoin de redéclarer le compte admin (puisque la base reste intacte), on tombe donc très rapidement (à la 4<sup class="typo_exposants">e</sup> page) sur le formulaire des bases supplémentaires. C'est un peu violent mais sans danger, et là la priorité c'est de terminer le portage en PostGres.</p> Accés SPIP aux tables externes et jointures 2007-10-12T14:20:56Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399082 2007-10-12T14:20:56Z <p>1) j'ai documenté, ESJ a codé<small class="fine d-inline"> </small>!<br class="manualbr">2) le mieux c'est que ce n'est pas un plugin, c'est SPIP standard<small class="fine d-inline"> </small>!</p> Accés SPIP aux tables externes et jointures 2007-10-12T14:19:50Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399081 2007-10-12T14:19:50Z <p>Oui Les apports de la 1.9.3 étendront encore les possibiltiés d'extensions « natives ». Il y aura aussi un mécanisme pour appeler cette page de déclaration sur un spip qui tourne déjà<small class="fine d-inline"> </small>? (pas seulement à l'installation)</p> <p>PS : j'ai précisé qu'on pouvait se lier à un serveur externe (pas seulement une base) et mis un lien dans la note vers le commentaire trac...</p> Accés SPIP aux tables externes et jointures 2007-10-12T13:27:25Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399080 2007-10-12T13:27:25Z <p>Quelques informations supplémentaire à cet article bienvenu.</p> <p>Cette possibilité est déjà présente dans la 1.8, mais non documentée. Le problème était, et est toujours, de trouver un moyen complètement satisfaisant de déclarer les jointures. Il y aura sans doute un jour des changements sur ce point, mais on donnera des outils de migration si cela se produit.</p> <p>L'accès à des tables externes ne se limite pas à la base utilisée par SPIP, ni même à son serveur SQL. Voir le message dans <a href="http://trac.rezo.net/trac/spip/changeset/10559" class="spip_out" rel='nofollow external'>SVN10559</a> et remonter les liens.</p> Accés SPIP aux tables externes et jointures 2007-10-12T11:30:12Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399077 2007-10-12T11:30:12Z <p>En 1 : Merci Jean-Luc.<br class="manualbr">En 2 : Dite moi que c'est vrai, ce plugin ouvre des perspectives considérable, plus besoin de toucher d'ancienne BD non spip, on applique directe SPIP.<br class="manualbr">C'est tout simplement du pure bonheur.<br class="autobr"> Merci Jean-Luc</p> Accés SPIP aux tables externes et jointures 2007-10-12T10:14:58Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399072 2007-10-12T10:14:58Z <p>OK , merci de ta réponse Jean-Luc.</p> <p> j m'y colle ce WE. et si ça marche, je poste l'exemple.</p> Accés SPIP aux tables externes et jointures 2007-10-12T10:04:18Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399070 2007-10-12T10:04:18Z <p>Exactement. D'ailleurs ça ferait un bon exemple.</p> Accés SPIP aux tables externes et jointures 2007-10-12T09:33:50Z https://files.spip.net/Acces-SPIP-aux-tables-non-SPIP-et-jointures#comment399068 2007-10-12T09:33:50Z <p>Si j ai bien compris...<br class="autobr"> ça veut donc dire par exemple que je pourrai afficher les derniers messages d'un forum phpbb<small class="fine d-inline"> </small>???</p>