newby5 Posted October 30, 2012 Report Share Posted October 30, 2012 Hallo zusammen, ich programmiere gerade ein eigenes "kleines" PlugIn. Ich habe nun schon 3 oder 4 Plugins programmiert, aber dafür noch nie die Funktion _set() benötigt, da sich die Datenbanktabelle bisher immer "von alleine gefüllt" hat. Nun habe ich aber das Problem, dass ich beim Anlegen eines neuen Datensatzes immer nur folg. Meldung erhalte anstatt das Formular: Leider konnte die Seite nicht geladen werden. Bitte drücken Sie F5 oder den Aktualisieren Button in Ihrem Browser und versuchen Sie es erneut. Sollte das Problem nach dem Neuladen erneut auftreten wenden Sie sich bitte an unseren Support unter ([email protected]) Der Quellcode meiner Funktion sieht folgendermaßen aus: function _set($data, $set_type='edit'){ global $db, $language, $filter; $obj = new stdClass; $o = new adminDB_DataSave($this->_table, $data, false, __CLASS__); $obj = $o->saveDataSet(); return $obj; }[/PHP] Sieht vielleicht von euch jemand den Fehler? Ich finde ihn einfach nicht... Desweiteren habe ich noch Probleme mit der Funktion _setStatus(). Ich kann beim Bearbeiten des Datensatzes den Status wechseln. Setze ich jedoch einen Haken und will dann im Menü den Status ändern, funktioniert nichts. Hierzu auch mein Quellcode: [PHP]function _setStatus($id, $status){ global $db, $xtPlugin; $id = (int)$id; if(!is_int($id)) return false; $db->Execute("UPDATE ".$this->_table." set status = ".(int)$status." where tag_id = '".$id."'"); }[/PHP] Vielen vielen Dank für eure Hilfe. Link to comment Share on other sites More sharing options...
Sentor77 Posted October 30, 2012 Report Share Posted October 30, 2012 Moin, ich gebe dir mal den Code meiner _set(). Da gibt es einige Unterschiede. Diese funktioniert sowohl bei der Neuanlage wie auch bei der Editierung einzelner Werte. function _set($data, $set_type = 'edit') { global $db,$language,$filter,$seo; $obj = new stdClass; foreach ($data as $key => $val) { if($val == 'on') $val = 1; $data[$key] = $val; } $oC = new adminDB_DataSave($this->_table, $data, false, __CLASS__); $objC = $oC->saveDataSet(); if ($set_type=='new') { // edit existing $obj->new_id = $objC->new_id; $data = array_merge($data, array($this->_master_key=>$objC->new_id)); } if ($objC->success) { $obj->success = true; } else { $obj->failed = true; } return $obj; } [/PHP] Eventuell löst da sauch schon dein 2. Problem, dadurch dass "on" values in "1" umgewandelt werden. Ansonsten schau dir mal den Namen des Feldes in der Datenbank an, ob der auch wirklich "Status" heisst. Bei mir hieß das Feld z.B. "attachment_status" und ich musste die _setStatus() entsprechend anpassen. LG Link to comment Share on other sites More sharing options...
newby5 Posted October 30, 2012 Author Report Share Posted October 30, 2012 Hallo Sentor77, also das zweite Problem konnte ich lösen. Ich hatte where tag_id = [/PHP] als SQL-Aufruf stehen, dabei existiert gar keine tag_id... Nun habe ich es zu id = umgewandelt und es funktioniert (zusätzlich hatte ich tatsächlich meinen Status in der DB anders benannt...) Vielen Dank für die Anregung. Das erste Problem konnte ich jedoch leider noch nicht lösen, aber ich versuche es weiter. Vielen Dank schonmal für deinen Ansatz. Link to comment Share on other sites More sharing options...
newby5 Posted October 31, 2012 Author Report Share Posted October 31, 2012 Habe noch eine Frage: Definierst du irgendwo weiter oben die Variable $val ? Dann könnte dies nämlich der Fehler sein, dass es nicht geht, weil bei mir evt. die Variable anders heißt. Nur weiß ich zur Zeit nicht welche Variable auf "on" geprüft werden soll? Vielen Dank für deine Hilfe. Lg Link to comment Share on other sites More sharing options...
Sentor77 Posted October 31, 2012 Report Share Posted October 31, 2012 Moin, klar definiere ich $val: foreach($data as $key => $val) { ... }[/PHP] Im Prinzip ist $val damit nichts anderes als der Wert einer Datenbankspalte und $key ist der Name der Spalte. Manche Plugins setzen statt true/false oder 1/0 auch gerne on/off. Mit dieser Prüfung wandelst du alles was "on" ist in 1 um und das kann dann wiederum verarbeitet werden. LG Link to comment Share on other sites More sharing options...
newby5 Posted October 31, 2012 Author Report Share Posted October 31, 2012 Mhh, stimmt, macht Sinn... Aber ich versteh einfach nicht, warum diese Funktion nicht bei mir geht... Das gibts doch echt nicht. ich probiere jetzt mal die Funktion in einem anderen Plug-In von mir aus, wenn dort auch nicht geht, dann weiß ich echt nicht weiter Vielen Dank dennoch für deine Hilfe. EDIT: Also es scheint mal nicht am Plug-In zu liegen. In anderen Plug-Ins funktioniert es auch nicht. Kann ich dir mal per PN meine komplette Datei zuschicken? Vielleicht habe ich ja noch irgendwo einen Fehler drin. Link to comment Share on other sites More sharing options...
newby5 Posted October 31, 2012 Author Report Share Posted October 31, 2012 So, ich habe den Fehler gefunden!!!! Ich hatte in der Funktion _get() vergessen, dass dort auch nochmal eine Anweisung rein muss für den Button "neu". Jetzt funktioniert es Vielen vielen Dank dennoch. Lg, Britta Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.