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
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.
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.
– On peut donc modifier : le numéro de l’article, la date, la rubrique où il est classé, etc.
– 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 :
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)
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 »
4) dans la fenêtre qui s’ouvre on retrouve 2260 et 5012, cliquer sur « modifier »
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.
Voir ce que cela donne avec la table spip_documents_liens :
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* FROMspip_articles
WHERE VISITES>1000
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)
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 :
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 |
1.- Première requête :
SELECTid_article
,visites
FROMspip_articles
WHERE 1LIMIT 0, 30Cela veut dire :SELECTIONNER les colonnesid_article
,visites
A PARTIR DE la tablespip_articles
LORSQUE (=Where)il y a au moins un articleen affichant 30 réponses maxi
||Quote-Quote... quodec !|Résumé||
| 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 .... è) |
<p> </p>
{{2.- Deuxième requête :}}
<poesie>
SELECT*
FROM
spip_articlesWHERE VISITES>1000
{{Cela veut dire :}}
SELECTIONNER tous les articles (l'étoile veut dire .... tous)
A PARTIR DE la table
spip_articlesWHERE (LORSQUE) les visites sont supérieures à 1000
</poesie>
Ca donne tout un tableau, pas commode à consulter. On peut donc restreindre les choix. Voir la troisième requête.
<p> </p>
{{3.- Troisième requête :}}
<poesie>
SELECT
id_article,
visitesFROM
spip_articlesWHERE VISITES > 3000
LIMIT 0 , 40
{{Cela veut dire :}}
SELECTIONNER les colonnes
id_article,
visitesA PARTIR DE la table
spip_articlesWHERE (LORSQUE) les visites sont supérieures à 3000
En affichant 40 réponses maxi
</poesie>
<p> </p>
{{4.- Quatrième requête :}}
<poesie>
SELECT
id_article,
visitesFROM
spip_articlesWHERE id_RUBRIQUE = 12
LIMIT 0 , 20
{{Cela veut dire :}}
SELECTIONNER les colonnes
id_article,
visitesA PARTIR DE la table
spip_articlesWHERE (=LORSQUE) le numéro de la rubrique est 12
En affichant 20 réponses maxi
</poesie>
<p> </p>
{{5.- Cinquième requête :}}
<poesie>
UPDATE
spip_articlesSET id_rubrique= 2
WHERE ID_ARTICLE IN(14, 27, 149)
{{Cela veut dire :}}
MODIFIER (=UPDATE) la table
spip_articlesEN METTANT (=SET) la rubrique n° 2
WHERE (LORSQUE) les articles sont dans la liste (14, 27, 149)
</poesie>
Cette requête fait que les articles 14, 27 et 149 sont dans la rubrique 2
<p> </p>
{{6.- Sixième requête, avec le signe % :}}
<poesie>
UPDATE
spip_articlesSET id_rubrique= 3
WHERE titre LIKE
OGM%{{Cela veut dire :}}
MODIFIER (=UPDATE) la table
spip_articlesEN METTANT (=SET) la rubrique n° 3
WHERE (LORSQUE)le titre commence par OGM
</poesie>
Cette requête fait que les articles dont le titre commence par OGM seront dans la rubrique 3
<p> </p>
Si on avait écrit :
_ WHERE titre LIKE
%OGM%_ on aurait mis dans la rubrique 3 les articles dont le titre contient le mot OGM
<p> </p>
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 :
<poesie>
UPDATE
spip_articlesSET
ps= REPLACE (
ps,
'mee.info',
'mee.fr/bp')
where id_article in(511, 512, 513,514)</poesie>
Ce qui veut dire :
<poesie>
Mettre à jour (update) la table spip_articles
en modifiant
psil s'agit de remplacer, dans
ps'mee.info'
par 'mee.fr/bp'
lorsque (where) les articles sont dans la liste 511, 512, 513,514</poesie>
<p> </p>
{{8. Huitième requête : Mettre un titre à une photo}}
J'ai utilisé la requête suivante :
<poesie>
UPDATE
ma_base.
spip_documentsSET
titre= 'Tornade'
WHERE
spip_documents.
id_document=105;</poesie>
Ce qui veut dire :
<poesie>
Mettre à jour (update) dans ma_base, la table spip_documents
et mettre (SET) le titre "Tornade"
LORSQUE (where) le document porte le numéro </poesie>
(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
<poesie>
SELECT
id_documentFROM
spip_documentsWHERE 'titre' = "" </poesie>
Ce qui veut dire :
<poesie>
Rechercher (SELECT) les documents
A PARTIR DE (From) la table
jour4hi_journal.spip_documents
LORSQUE (where) le titre est vide</poesie>
{{10. Dixième requête : changer les dates}}
1) Modifier toutes les dates de publication des articles en une seule opération :
UPDATE
spip_articlesSET date=CURRENT_TIMESTAMP
2) Modifier toutes les dates de modification des articles en une seule opération :
UPDATE
spip_articlesSET 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 :
<poesie>
UPDATE 'spip_documents'
SET 'titre'='fichier'
WHERE 'titre'=""</poesie>
Ce qui veut dire :
<poesie>
Mettre à jour (UPDATE) la table 'spip_documents'
en mettant 'titre'='fichier'
Lorsque le titre est vide</poesie>
{{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
<U> pour supprimer jpg/ </U> j'ai écrit la requête suivante
<poesie>
UPDATE
spip_documentsSET
titre=SUBSTR(titre,5)
WHERE
titreLIKE 'jpg/%' </poesie>
Ce qui veut dire :
<poesie>
Mettre à jour la table
spip_documentsen substituant au titre, un titre commençant au 5e caractère
lorsque le titre est du genre jpg/% </poesie>
<U> pour supprimer .jpg </U> j'ai écrit la requête suivante :
<poesie>
UPDATE
spip_documentsSET
titre= SUBSTR(titre, 1, length(titre)-4)
WHERE titre LIKE
%.jpg</poesie>
Ce qui veut dire :
<poesie>
Mettre à jour la table
spip_documentsen substituant au titre, un titre de longueur diminuée de 4
lorsque le titre est du genre %.jpg </poesie>
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 :
<poesie>
INSERT
jour4hi_journal.spip_articles(id_article)
SELECT 22
union
SELECT 23
UNION
SELECT 24
</poesie>
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 .
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
- Attention à ne pas oublier le signe =, les parenthèses, etc.
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