J'utilise la procédure d'importation de Spip pour ajouter/remplacer un article dans la base.
Je crée un fichier "import_article.xml" contenant
<article>
<id_article>%id_article%</id_article>
<surtitre>%surtitre%</surtitre>
<titre>%titre%</titre>
<soustitre>%soustitre%</soustitre>
<id_rubrique>%id_rubrique%</id_rubrique>
<descriptif>%descriptif%</descriptif>
<chapo>%chapo%</chapo>
<texte>%texte%</texte>
<ps>%ps%</ps>
<date>%date%</date>
<statut>publie</statut>
<id_secteur>%id_secteur%</id_secteur>
<maj>%maj%</maj>
<export>%export%</export>
<date_redac>%date_redac%</date_redac>
<visites>0</visites>
<referers></referers>
<accepter_forum>%accepter_forum%</accepter_forum>
</article>
</SPIP>
Les balises %xxx% doivent être renseignées avec les valeurs adhoc de l'article.
La balise %id_article% doit être vide pour l'ajout d'un nouvel article.
NB: J'utilise la balise %export% pour identifier l'article afin de pouvoir le sélectionner après insertion dans la base.
J'utilise une valeur aléatoire :
<? srand((float) microtime()*1000000);
$randVal = (string) rand(1,60000000); ?>
Cela me permet de récupérer l'id_article qui lui a été affecté par Spip-MySQL.
Ensuite, je modifie la valeur spéciale utilisée pour restaurer la valeur "normale" <export>oui</export>
Pour insérer/modifier l'article dans la base Spip, j'utilise le code suivant :
<?
include "ecrire/inc_connect.php3";
include "ecrire/inc_version.php3";
include "ecrire/inc_texte.php3";
include "ecrire/inc_filtres.php3";
include "ecrire/inc_import.php3";
include "ecrire/inc_meta.php3";
$fhFiche = fopen('import_article.xml', 'r');
$importOK = import_objet($fhFiche); // Insérer l'article dans la base
fclose($fhFiche);
?>
L'avantage est que toutes les fonctions Spip sont activées sur l'article (indexation en particulier)...
A+
François