SPIP - Lister toutes les tables et leurs entrées

En discutant sur l’IRC de #spip, Charles2 désirait lister une table et toutes ses entrées sur une page. Voici un bout de code qui permet de le faire.

Voici tout simplement le code qui vous permettra de faire cela :

<h1>Liste des tables et leurs valeurs</h1>

<div class="nettoyeur"> </div>
<div class="pied">
[<pre>
(#ENV**|unserialize|foreach)
</pre>]
<B_lestables>
<form action="#SELF" method="get">
	[(#SELF|parametre_url{'table',''}|form_hidden)]
<select name="table">
<BOUCLE_lestables(DATA) {source sql, SHOW TABLE STATUS}>
<option value="#VALEUR{Name}"[(#ENV{table}|=={#VALEUR{Name}}|oui) selected="selected"]>#VALEUR{Name}</option>
</BOUCLE_lestables>
</select>
<input type="submit" value="ok"/>
</form>
</B_lestables>
<B_table>
[<h3>(#GRAND_TOTAL) enregistrement(s) pour #ENV{table}</h3>]
#ANCRE_PAGINATION
<table>
<BOUCLE_table(DATA){source sql, SELECT * FROM #ENV{table}} {pagination 10}>
	<B_thead>
	<thead>
		<tr>
		<BOUCLE_thead(DATA){source table, (#VALEUR|array_keys)}>
			[<th>(#VALEUR|unique)</th>]
		</BOUCLE_thead>
		</tr>
	</thead>
	</B_thead>
	<B_valeur>
	<tr>
	<BOUCLE_valeur(DATA){source table, #VALEUR}>
		<td>[(#VALEUR|sinon{' '})]</td>
	</BOUCLE_valeur>
	</tr>
	</B_valeur>
</BOUCLE_table>
</table>
[<p class="pagination">(#PAGINATION)</p>]
</B_table>
[<p>Aucun enregistrement dans (#ENV{table})</p>]
<//B_table>
</div>

Explications

  • La boucle "lestables" va créer un select contenant toutes les tables connues par SPIP dans sa base de données ;
  • La boucle "table" va lancer un requête SQL pour avoir toutes ses entrées en base ;
  • La boucle "thead" s’occupe d’afficher dans un… thead les noms des champs ;
  • La boucle "valeur" affiche… roulement de tambours… les valeurs de la table. ;-)

C’est bô SPIP !

Encore plus beau

En SPIP 2, nous avions la page ?page=table:nom_de_la_table accessible depuis l’espace public ET en étant authentifié.
Encore mieux en SPIP 3 grâce au plugin Vertèbres (intégré à la dist). Il vous suffit d’aller sur la page ecrire/?exec=vertebres et de cliquer sur la table qui vous intéresse. Et Ô magie ! Un beau tableau apparaît.
Tout cela est expliqué ici : http://www.spip.net/fr_article4453....

Ils sont bô les core-dev de SPIP !

 
Frameworks
SPIP
Catégorie
Boucle DATA, Astuce