[gelöst] Drupal <---> DB, was ist nun hee ?
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 10.08.2011 - 08:30 Uhr in
Hallo zusammen, ich hab ein kleines Problem mit meiner Drupal DB. Ich hab einen Inhaltstyp erstellt mit mehreren Feldern. ein feld davon ist ein status Feld was auf einen default wert von 0 gesetzt wird. Komm ich nun auf den erstellten node wird das status feld von 0 auf 1 gesetzt. In der zeit wird ein sql befehl einmal ausgeführt. Steht dann der status auf 1 so soll nichts mehr passieren. Das skript änder erfolgreich den wert von 0 auf 1 in der DB. doch wenn ich nun in devel mir das anschau merk ich das der wert nicht aus der DB geholt wird. in dem fall steht in der DB bei dem Feld eine 1. in Drupal wenn ich mir das feld hole "$node->status[0]['value']; gibt er mir eine " 0 " aus. auch wenn ich den node 5 mal aktualisiere steht immer noch eine " 0 " im Feld. Nun frag ich mich was da los ist ? an was kann sowas liegen ? stimmt was in Drupal nicht oder in Msql ?
Ich hoffe mir kann wer helfen ich steig grad nicht mehr durch :/
Gruß Hacky
- Anmelden oder Registrieren um Kommentare zu schreiben
Cache
am 10.08.2011 - 10:24 Uhr
... in dem fall steht in der DB bei dem Feld eine 1. in Drupal wenn ich mir das feld hole "$node->status[0]['value']; gibt er mir eine " 0 " aus. auch wenn ich den node 5 mal aktualisiere steht immer noch eine " 0 " im Feld. Nun frag ich mich was da los ist ? an was kann sowas liegen ? stimmt was in Drupal nicht oder in Msql ?
Weder noch. Beide Werte sind korrekt.
In der Datenbank hast Du den aktuellen Wert (also die 1). Drupal gibt Dir an der Stelle jedoch das gecachte Node-Objekt (wie und wo holst Du Dir denn
$node->status
?), welches immernoch den Wert "0" für das Feld status hat.Falls Du mit [api:node_load:6] arbeitest, solltest Du nicht
<?php $node = node_load($nid); ?>
, sondern<?php $node = node_load(array('nid' => $nid)); ?>
verwenden. Ersteres gibt Dir das Node-Objekt aus dem Cache, Letzteres ein frisches Node-Objekt zurück.hth,
Stefan
Da ich auf der node.tpl.php
am 10.08.2011 - 11:30 Uhr
Da ich auf der node.tpl.php bin hol ich mir das objekt so:
<?php
// Führt wohl davor schon $node = node_load($nid) aus...
$node->status[0]['value'];
?>
dann cachet der schon davor irgendwie, aber das der Herr "Drupal" das so krass cachet ist doch krass ? Ich werd mal deinen Tipp zu herzen nehmen und es ausprobieren danke :)
Leider funktioniert dein Tipp
am 10.08.2011 - 17:52 Uhr
Leider funktioniert dein Tipp nicht,
$NewNodeArray = node_load(array('nid' => $nid));
dsm($NewNodeArray);
in der DB steht was anderes auf der Drupal seite noch der Cache wert :/
Ich lösch nun den Cache
am 10.08.2011 - 18:01 Uhr
Ich lösch nun den Cache eintrag jedes mal von diesem Node...
<?php
$cid = 'content:'. $nid .':'. $nid;
$table = 'cache_content';
cache_clear_all($cid, $table);
?>