Submitted by Tigunn on
Bonjour,
J'ai crée un petit module pour surcharger la fonction _node_update().
Elle s'éxecute si je me contente de dupal_set_message() par exemple;
mais je voudrais meetre à jour des champs de la base de données et là c'est bien plus compliqué.
L'objectif :
Lors de la (dé)publication d'un noeud de type "projet", je voudrais appliquer cette modification à tous ses noeuds fils (liés par entity reference) de type "video".
La requête suivante fonctionne dans phpMyAdmin mais pas du tout autrement; voici le code:
function easy_admin_node_update($node) {
if ((isset($node->type)) && ($node->type == 'projet')) {
if (($node->original->status == 0) && ($node->status == 1)) {
db_query("UPDATE {node} n, {field_data_field_projet} fdfp SET n.status=1 WHERE n.type = 'video' AND n.status =0 AND fdfp.entity_id = n.nid AND fdfp.field_projet_target_id = :nid", array(':nid'=>$node->nid));
}
else {
db_query("UPDATE {node} n, {field_data_field_projet} fdfp SET n.status=0 WHERE n.type = 'video' AND n.status =1 AND fdfp.entity_id = n.nid AND fdfp.field_projet_target_id = :nid", array(':nid'=>$node->nid));
}
}
}
Je ne comprends pas comment les fonctions db_update et db_query fonctionne, je crois.
Merci de votre aide.
J'ai essayé d'utiliser la
Permalien Soumis par Tigunn le 9 Décembre, 2014 - 14:54
J'ai essayé d'utiliser la forme objet décrite dans la doc : db_update (D7)
Cela donne:
function easy_admin_node_update($node) {
if ((isset($node->type)) && ($node->type == 'projet')) {
if (($node->original->status == 0) && ($node->status == 1)) {
$result = db_update('node')
->fields(array('status'=>1))
->condition('nid', 670, '=')
->execute();
}
else {
$result = db_update('node')
->fields(array('status'=>0))
->condition('nid', 670, '=')
->execute();
}
}
}
Cela ne fonctionne toujours pas.
Je comprend pas; en général, dans ces cas là, j'oublie un truc tout simple mais je vois pas ...
Résolu sur le forum anglais:
Permalien Soumis par Tigunn le 10 Décembre, 2014 - 13:53
Résolu sur le forum anglais:
Create module containing code db_query or db_update [SOLVED]