hoschii Posted November 8, 2010 Report Share Posted November 8, 2010 Hallo zusammen, ich habe mal wieder das Forum durchsucht und noch nichts gefunden, was mir weiter geholfen hat, deshalb muss ich leider schon wieder einen neuen Thread eröffnen. Ich bin gerade dabei ein Plugin zu erstellen, welches die products-Tabelle erweitern soll. Leider funktioniert das irgendwie nicht, aber ich kann auch keinen Fehler erkennen. Könnt ihr mir bitte sagen, was falsch an folgendem Code ist? <sql_install> <![CDATA[ if(!this->_FieldExists("tmp_col_test1", TABLE_PRODUCTS)) $db->Execute("ALTER TABLE `" . TABLE_PRODUCTS . "` ADD `tmp_col_test1` int(11) NULL;"); ]]> </sql_install> Die Spalte wird nämlich nicht angelegt, ich bekomme aber auch keine Fehlermeldung. Danke schonmal im voraus. Gruß Link to comment Share on other sites More sharing options...
Ballonsupermarkt Posted November 8, 2010 Report Share Posted November 8, 2010 Versuch mal folgendes: <sql_install> <![CDATA[ if(!this->_FieldExists('tmp_col_test1', TABLE_PRODUCTS)) $db->Execute('ALTER TABLE ' . TABLE_PRODUCTS . ' ADD `tmp_col_test1` int(11) NULL;'); ]]> </sql_install> Link to comment Share on other sites More sharing options...
Ballonsupermarkt Posted November 8, 2010 Report Share Posted November 8, 2010 Ach ja. Auch brav Plugin deinstalliert und neu installiert nach dem Einfügen des SQL-Codes? Link to comment Share on other sites More sharing options...
hoschii Posted November 8, 2010 Author Report Share Posted November 8, 2010 Hallo Ballonsupermarkt, danke für deine Antwort. Hab deinen Vorschlag probiert: selbes Ergebnis. Hab das Plugin auch immer wieder deinstalliert und installiert, um verschiedene Varianten auszuprobieren. Nervt mittlerweile schon Hast du oder jemand anders noch eine Idee, was nicht passt oder wie man das evtl. debuggen könnte? Ich weiß nich, ob's eine Rolle spielt, aber bei der Installation wird ganz am Anfang immer "Warning: Invalid argument supplied for foreach() in ...\xtFramework\classes\class.plugin.php on line 0" angezeigt. Er installiert die Spachvariablen und die Hooks aber alle ordentlich. Gruß Link to comment Share on other sites More sharing options...
Ballonsupermarkt Posted November 9, 2010 Report Share Posted November 9, 2010 Hm... Interessant wäre noch, ob die entsprechende Anfrage via phpMyAdmin problemlos durchläuft und wenn ja, welchen Rückgabewert $db->Execute() zurückliefert. Link to comment Share on other sites More sharing options...
hoschii Posted November 9, 2010 Author Report Share Posted November 9, 2010 Danke für deine Hilfe Ballonsupermarkt. Also die Abfrage funktioniert über phpmyadmin ohne Probleme. Wie ich an den Rückgabewert von $db->Execute() oder _FieldExists() komme müsstest du mir aber sagen. Ich hab leider keine Idee, da ich über echo nichts ausgeben kann, bzw. nichts angezeigt wird. Link to comment Share on other sites More sharing options...
Ballonsupermarkt Posted November 9, 2010 Report Share Posted November 9, 2010 Versuch mal das: $result=$db->Execute(......); mail('[email protected]', 'db-test', print_r($result, true)); Link to comment Share on other sites More sharing options...
hoschii Posted November 9, 2010 Author Report Share Posted November 9, 2010 Das mit dem Mail versenden wollte nicht, deshalb hab ich folgendes probiert: <sql_install> <![CDATA[ $handle = fopen("./tmplog.txt", "a") or die("log kann nicht geöffnet werden"); fwrite($handle, "Field exists: " . $this->_FieldExists('tmp_col_test1', TABLE_PRODUCTS)); fclose($handle); ]]> </sql_install> Leider wird aber nicht einmal die Datei angelegt. Wenn ich den Code zum Dateiöffnen in einem Hook ausführe, wird die Datei angelegt. Grundsätzlich sollte es also funktionieren. Gibt es noch andere Möglichkeiten, um zu prüfen ob der Code überhaupt ausgeführt wird? Link to comment Share on other sites More sharing options...
Ballonsupermarkt Posted November 9, 2010 Report Share Posted November 9, 2010 Na ja, schlimmstenfalls schreibst du Ergebnis in ein Feld einer Datenbanktabelle, die du vorher angelegt hast und schaust dir dann den Inhalt an. Link to comment Share on other sites More sharing options...
hoschii Posted November 9, 2010 Author Report Share Posted November 9, 2010 Auf die Idee bin ich bis jetzt noch nicht gekommen Danke. Ich hab jetzt eine neue Tabelle angelegt und will folgendes ausführen: $db->Execute("INSERT INTO `tmplog` (`text`) VALUES ('test')"); Leider wird auch dies nicht ausgeführt. Ich hab irgendwie das Gefühl, dass der komplette <sql_install> und <sql_uninstall> Block ignoriert wird. Hab ich vlt. trotz mehrfacher Überprüfung einen Fehler in der Struktur? Hier mal die komplette Plugin-Datei: <xtcommerceplugin> <title>Test Plugin</title> <version>1.0.0</version> <code>test_plugin</code> <url></url> <icon></icon> <type>core</type> <sql_install> <![CDATA[ $db->Execute("INSERT INTO `tmplog` (`text`) VALUES ('test');"); ]]> </sql_install> <sql_uninstall> <![CDATA[ $db->Execute("INSERT INTO `tmplog` (`text`) VALUES ('test');"); ]]> </sql_uninstall> <configuration /> <language_content /> <plugin_code /> </xtcommerceplugin>[/code] Link to comment Share on other sites More sharing options...
Ballonsupermarkt Posted November 9, 2010 Report Share Posted November 9, 2010 Ja. Nimm statt <sql_install> lieber <db_install> und schon sollte alles wunderbar funktionieren. Hatte überhaupt nicht darauf geachtet, daß du falschen Tag benutzt hattest. Sorry! Link to comment Share on other sites More sharing options...
hoschii Posted November 9, 2010 Author Report Share Posted November 9, 2010 Boar. Super. Ich danke dir. Dann muss ich mir wohl merken, nie dem Handbuch von Veyton zu vertrauen. Der Inhalt von Handbuch Plugin Aufbau ist dann ja eindeutig falsch. Und das Buch bei Galileo Press übernimmt das einfach ... Kein Wunder das ich da ewig für brauche Danke nochmal für deine Hilfe. Gruß Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.