welchen Trick muss man als SQL-Newbie eigentlich beachten, wenn man für ein eigenes Modul seine erforderlichen Tabellen und Änderungen anlegen möchte.
Das erstellen über CREATE TABLE funktioniert einwandfrei, was absolut nicht geht ist das ereitern vorhandener Tabellen über z. B.:
ALTER TABLE e_xoops_glossaire ADD submitter TINYINT( 8 ) NOT NULL default '0';
Die Installationsroutine im Adminbereich meldet jedesmal einen ungültigen SQL-Befehl. Die gleiche Zeile in myphpAdmin funktioniert aber super.
Any hints ???
Danke und bye Frank
Nobse :
06.04.2003 14:39
Du must schon eine kleine update.php schreiben. Ich nehme an du hast das in die sql.php des moduls gesetzt dort ergibt es keinen Sinn.
Update.php
<?php include("../../mainfile.php"); include(XOOPS_ROOT_PATH."/header.php"); global $db; $result = $db->queryF("ALTER TABLE ".$db->prefix("glossaire")." ADD submitter TINYINT(8) NOT NULL DEFAULT '0'"); include (XOOPS_ROOT_PATH."/footer.php"); ?>
Sollte so klappen.
FrankP :
06.04.2003 17:06
Ahhhh. I see.....
Wo bindet man denn diese update.php dann am besten ein, so dass sie ausgeführt wird, wenn der Admin über die Modulseite das Modul installieren möchte?
Danke für die extrem schnelle Antwort !!! bye Frank
Nobse :
06.04.2003 17:25
Die Update.php ist für den fall das das Module installiert ist und schon Daten in der DB sind, dann kann über die update ein feld zugefügt werden. Wenn du beim installieren des Modules das zusätzliche Feld haben willst dann über die SQL.PHP des Modules.
CREATE TABLE glossaire ( id int(10) DEFAULT '0' NOT NULL auto_increment, lettre varchar(8) NOT NULL, nom longtext NOT NULL, definition longtext NOT NULL, affiche varchar(5) NOT NULL, lien varchar(255) NOT NULL, submitter TINYINT(8) NOT NULL DEFAULT '0', PRIMARY KEY (id), UNIQUE id (id) );
so wird beim installieren des Modules auch dein Feld angelegt.
FrankP :
06.04.2003 18:44
Das ist ja genau mein Problem.
Die neuen Tabellen zu erstellen klappt super. Aber kann man das notwendige erweitern bereits vorhandener Tabellen auch über dieses SQL-Script forcieren, da diese neuen Felder ja ebenfalls benötigt werden? Wenn nein ist es also erforderlich: - Verzeichnisse erstellen - Moduladministration --> Installieren - Über Browser URL die Update.php aufrufen.
Korrekt?
Vielen Dank und ciao, Frank
Nobse :
06.04.2003 22:38
Das geht nur über eine Update.php. Wenn du die admin/index.php auch modifizierst kannst du es darüber abfangen - abfrage ob tabellenfeld vorhanden - wenn nicht anlegen