Jump to content
xt:Commerce Community Forum

[SOLVED] plugin sql_install


hoschii

Recommended Posts

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

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

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

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

Auf die Idee bin ich bis jetzt noch nicht gekommen :D 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

Archived

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

×
  • Create New...