API objet_modifier

Bonjour,
pourquoi ça marche pô ?
Soit le code très simplifié ci dessous qui essaye de créer une nouvelle instance de l objet 'reseau' en passant par l api generique... Lorsque j execute ce code dans la partie 'traiter' de mon form, j enregistre bien en base la ligne $set, a l'exception de l'id_auteur qui est toujours egal à zéro...
Le champs id_auteur est en bigint(21) il n y a pas de cle dessus, la cle primaire de cet objet étant 'id_reseau'. J ai pensé a une exception de sécurité sur les champs nommés id_auteur ? Je m y prends comme un gros manche, l age venant je devrais songer a laisser ma place aux plus jeunes ?
merci beaucoup
amicalement
triton
Ci dessous, le code

include_spip('action/editer_objet');
$set=array('id_auteur'=>1,'id_objet'=>23,'objet'=>'mot');
$id_objet = objet_inserer('reseau');
objet_modifier('reseau', $id_objet, $set);

Le 12.03.15 08:27, triton a écrit :

Bonjour,
pourquoi ça marche pô ?
Soit le code très simplifié ci dessous qui essaye de créer une nouvelle
instance de l objet 'reseau' en passant par l api generique... Lorsque j
execute ce code dans la partie 'traiter' de mon form, j enregistre bien
en base la ligne $set, a l'exception de l'id_auteur qui est toujours
egal à zéro...
Le champs id_auteur est en bigint(21) il n y a pas de cle dessus, la cle
primaire de cet objet étant 'id_reseau'. J ai pensé a une exception de
sécurité sur les champs nommés id_auteur ? Je m y prends comme un gros
manche, l age venant je devrais songer a laisser ma place aux plus jeunes ?
merci beaucoup
amicalement
triton
Ci dessous, le code

include_spip('action/editer_objet');
$set=array('id_auteur'=>1,'id_objet'=>23,'objet'=>'mot');
$id_objet = objet_inserer('reseau');
objet_modifier('reseau', $id_objet, $set);

pas sûr de comprendre, mais a mon avis c'est une mauvaise idée de modifier l'id_objet (contenu de ton $set) :wink:

--
Maïeul

Le 12.03.15 12:33, Maïeul a écrit :

Le 12.03.15 08:27, triton a écrit :

Bonjour,
pourquoi ça marche pô ?
Soit le code très simplifié ci dessous qui essaye de créer une nouvelle
instance de l objet 'reseau' en passant par l api generique... Lorsque j
execute ce code dans la partie 'traiter' de mon form, j enregistre bien
en base la ligne $set, a l'exception de l'id_auteur qui est toujours
egal à zéro...
Le champs id_auteur est en bigint(21) il n y a pas de cle dessus, la cle
primaire de cet objet étant 'id_reseau'. J ai pensé a une exception de
sécurité sur les champs nommés id_auteur ? Je m y prends comme un gros
manche, l age venant je devrais songer a laisser ma place aux plus
jeunes ?
merci beaucoup
amicalement
triton
Ci dessous, le code

include_spip('action/editer_objet');
$set=array('id_auteur'=>1,'id_objet'=>23,'objet'=>'mot');
$id_objet = objet_inserer('reseau');
objet_modifier('reseau', $id_objet, $set);

pas sûr de comprendre, mais a mon avis c'est une mauvaise idée de
modifier l'id_objet (contenu de ton $set) :wink:

a mais ton id_objet n'est pas la clef primaire.

cela àétant pour ton pb, est-ce que dans le fichier de log tu n'a pas de message d'erreur ? essaie de mettre le debugage au maximum

Et arrête de dire que c'est l'âge, c'est un argument stupide.

--
Maïeul

a mais ton id_objet n'est pas la clef primaire.

cela àétant pour ton pb, est-ce que dans le fichier de log tu n'a pas de message d'erreur ? essaie de mettre le debugage au maximum

Alors, apres investigation, je pense qu il ne faut pas déclarer un champ id_auteur (et certainement pas autre champ natif spip) dans une table principale, cela ne doit pas être très sain au niveau des jointures. Si je renomme mon champ id_auteur en id_machin, cela marche parfaitement, mais ne m arrange pas du tout...
Du coup, je pense qu il me faudrait plutôt déclarer une table auxiliaire, sur laquelle on ne peut plus utiliser l api objet_modifier mais bien évidement, l api editer_liens, et je pense que spip dans sa très grande clairvoyance à bien prévu le coup, parce qu en fait, j ai effectivement plutôt besoin d une table de jointure auxiliaire... Ce n’était donc pas un bug mais une fonctionnalité

Et arrête de dire que c'est l'âge, c'est un argument stupide.

Tu as parfaitement raison, mais c'etait une petite blague, suis sur que tu ne me contrediras pas sur ce point, comme disait Brassens : "Le temps ne fait rien a l'affaire..."
amicalement
triton