Come si usano correttamente node_load e node_save?

11 contenuti / 0 new
Ultimo contenuto
Come si usano correttamente node_load e node_save?

:-) Altro dubbio amletico che vorrei proporvi e per il quale spero possiate aiutarmi.

Ho il seguente script:

$current_nodex = node_load($carid);
$nuovo_valorex=19994;
$idutente=11;
$testo="Prova test";
$current_nodex->field_stato[0][value] = $nuovo_valorex;
$cuttent_nodex->field_persona[0][nid] = $idutente;
$cuttent_nodex->field_testo[0][value] = $testo;
node_save($current_nodex);

Ogni volta che lo eseguo mi salva soltanto il valore nel campo field_stato.
Perché non mi aggiorna pure field_persona e field_testo?

E' giusta la sintassi che sto usando o ci sono errori di qualche tipo?

Il print_r del nodo è il seguente:

stdClass Object
(
    [nid] => 3
    [type] => auto
    [language] => it
    [uid] => 11
    [status] => 1
    [created] => 1403662111
    [changed] => 1411761515
    [comment] => 0
    [promote] => 0
    [moderate] => 0
    [sticky] => 0
    [tnid] => 0
    [translate] => 0
    [vid] => 123
    [revision_uid] => 1
    [title] => test
    [body] =>
    [teaser] =>
    [log] =>
    [revision_timestamp] => 1411761525
    [format] => 1
    [name] => manager
    [picture] =>
    [data] => a:4:{s:13:"form_build_id";s:37:"form-fe9a44c998c63ef213ddf5801555d752";s:7:"contact";i:1;s:18:"admin_compact_mode";b:0;s:29:"taxonomy_image_disable_images";i:0;}
    [rdf] => Array
        (
        )
    [field_stato] => Array
        (
            [0] => Array
                (
                    [value] => 400
                )
        )
    [field_persona] => Array
        (
            [0] => Array
                (
                    [nid] =>
                )
        )
    [field_testo] => Array
        (
            [0] => Array
                (
                    [value] =>
                )
        )
)

Potete notare che nell'array, diversamente da field_stato, i nodi field_testo e field_persona hanno valore vuoto.
Forse è per questo che non riesce ad aggiornarli?
E se si, come devo fare?

Ciao,
prima di chiamare node_save prova a chiamare anche node_validate e node_submit:

<?php
$current_nodex
= node_load($carid);
$nuovo_valorex=19994;
$idutente=11;
$testo="Prova test";
$current_nodex->field_stato[0][value] = $nuovo_valorex;
$cuttent_nodex->field_persona[0][nid] = $idutente;
$cuttent_nodex->field_testo[0][value] = $testo;
node_validate($current_nodex);
$node_to_save = node_submit($current_nodex);
node_save($node_to_save);
 
?>

Ciao DarthDrupal (troppo forte questo nick ;) )
ho fatto come mi hai consigliato, ma il risultato non cambia.

Il campo field_stato viene aggiornato... gli altri due no! :/

Giusto per la cronaca, ti dico anche di che tipo sono i vari campi.

"field_stato" è un Select list di tipo Content Taxonomy Fields
"field_persona" è un Explorer di tipo Node reference
"field_testo" è un Text field di tipo Testo

E' strano, ho fatto un test sul mio drupal in locale e sono riuscito senza problemi.
Hai controllato che i permessi sui singoli campi siano corretti?

Uhm.... come si controllano i permessi sui singoli campi?
Scusa l'ignoranza..

dalla pagina dei permessi: http://tuosito/admin/user/permissions

stimart wrote:
Ho il seguente script:
$current_nodex->field_stato[0][value] = $nuovo_valorex;
$cuttent_nodex->field_persona[0][nid] = $idutente;
$cuttent_nodex->field_testo[0][value] = $testo;
node_save($current_nodex);


È molto più semplice di così: nella seconda e terza riga hai scritto cuTTent invece di cuRRent, quindi assegna quei valori ad un'altra variabile che poi va persa...

Angelo Turetta

.....wow

OH MY GOD!!!!!!!!!!! Era praticamente IMPOSSIBILE all'occhio umano poter notare questo tipo d'errore!!
Complimenti Angelo :D :D :D ora testo subito correggendo la variabile... e vi faccio sapere se va tutto a buon fine.

Grazie Angelo... era proprio quello il problema! :D
Ora funziona benissimo!!!

eh, beh. Un buon display 1920x1200 raddoppia il prezzo del notebook, ma rende tutto incredibilmente più chiaro.

Angelo Turetta