nicolas a écrit:
$conf_mon_plugin est un tableau même si tu ne ramènes qu'un seul champ dans ta requête.
Donc c'est sur $conf_mon_plugin['value'] que tu dois appliquer unserialize().
Ok... C'est net, sans bavure... En fait, la bavure, c'est encore moi :-/
Mais quelle truffe, je suis! Cà fait trois jours (soirées) que je galère là dessus et je n'ai pas vu que je ne donnais pas un tableau pour unserialize().
Merci Nicolas !
grum a écrit:
$mon_plugin = unserialize($conf_mon_plugin);
$mon_plugin[] ='val3';
$conf_mon_plugin = serialize($mon_plugin);
?
Merci aussi à toi, grum. Effectivement, c'est beaucoup plus direct que ma première approche pour ajouter les valeurs. 8-)
Le pauvre ère est moins pauvre grâce à vous et, surtout, il se couchera peut-être un peu moins bête ce soir. Je crois que c'est d'ailleurs ce que je vais faire (me coucher) d'ici un peu moins de pas longtemps ;-)
J'ai vu un truc comme ça dans le themeconf.inc.php de P@t pour son MontblancXL.
$mon_plugin = unserialize($conf_mon_plugin);
$mon_plugin[] ='val3';
$conf_mon_plugin = serialize($mon_plugin);
?
$conf_mon_plugin est un tableau même si tu ne ramènes qu'un seul champ dans ta requête.
Donc c'est sur $conf_mon_plugin['value'] que tu dois appliquer unserialize().
Bonsoir à tous,
Je suis, entre autres, sur le portage de mes plugins vers la future 2.1. Une fois n'est pas coutume, je suis à nouveau en galère sur la dernière touche à apporter avant de proposer une nouvelle version. Et j'ai encore besoin des lumières des pros en php :-/
Cette fois, cela concerne la mise à jour de données de configuration (stockées dans la table #_config) lorsqu'on active un plugin. Dans mon cas, les données sont sérialisées et je souhaite ajouter de nouvelles valeurs à la série existante. Par exemple, sur le cas concret suivant:
- Le plugin est installé mais pas activé
- La table #_config comporte une entrée avec param="mon_plugin", value="a:2:{i:0;s:4:"val1";i:1;s:4:"val2";}", comment="Config de mon plugin"
- A l'activation du plugin, une mise à jour de l'entrée doit se faire pour obtenir, au final, value="a:3:{i:0;s:4:"val1";i:1;s:4:"val2";i:2;s:4:"val3";}"
Je ne peux pas utiliser la variable de config $maconfig['mon_plugin'] car elle n'est pas initialisée à ce stade. J'ai donc pensé qu'une requête du style:
$query = ' SELECT value FROM '.CONFIG_TABLE.' WHERE param = "mon_plugin" ;'; $result = pwg_query($query); $conf_mon_plugin = pwg_db_fetch_assoc($result);
Me permettrait de récupérer la chaine linéarisée pour la délinéariser et ajouter les nouvelles données ainsi:
$mon_plugin = unserialize($conf_mon_plugin); $newconf_mon_plugin = array ( $mon_plugin[0], $mon_plugin[1], 'val3', );
Et réinjecter le tout dans la base de données en re-sérialisant.
Mais çà ne fonctionne pas et je recommence à m'arracher les cheveux. 'Vais finir par être chauve à force... Soit j'ai des erreurs "unserialize() expects parameter 1 to be string, array given in..." soit "unserialize() expects parameter 1 to be string, resource given in..." et je ne comprends pas pourquoi ni comment résoudre.
La charité, mes bons messieurs-dames, pour un pauvre ère dans le besoin ;-)