Toujours pour ma base Guide Méditerranée, j’ai créé un certain nombre de champs #Extra (une bonne dizaine).
Le problème principal, c’est que les champs #Extra sont enregistrés dans un unique champ de type Blob, un type bien particulier qu’on ne peut pas « lire » directement avec phpmyadmin.
Un champ Blob est un champ de taille « illimitée », où les différents enregistrements sont inscrits à la suite les uns des autres : code-x:nom du champ ; code-y:enregistrement etc.
Comment faire, alors, pour passer les enregistrements que j’avais dans une base « normale » (1 champ = 1 enreg) à cette base Spip à champs #Extra (1 champ = n enreg) ?
Il faut sérialiser !!!
- Vous pouvez reprendre le code ci-dessous et l’adapter pour créer un fichier de remplisage automatique d’une base à une autre.
Explications
On suppose que vous savez déjà comment vous connecter à la base de données. Mais voici un rappel (que vous pouvez intégrer en tête du ficher Enreg_A_Blob.php3 ci-dessous) :
$edserveur='xxxxx'; //serveur
$edlogin='cmonlogin'; //login
$edpass='cmonmotdepasse'; //mot de passe
$eddb='cmabase'; //base de donnée
//Connection a la base de donnée dans ce fichier afin de ne pas recreer d'autre connection dans les autres fichiers
$id_connex=mysql_connect("$edserveur" , "$edlogin" , "$edpass") or die("connexion impossible session");
mysql_select_db("$eddb",$id_connex);Ensuite, il faut :
- Point A) effectuer une requête sur la base de départ et y sélectionner les champs que nous allons placer dans le champ Blob unique de la base Spip des articles.
- Point B) Transformer en variable le contenu de chaque champ
- Point C) Créer un « tableau » de correspondance entre les champs #Extra existants et les variables qu’on va enregistrer dans le champ Blob qui les contient
- Point D) Utiliser la commande php « miracle » qui transforme tout cela pour le champ Blob
- Point E) Insérer tout cela dans la base Spip. A noter que les champs #extra sont enregistrés dans le champ nommé extra (!) des bases articles, auteurs et rubriques.
Et voilà !
Par prudence, faites un essai après avoir fait une copie de votre base Spip. Histoire de vérifier que tout colle bien.



Répondre à cet article