update-funktion ohne wirkung
Eingetragen von NeoAnderson1982 (46)
am 18.04.2008 - 05:58 Uhr in
am 18.04.2008 - 05:58 Uhr in
Ich hab noch ne kleine Frage (ich weiß, ich nerv langsam ;), aber ist halt ein komplett anderes Programmieren als bisher mit Joomla 1.5).
Ich habe in meinem Modul die update-funktion:
function exericse_update($node) {
// if this is a new node or we're adding a new revision,
if ($node->revision) {
exercise_insert($node);
}
else {
db_query("UPDATE {exercise} SET typ = %d WHERE vid = %d",$node->typ,$node->vid);
}
}
Habe sie soweit aus node_example übernommen und ändere Testweise erstmal nur einen Wert des node.
Wenn ich jetzt aber auf Bearbeiten beim Knoten gehe und den Wert typ ändere und speichere, dann wird der Wert in der Datenbank nicht geändert.
Wo ist jetzt wieder mein Fehler? Sehen tue ich keinen.
Die Tabelle heißt "exercise", typ hat den Wert int(10). Das Erstellen funktioniert wunderbar.
Mit bestem Dank nochmals und immer wieder
Aljoscha
- Anmelden oder Registrieren um Kommentare zu schreiben
Du verwechselst integer mit string
am 18.04.2008 - 15:09 Uhr
function exericse_update($node) {
// if this is a new node or we're adding a new revision,
if ($node->revision) {
exercise_insert($node);
}
else {
db_query("UPDATE {exercise} SET type = %d WHERE vid = %d",$node->type,$node->vid);
}
}
$node->type ist vom Typ String, du sagst Drupal aber es wäre vom Typ Integer (typ = %d).
Außerdem heißt es $node->type, es sei denn Du hast $node->typ vorher definiert.
Richtig wäre:
function exericse_update($node) {
// if this is a new node or we're adding a new revision,
if ($node->revision) {
exercise_insert($node);
}
else {
db_query("UPDATE {exercise} SET typ = '%s' WHERE vid = %d",$node->typ,$node->vid);
}
}
-----------------------------------
Drupal Ruhrgebiet Usergroup
http://groups.drupal.org/ruhrgebiet
Danke für deine
am 18.04.2008 - 17:48 Uhr
Danke für deine Antwort.
Also der Eintrag "typ" in der Tabelle ist vom Typ int(10) (nicht mit $node->type zu verwechseln, ist etwas anderes).
Der query sah vorher bei mir anders aus und es wurden noch andere Werte der Tabelle meines node-types geupdated. Doch leider passierte gar nichts, obwohl er sagte, dass der Eintrag geändert wurde.
Es kommt ja keine Fehlermeldung. Das ist das, was mich verwundert.
Also die Tabelle sieht so aus:
nid int(10)
vid int(10)
typ int(10)
category int(10)
howto text
things text
players int(10)
In "exercise_form(&$node)" definiere ich typ so:
$form['meta']['typ'] = array(
'#type' => 'select',
'#title' => t('Type'),
'#required' => TRUE,
'#default_value' => $node->typ,
'#options' => $typen,
'#description' => t('Categorize the exercise\'s type.'),
'#weight' => -4,
);
Und $typen hole ich in derselben Funktion so:
$query = "SELECT * FROM {exercise_types}";
$result = db_query(db_rewrite_sql($query));
$typen = array();
while($typ = db_fetch_object($result)){
$typen[$typ->id] = $typ->name;
}
Da Drupal keinen Fehlercode ausspuckt, dachte ich, es muss irgendeine Kleinigkeit im SQL-Statement der Update-Funktion sein?!
Hoffe, du siehst den Fehler.
Danke nochmals für deine Hilfe
Aljoscha
logs
am 18.04.2008 - 19:01 Uhr
Hast Du schon in die Drupal-Logs gesehen (unter admin/logs/watchdog)? Vielleicht steht das Logging bei Dir auf "Fehler ins Protokoll schreiben", was prinzipiell ja eine gute Idee ist, falls die Site schon online ist (unter admin/settings/error-reporting).
Die seite
am 18.04.2008 - 19:37 Uhr
Die seite admin/logs/watchdog kennt drupal nicht, nur admin/reports/status.
Dort stehen alle Änderungen an der Übung als erfolgreich drin.
Aber das sql-statement hat keine Fehler?