<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Geekographie Ma&#239;eulesque</title>
	<link>https://geekographie.maieul.net/</link>
	<description>Ce site est consacr&#233; &#224; quelques unes des mes geekeries. J'y donne des conseils, des r&#233;flexions, sur les logiciels et les langages que je connais ou que j'apprends.
J'y parle notamment de l'usage de LaTeX en sciences humaines et sociales, en particulier pour la gestion de la bibliographie.
Le contenu peut &#234;tre sous la forme d'articles d&#233;taill&#233;s ou de simples notes.
L'ensemble du contenu est, sauf pr&#233;cision contraire, sous licence Cr&#233;ative Commons Paternit&#233;-Partage des Conditions Initiales &#224; l'identique France.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://geekographie.maieul.net/spip.php?id_rubrique=34&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>Afficher plusieurs fois un m&#234;me objet SPIP</title>
		<link>https://geekographie.maieul.net/16</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/16</guid>
		<dc:date>2010-12-19T22:11:04Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Dans le cadre d'un projet associatif, je me sert de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; pour g&#233;rer une base de donn&#233;e. Cette base de donn&#233;e contient un certain nombre d'objets &#8212; des cartes de jeux en fait, que j'ai &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;traduites&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; en &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; par des articles &#8212; que j'ai besoin d'afficher plusieurs fois. Le nombre d'affichages n&#233;cessaires est propre &#224; chaque cartes / articles. Pour arriver &#224; mes fins, voici comment j'ai fait&#160;: J'ai ajout&#233; un champ extra nombre &#224; la table articles. Dans ce champ je pr&#233;cise le nombre de fois&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Boucle" rel="directory"&gt;Boucle&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Dans le cadre d'un projet associatif, je me sert de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; pour g&#233;rer une base de donn&#233;e. Cette base de donn&#233;e contient un certain nombre d'objets &#8212; des cartes de jeux en fait, que j'ai &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;traduites&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; en &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; par des articles &#8212; que j'ai besoin d'afficher plusieurs fois. Le nombre d'affichages n&#233;cessaires est propre &#224; chaque cartes / articles.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Pour arriver &#224; mes fins, voici comment j'ai fait&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; J'ai ajout&#233; un &lt;a href=&#034;http://www.spip-contrib.net/Champs-Extras-2&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;champ extra&lt;/a&gt; &lt;code&gt;nombre&lt;/code&gt; &#224; la table &lt;code&gt;articles&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; Dans ce champ je pr&#233;cise le nombre de fois o&#249; je souhaite afficher un article. C'est donc un champs de type &lt;code&gt;INT&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; J'utilise ensuite le plugin &lt;a href=&#034;http://www.spip-contrib.net/SPIP-Bonux&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;-Bonux&lt;/a&gt; pour boucler sur un tableau &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt; que je g&#233;n&#232;re gr&#226;ce &#224; la fonction &lt;a href=&#034;http://php.net/manual/fr/function.array-fill.php&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;code&gt;array_fill()&lt;/code&gt;&lt;/a&gt; de &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt;. Ce tableau contient &lt;code&gt;#NOMBRE&lt;/code&gt; fois la valeur &lt;code&gt;''&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; A l'int&#233;rieur de cette boucle, je peux r&#233;cup&#233;rer les informations de l'article directement avec les balise &lt;code&gt;#CHAMP&lt;/code&gt; dont &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; reconnaitra qu'elle font allusion &#224; la boucle &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;m&#232;re&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Cela nous donne donc&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;BOUCLE_article(ARTICLES)&gt; &lt;BOUCLE_repeter(POUR){tableau #VAL{0}|array_fill{#NOMBRE,''}}&gt; J'affiche le titre de l'article #TITRE qui porte le num&#233;ro #ID_ARTICLE etc. &lt;br /&gt; &lt;/BOUCLE_repeter&gt; &lt;/BOUCLE_article&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;p&gt;Le code expos&#233; ici n'est pas tout &#224; fait celui que j'utilise pour mon projet, car dans celui-ci je dois m&#233;langer de mani&#232;re al&#233;atoire les diff&#233;rents articles. Je passe donc par un tableau global que je remplis des valeurs des &lt;code&gt;#ID_ARTICLE&lt;/code&gt; le nombre de fois n&#233;cessaires.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Champ extra, crayons, sqlite</title>
		<link>https://geekographie.maieul.net/9</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/9</guid>
		<dc:date>2010-12-07T16:59:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Pour un projet associatif, j'utilise une base de donn&#233;e SQLite que je g&#232;re via &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;. J'ai ajout&#233; &#224; la table spip_articles de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; un champ extra, et je souhaitais pouvoir l'&#233;diter via les Crayons. Voil&#224; comment j'ai proc&#233;d&#233;, une fois le champ extra ajout&#233;. Pour rendre &#233;ditable le champs (que j'appel ici #&lt;span class=&#034;caps&#034;&gt;CHAMP&lt;/span&gt;) via les crayons, rien de plus simple. #&lt;span class=&#034;caps&#034;&gt;CHAMP&lt;/span&gt; Seulement voil&#224;&#160;: j'obtenais lors de l'&#233;dition, non un textarea mais un simple input, ce qui pour rend l'&#233;dition compliqu&#233;,&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Champs-extras" rel="directory"&gt;Champs extras&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Pour un projet associatif, j'utilise une base de donn&#233;e &lt;a href=&#034;https://fr.wikipedia.org/wiki/SQLite&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;SQLite&lt;/a&gt; que je g&#232;re via &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;J'ai ajout&#233; &#224; la table spip_articles de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; un &lt;a href=&#034;http://plugins.spip.net/Champs-extra&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;champ extra&lt;/a&gt;, et je souhaitais pouvoir l'&#233;diter via les &lt;a href=&#034;http://www.spip-contrib.net/Les-crayons&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Crayons&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Voil&#224; comment j'ai proc&#233;d&#233;, une fois le champ extra ajout&#233;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Pour rendre &#233;ditable le champs (que j'appel ici &lt;code&gt;#CHAMP&lt;/code&gt;) via les crayons, rien de plus simple.&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;div class='#EDIT{champ}'&gt;
#CHAMP&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Seulement voil&#224;&#160;: j'obtenais lors de l'&#233;dition, non un &lt;code&gt; textarea&lt;/code&gt; mais un simple &lt;code&gt;input&lt;/code&gt;, ce qui pour rend l'&#233;dition compliqu&#233;, puisque le contenu du champ peut faire plusieur ligne.&lt;/p&gt;
&lt;p&gt;Le plugin crayon d&#233;finit le type de champ de formulaire, &lt;a href=&#034;http://www.spip-contrib.net/Crayons-Controleurs-et-Vues&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;appel&#233; &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Contr&#244;leurs&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;&lt;/a&gt; affich&#233; selon le type du champ &lt;span class=&#034;caps&#034;&gt;SQL&lt;/span&gt;. Pour les champs de type &lt;code&gt;TEXT&lt;/code&gt;, cela d&#233;pend de la longueur.&lt;/p&gt;
&lt;p&gt;Seulement voil&#224;, en SQLite, les champs de type &lt;code&gt;TEXT&lt;/code&gt; ne peuvent avoir qu'une seule longueur. Il n'y a pas de &lt;code&gt;TINYTEXT&lt;/code&gt; ou de &lt;code&gt;MEDIUMTEXT&lt;/code&gt; ou autre &lt;code&gt;BIGTEXT&lt;/code&gt;. C'est pourquoi j'avais syst&#233;matiquement un &lt;code&gt;input&lt;/code&gt;, et non pas un &lt;code&gt;textarea&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Les crayons ont un contr&#244;leur et une vue&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;i. e. ce qui est affich&#233; apr&#232;s la modification d'un champ via les crayons.&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; par d&#233;faut pour les champs extra, mais on peut en d&#233;finir des nouveaux pour chaques types de champ.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;Le contr&#244;leur&lt;/h2&gt;
&lt;p&gt;Dans mon dossier de squelettes&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Qui est sous forme de plugin, .cf mon article &#171;&#160;Jeux de squelettes sous (&#8230;)&#034; id=&#034;nh2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt;, j'ai cr&#233;&#233; un dossier &lt;code&gt;controleurs&lt;/code&gt;, dedans un squelette &lt;code&gt;champ.html&lt;/code&gt;, qui contient ceci&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;[(#REM) Controleur pour le crayon 'champ' , uniquement html ]
#CACHE{0} &lt;BOUCLE_a(ARTICLES){id_article}{statut==.}&gt;
&lt;textarea class=&#034;crayon-active&#034; name=&#034;#ENV{name_champ}&#034; style=&#034;width:#ENV{largeur}px; height:#ENV{hauteur}px;#ENV{style}&#034;&gt; [(#CHAMP**)]&lt;/textarea&gt;
&lt;/BOUCLE_a&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;h2&#034;&gt;La vue&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;Idem&lt;/i&gt;, dans mon dossier de squelettes, j'ai cr&#233;&#233; un dossier &lt;code&gt;vues&lt;/code&gt;.
Et dans ce dossier un fichier &lt;code&gt;champ.html&lt;/code&gt;, qui contient&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;[(#REM) Vue pour le crayon 'champ' ]
#CACHE{0}
&lt;BOUCLE_a(ARTICLES){id_article}{statut==.}&gt;
[(#CHAMP|propre)]
&lt;/BOUCLE_a&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et voil&#224;, j'ai d&#233;sormais mes crayons qui me permettent d'&#233;diter un champ texte long avec une base SQLite.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;p&gt;J'ai choisi d'utiliser SQLite&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt;Pour &#233;conomiser une base &lt;a href=&#034;https://fr.wikipedia.org/wiki/MySQL&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;MySQL&lt;/a&gt; chez &lt;a href=&#034;http://lautre.net&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;L'Autre.net&lt;/a&gt;, qui limite le nombre &#224; six par adh&#233;rents&lt;/li&gt;&lt;li&gt; Parce que je n'avais pas besoin d'une base MySQL, &#233;tant donn&#233; que seulement cinq personnes peuvent la consulter, et que donc les performances ne sont pas vraiment en jeux.&lt;/li&gt;&lt;li&gt; Parce qu'il est plus simple de r&#233;cup&#233;rer par &lt;span class=&#034;caps&#034;&gt;FTP&lt;/span&gt; le fichier SQLite que de passer par PhpMyAdmin pour faire un export&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb3&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;SQLite ne fonctionne pas selon un sch&#233;ma client/serveur, mais avec un (&#8230;)&#034; id=&#034;nh3&#034;&gt;3&lt;/a&gt;]&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;&lt;i&gt;i. e.&lt;/i&gt; ce qui est affich&#233; apr&#232;s la modification d'un champ via les crayons.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;Qui est sous forme de plugin, &lt;i&gt;.cf&lt;/i&gt; mon article &lt;a href='https://geekographie.maieul.net/3' class=&#034;spip_in&#034;&gt;&#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Jeux de squelettes sous forme de plugin&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb3&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh3&#034; class=&#034;spip_note&#034; title=&#034;Notes 3&#034; rev=&#034;appendix&#034;&gt;3&lt;/a&gt;] &lt;/span&gt;SQLite ne fonctionne pas selon un sch&#233;ma client/serveur, mais avec un fichier local. Cause, en partie, de ses faibles performances.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>



</channel>

</rss>
