Remplissage de champs EXTRA

Bonjour,

J'ai ajouté 3 champs extra à ma table des articles et j'ai besoin de les remplir automatiquement par PhpMyAdmin.

Le champ EXTRA est un BLOB et si je le regarde comme SUBSTRING(EXTRA,1,1024) je vois ceci:
-------------------------------------------------
a:3:{s:8:"overview";s:50:"mon overview en {{typo}}
- premier
- second

";s:8:"features";s:50:"
mon Features en {{brut}}
- premier
- second
";s:14:"specifications";s:46:"mon Spec en {{propre}}
- premier
- second
";}
-------------------------------------------------

Je devine que:
a:3{
  indique n champs

s:8:"overview";
  donne le nom du 1er champ et la taille de nom

s:50:"mon overview en {{typo}}
- premier
- second

";
  donne le contenu du 1er champ et la taille de celui-ci, etc.

J'ai donc à remplir quelque chose de ce style.

Or, en essayant, j'ai donc pris le contenu ci-dessus et mis dans le champ EXTRA d'un nouvel article, par PhpMyAdmin, c'est-à-dire en important un fichier texte qui le contenait, car il semble interdit d'éditer directement des TEXT ou des BLOB.

Le résultat n'est pas celui attendu. Le champ EXTRA rempli par mes soins est PLUS PETIT que celui d'origine, rempli à la main par l'interface d'admin SPIP:
- Les substring(EXTRA, 1, 1024) sont identiques à l'oeil
- Le nouveau BLOB est [BLOB - 225 Octets]
- L'ancien est [BLOB - 228 Octets]

et ça ne fonctionne pas: pas d'affichage ni dans la partie privée, ni évidemment dans la partie publique.

Je soupçonne une question de RC/LF quelque part ou une fin de fichier quelque part, mais comment faire?

Quelqu'un a-t-il un élément de piste ou un exemple de remplissage par PHPMyAdmin de champs EXTRA?

Merci.

--
Vincent François
Consultation Boréale
http://boreale.ouvaton.org
vincent@consultation-boreale.org

Hello Vincent,

Je me permet de te renvoyer un morceau d'un article en cours de redaction a ce sujet.

Le plus simple serait je pense d'utiliser une page en PHP qui remplisse le champs pour toi. Tu devrais trouver les infos ici :

---8<----------8<----------8<----------8<----------8<-------

La sérialisation
Le processus de sérialisation existe dans tous les langages un tant soit peu moderne.

Il consiste à écrire une structure de donnée comme un tableau par exemple et à "écrire" ce tableau dans un fichier un petit exemple vaut mieux qu’un long discours

executer le fichier php suivant test_serilaisation.php

<?php
$tableau=array( "titi"=>"grosminet","laurel"=>"hardy","starky"=>"hutch"
);

//serialisation
$tableau_serialised=serialize($tableau);

//ouverture d'un fichier de sauvegarde
$fichier=fopen("sauvegarde","w");
//sauvegarde
fputs($fichier,$tableau_serialised);
fclose($fichier);
?>

Et voila vous venez de sauver un tableau complet dans le fichier sauvegarde ouvrons ce fichier et voyons ce qu’il y a dedans

a:3:{s:4:"titi";s:9:"grosminet";s:6:"laurel";s:5:"hardy";s:6:"starky";s:5:"hutch";}

Pas très clair mais on s’en moque car php s’y retrouve...Et on peut ainsi sauver des structures très complexes de données sur un fichier sans trop se poser de questions.

Maintenant imaginons qu’un autre script ait besoin de ce tableau voila ce que l’on peut faire pour le récupérer

<?

         $tableau=implode("",@file("sauvegarde"));
         $tableau=unserialize($tableau);

         //utilisation du tableau
         echo $tableau['titi'];
         //ecrit grosminet
?>

Et voila vous avez récupéré votre tableau flambant neuf pret à l’emploi.

Eh bien c’est exactement de cette maniere la que marche les extra il s’agit d’un tableau qui est sérialisé dans un seul champs de la table spip_article le champs extra !

---8<----------8<----------8<----------8<----------8<-------

Chag

Vincent wrote:

Bonjour,

J'ai ajouté 3 champs extra à ma table des articles et j'ai besoin de les remplir automatiquement par PhpMyAdmin.

Le champ EXTRA est un BLOB et si je le regarde comme SUBSTRING(EXTRA,1,1024) je vois ceci:
-------------------------------------------------
a:3:{s:8:"overview";s:50:"mon overview en {{typo}}
- premier
- second

";s:8:"features";s:50:"
mon Features en {{brut}}
- premier
- second
";s:14:"specifications";s:46:"mon Spec en {{propre}}
- premier
- second
";}
-------------------------------------------------

Je devine que:
a:3{ indique n champs

s:8:"overview"; donne le nom du 1er champ et la taille de nom

s:50:"mon overview en {{typo}}
- premier
- second

";
    donne le contenu du 1er champ et la taille de celui-ci, etc.

J'ai donc à remplir quelque chose de ce style.

Or, en essayant, j'ai donc pris le contenu ci-dessus et mis dans le champ EXTRA d'un nouvel article, par PhpMyAdmin, c'est-à-dire en important un fichier texte qui le contenait, car il semble interdit d'éditer directement des TEXT ou des BLOB.

Le résultat n'est pas celui attendu. Le champ EXTRA rempli par mes soins est PLUS PETIT que celui d'origine, rempli à la main par l'interface d'admin SPIP:
- Les substring(EXTRA, 1, 1024) sont identiques à l'oeil - Le nouveau BLOB est [BLOB - 225 Octets]
- L'ancien est [BLOB - 228 Octets]

et ça ne fonctionne pas: pas d'affichage ni dans la partie privée, ni évidemment dans la partie publique.

Je soupçonne une question de RC/LF quelque part ou une fin de fichier quelque part, mais comment faire?

Quelqu'un a-t-il un élément de piste ou un exemple de remplissage par PHPMyAdmin de champs EXTRA?

Merci.