Jump to content
xt:Commerce Community Forum

function _set() funktioniert einfach nicht


newby5

Recommended Posts

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

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

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

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

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

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

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...