Aller à l'accueil du site ––– Plan détaillé ––– Articles récents –––––––– Agenda––– Cinéma––– Contact
Accueil du site > Aides pour les nuls > spip-basique > Base de données MySQL , requêtes SQL, avec SPIP    Article PDF

Base de données MySQL , requêtes SQL, avec SPIP

Vous êtes au contenu. Allez au sommaire de l'article.

Attention, ce sont là des découvertes personnelles. Mais il paraît que c’est très dangereux de faire cela, d’après le forum spip. A éviter, donc. On peut trouver en français une documentation sur Mysql

FTP : installation et usage

Voici quelques explications

 Sauvegarde de la base de données

Avec la version 1.9 de SPIP, c’est tout simple.
– entrer dans l’espace privé, c’est à dire : http://www.journal-la-mee.fr/ecrire
– cliquer sur l’icône configuration
– puis sur « maintenance du site »
– puis sur sauvegarder/restaurer la base
– puis sur sauvegarde compressée

et ça se fait tout seul !

On a alors le message : "La base a été sauvegardée dans tmp/dump/Accueil..(date)xml.gz (7 467 751 octets). Les fichiers sauvegardés sont :

* spip_articles
* spip_auteurs
* spip_auteurs_articles
* spip_auteurs_messages
* spip_auteurs_rubriques
* spip_breves
* spip_documents
* spip_documents_articles
* spip_documents_breves
* spip_documents_rubriques
* spip_forum
* spip_groupes_mots
* spip_messages
 
* spip_meta
* spip_mots
* spip_mots_articles
* spip_mots_breves
* spip_mots_documents
* spip_mots_forum
* spip_mots_rubriques
* spip_mots_syndic
* spip_petitions
* spip_rubriques
* spip_signatures
* spip_syndic
* spip_syndic_articles
* spip_types_documents

 Spip_articles

Il s’agit de la base de données.
Ouvrir cette base à l’aide de son adresse http://..... etc. Il est souvent demandé l’identifiant (login) et le mot de passe.

JPEG - 48 ko
BDD3
Quand la base est ouverte on voit, à gauche, une colonne étroite.
On y trouve, en haut, l’identifiant (login)
Et juste en dessous : spip-articles

– Cliquer sur spip-articles
– Puis à droite sur « afficher »
– On voit alors apparaître la liste de tous les articles du site.

JPEG - 35.2 ko
BDD4

– On peut donc modifier : le numéro de l’article, la date, la rubrique où il est classé, etc.

JPEG - 63.8 ko
BDD5

– Faire ensuite « exécuter » (bas de page).

On peut, de même, modifier spip-rubriques


 Intervenir sur un article précis

Cliquer à gauche sur la table spip_articles

Puis, en haut sur : sélectionner

et, dans le tableau qui se présente, indiquer le numéro de l’article


 Ajouter des pages

Sans doute suis-je idiote, mais j’aime avoir des articles dans l’ordre. Mais j’arrive à un blocage. Imaginons que j’aie les pages :

5001
5002
5003
5004
5005
etc

Je voudrais faire une suite à l’article 5001, mais je n’ai pas envie que cette suite se trouve à la page 5006.

Alors je vais créer les pages :

(5001)
      50010
      50011
      50012   etc

Pour faire cela :

JPEG - 33.4 ko
BDD1
JPEG - 37.7 ko
BDD2

1) ouvrir la base de données grâce à son adresse : http://...

2) à gauche on voit une colonne où il y a marqué, en haut, « spip_articles ». Cliquer sur « spip_articles »

puis, à droite, sur l’onglet bleu « insérer »

Il s’ouvre alors un tableau.
Dans la ligne id_article, en dessous de « valeur », mettre le n° de page qu’on veut. Par exemple 50010

Puis, en bas de page, cliquer sur « exécuter »
et recommencer pour toutes les pages qu’on veut créer.

Mais attention, il paraît que ce genre de manipulation est dangereux !


 Déplacer une photo

J’ai la photo 2260 qui se trouve dans l’article 5012 et je voudrais mettre cette photo dans l’article 1158

1) ouvrir la base de données grâce à son adresse : http://...

2) à gauche on voit une colonne où il y a marqué, en haut, « spip_documents_articles ». Cliquer sur « spip_documents_articles » (note : cela a pu changer, quelquefois il s’agit de spip_documents_liens, mais c’est la même manipulation)

JPEG - 82.4 ko
BDD6

puis, à droite, sur l’onglet bleu « sélectionner »

3) Dans la fenêtre qui apparaît, compléter, en dessous de « valeur » :
– 2260 pour id_document
– 5012 pour id_article et cliquer sur « exécuter »

JPEG - 51.4 ko
BDD7

4) dans la fenêtre qui s’ouvre on retrouve 2260 et 5012, cliquer sur « modifier »

JPEG - 37.3 ko
BDD8

5) Dans la nouvelle fenêtre, modifier le numéro de l’article (au lieu de 5012, mettre 1158) et cliquer sur « exécuter » et c’est bon ! le document 2260 est passé de l’article 5012 à l’article 1158.

JPEG - 37.4 ko
BDD9

 Voir ce que cela donne avec la table spip_documents_liens :

JPEG - 46.1 ko
table spip_documents_l

En cliquant ensuite sur le petit crayon, on peut changer le document de place.


 Articles lus plus de 1000 fois

Cliquer à gauche sur la table spip_articles

puis, en haut sur : SQL

et, dans le rectangle blanc, écrire la requete SQL suivante :

 
SELECT* FROM `spip_articles`
WHERE VISITES>1000
 
JPEG - 52 ko
BDD1

puis cliquer sur exécuter


 Voir la liste des documents

Cliquer à gauche sur la table spip_documents puis, en haut sur : sélectionner

Cliquer alors sur :
– id_document
– fichier

cliquer ensuite sur : exécuter (en bas de page)

JPEG - 60.9 ko
BDD2

On trouve alors la liste des articles (avec leur numéro et, à côté, les documents correspondants.

 A propos des visites

On trouve des explications ici http://www.koakidi.com/spip.php?article279


 Langage SQL, requêtes, insertion, mise à jour

C’est un peu dur au départ, mais on s’y fait.

Voici quelques requêtes SQL que j’ai glanées :

il faut d’abord
D’ABORD OUVRIR LA BASE DE DONNEES, cliquer par exemple (à gauche) sur spip_articles, puis, en haut sur le bouton SQL. Effacer ce qui y est déjà et y mettre ensuite l’une des requêtes ci-dessous
BDD-SQL
BDD-SQL

1.- Première requête :

SELECT `id_article` , `visites`
FROM `spip_articles`
WHERE 1
LIMIT 0, 30
 
Cela veut dire :
SELECTIONNER les colonnes `id_article` , `visites`
A PARTIR DE la table `spip_articles`
LORSQUE (=Where)il y a au moins un article
en affichant 30 réponses maxi

 

Quote-Quote... quodec !
Attention : c’est marqué `spip_articles` et pas ’spip_articles’ .
On utilise une quote c’est-à-dire ceci ` et pas une apostrophe !

Pour obtenir une quote il faut faire : AltGR+7 (le 7 qui est à la ligne supérieure du clavier, la quote se trouve à côté de .... è)

 

2.- Deuxième requête :

SELECT*
FROM `spip_articles`
WHERE VISITES>1000
 
Cela veut dire :
SELECTIONNER tous les articles (l’étoile veut dire .... tous)
A PARTIR DE la table `spip_articles`
WHERE (LORSQUE) les visites sont supérieures à 1000

Ca donne tout un tableau, pas commode à consulter. On peut donc restreindre les choix. Voir la troisième requête.

 

3.- Troisième requête :

SELECT `id_article` , `visites`
FROM `spip_articles`
WHERE VISITES > 3000
LIMIT 0 , 40
 
Cela veut dire :
SELECTIONNER les colonnes `id_article` , `visites`
A PARTIR DE la table `spip_articles`
WHERE (LORSQUE) les visites sont supérieures à 3000
En affichant 40 réponses maxi

 

4.- Quatrième requête :

SELECT `id_article` , `visites`
FROM `spip_articles`
WHERE id_RUBRIQUE = 12
LIMIT 0 , 20
 
Cela veut dire :
SELECTIONNER les colonnes `id_article` , `visites`
A PARTIR DE la table `spip_articles`
WHERE (=LORSQUE) le numéro de la rubrique est 12
En affichant 20 réponses maxi

 

5.- Cinquième requête :

UPDATE `spip_articles`
SET id_rubrique= 2
WHERE ID_ARTICLE IN(14, 27, 149)
 
Cela veut dire :
MODIFIER (=UPDATE) la table `spip_articles`
EN METTANT (=SET) la rubrique n° 2
WHERE (LORSQUE) les articles sont dans la liste (14, 27, 149)

Cette requête fait que les articles 14, 27 et 149 sont dans la rubrique 2

 

6.- Sixième requête, avec le signe % :

UPDATE `spip_articles`
SET id_rubrique= 3
WHERE titre LIKE `OGM%`
 
Cela veut dire :
MODIFIER (=UPDATE) la table `spip_articles`
EN METTANT (=SET) la rubrique n° 3
WHERE (LORSQUE)le titre commence par OGM

Cette requête fait que les articles dont le titre commence par OGM seront dans la rubrique 3

 

Si on avait écrit :
WHERE titre LIKE `%OGM%`
on aurait mis dans la rubrique 3 les articles dont le titre contient le mot OGM

 

Si on avait écrit :
WHERE titre LIKE `%OGM`
on aurait mis dans la rubrique 3 les articles dont le titre se termine par le mot OGM

7. Septième requête : remplacer un mot par un autre

Dans les post-scriptum (ps) de mon site, je voulais remplacer ...mee.info... par ...mee.fr/bp  

J’ai utilisé la requête suivante :

UPDATE `spip_articles`
SET `ps` = REPLACE (`ps` ,
’mee.info’,
’mee.fr/bp  ’)
where id_article in(511, 512, 513,514)

Ce qui veut dire :

Mettre à jour (update) la table spip_articles
en modifiant `ps`
il s’agit de remplacer, dans `ps`
’mee.info’
par ’mee.fr/bp  
lorsque (where) les articles sont dans la liste 511, 512, 513,514

 

8. Huitième requête : Mettre un titre à une photo

J’ai utilisé la requête suivante :

UPDATE `ma_base`.`spip_documents`
SET `titre` = ’Tornade’
WHERE `spip_documents`.`id_document` =105 ;

Ce qui veut dire :

Mettre à jour (update) dans ma_base, la table spip_documents
et mettre (SET) le titre « Tornade »
LORSQUE (where) le document porte le numéro

(bien entendu il faut remplacer ma_base par le nom exact de la base de données !)

9. Neuvième requête : rechercher les documents ayant un titre vide

J’ai utilisé la requête suivante

SELECT `id_document`
FROM `spip_documents`
WHERE ’titre’ = «  »

Ce qui veut dire :

Rechercher (SELECT) les documents
A PARTIR DE (From) la table `jour4hi_journal`.spip_documents
LORSQUE (where) le titre est vide

10. Dixième requête : changer les dates

1) Modifier toutes les dates de publication des articles en une seule opération :

UPDATE `spip_articles` SET date=CURRENT_TIMESTAMP

2) Modifier toutes les dates de modification des articles en une seule opération :

UPDATE `spip_articles` SET date_modif=CURRENT_TIMESTAMP

Mettre un titre, suite

Le problème : j’avais 1800 documents sans titre, dans la table `jour4hi_journal`.spip_documents, et je voulais, pour chacun, mettre comme titre le contenu de la colonne ’fichier’.

Voici la requête SQL :

UPDATE ’spip_documents’
SET ’titre’=’fichier’
WHERE ’titre’=«  »

Ce qui veut dire :

Mettre à jour (UPDATE) la table ’spip_documents’
en mettant ’titre’=’fichier’
Lorsque le titre est vide

Supprimer des caractères

Le problème : dans la table spip_documents, dans la colonne `titre`, j’avais des expressions du genre jpg/ma-photo.jpg et je voulais supprimer jpg/ et supprimer aussi .jpg

pour supprimer jpg/ j’ai écrit la requête suivante

UPDATE `spip_documents`
SET `titre`=SUBSTR(titre,5)
WHERE `titre` LIKE ’jpg/%’

Ce qui veut dire :

Mettre à jour la table `spip_documents`
en substituant au titre, un titre commençant au 5e caractère
lorsque le titre est du genre jpg/%

pour supprimer .jpg j’ai écrit la requête suivante :

UPDATE `spip_documents`
SET `titre`= SUBSTR(titre, 1, length(titre)-4)
WHERE titre LIKE `%.jpg`

Ce qui veut dire :

Mettre à jour la table `spip_documents`
en substituant au titre, un titre de longueur diminuée de 4
lorsque le titre est du genre %.jpg

length(titre) : c’est la longueur du titre le 1 indique la position de départ le 4 indique qu’il y a 4 caractères à supprimer

10. Insertions, insertions multiples

Dans la colonne id_article, j’ai besoin d’ajouter les valeurs 22, 23 et 24. Voici la commande :

INSERT `jour4hi_journal`.spip_articles(id_article)
SELECT 22
union
SELECT 22
UNION
SELECT 24

Cela veut dire :
insérer, dans la table `jour4hi_journal`.spip_articles, à la colonne id_article
les valeurs 22,23,24

Ceci m’a permis de faire des changements très rapides sur une soixantaine d’articles . Attention à ne pas oublier le signe =, les parenthèses, etc.

Ne pas oublier ...
Dans tous les cas, ne pas oublier de cliquer sur le bouton EXECUTER qui se trouve en dessous de la boite
Ne pas oublier non plus de mettre des quotes et pas des apostrophes

On trouve des explications simples sur les fonctions SELECT, FROM, UPDATE, SET, ici : http://www.zone-webmasters.net/requetes-sql.php

et il y a des choses plus compliquées ici :

http://www.phpcs.com/tutorial.aspx?ID=491

ou celui ci : http://www.phpsecure.info/v2/article/InjSql.php

ou celui-ci en français


 Les balises de la base de données

Voir l’article

P.-S.

SQL : des explications en français - http://sqlpro.developpez.com/

 

Qui sommes-nous ?
Ce site a fait l’objet d’une déclaration auprès de la CNIL
Numéro CNIL : 1160309
Les personnes citées disposent de droits fixés
par l'art 34 de la loi "Informatique et Libertés"du 6 janvier 1978.
Pour exercer ce droit, elles peuvent s’adresser à : journal-la-mee@wanadoo.fr

Liens hypertextes :

Les liens présents sur ce site peuvent orienter le visiteur sur des sites extérieurs
dont le contenu ne peut en aucune manière engager la responsabilité de La Mée.
SPIP | | Plan du site | Suivre la vie du site RSS