Zobacz pełną wersję : Tworzenie tabeli w bazie podczas instalacji własnego modułu
Witam.
Tworzę własny moduł.
Próbowałem utworzyć tabelę w bazie MySQL podczas instalacji modułu. Postąpiłem w sposób podany w tym oto kursie.http://www.wromanek.info/artykuly/16-kurs-pisania-komponentow-dla-joomla-15-mvc/54-lekcja-8-tworzymy-paczk-instalacyjn.html (jeżeli chodzi o plik .xml). Moduł instaluje się poprawnie, jednak tabela nie tworzy się. Nawet oryginalny skopiowany i wklejony do pliku .xml kod od <install> do </uninstall> nie tworzy u mnie tabeli.
Tak samo nie mogę jej utworzyć poprzez setQuery(). Zapytania SELECT działają, ale CREATE nie.
Tabela tworzy się jednak, jeżeli użyję zwykłego mysql bez korzystania z funkcji joomla.
Czy problemem jest to, że może poprzez moduł nie da się utworzyć tabeli, a jest to możliwe tylko w komponencie?
Czy powinienem podać jeszcze jakieś informacje?
Ja sam napisałem odpowiedz na to, w inny temacie, który jest na forum - wystarczyło poszukać.
EDIT:
Hej Robster, nie obraź się ale nie pamiętałem w czyim temacie to było - ten czas tak leci.
Dokładnie i to bodajże była odpowiedź na moje pytanie, więc masz już 2 poszlaki :)
//Cześć @moje :)
Domyślam się, że chodzi o ten temat: http://forum.joomla.pl/showthread.php?43575-Modu%C5%82y-tworzenie-tabel-w-bazie&highlight= .
Natknąłem się na niego już wcześniej, ale przedstawione w nim rozwiązanie wydało się dla mnie na pierwszy rzut oka słabo zrozumiałe i trochę kombinowane. Następnie znalazłem tamten kurs i próbowałem coś zdziałać wg niego.
Jeżeli chodzi o ten plik, to tworzenie tabeli powinno odbywać się w nim przez funkcje joomli czy zwykłe mysql? Jeżeli przez funkcje joomli, to tak jak pisałem, CREATE mi w nich nie działało, a jeżeli przez zwykły, to czy nie będzie jakichś problemów z uprawnieniami (bo taką sugestię dostałem)?
Żeby CREATE zadziałało musisz mieć połączenie z bazą danych inaczej nic to nie da.
Wypożyczyłem ostatnio fajną książkę "Joomla! Profesjonalne tworzenie stron WWW" pana Dana Rahmela. Fajnie jest tam przedstawiona kwestia tworzenia modułów i szablonów. Sam nie wiem dlaczego ale przepisałem ci kawałek :)
W pliku .xml dajesz coś takiego:
<install>
<sql>
<file driver="mysql" charset="utf8">install.sql</file>
</sql>
</install>
<uninstall>
<sql>
<file driver="mysql" charset="utf8">uninstall.sql</file>
</sql>
</uninstall>
Oczywiście pamiętając o zadeklarowaniu odpowiednich plików:
<filename>install.sql</filename>
<filename>uninstall.sql </filename>
Do pliku install.sql dajesz:
CREATE TABLE IF NOT EXISTS '#_guestbook'
('id' INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
'message' text NOT NULL, 'created_by' INTEGER UNSIGNED NOT NULL,
'location' VARCHAR(45), 'created' TIMESTAMP NOT NULL,
'userip' VARCHAR(16), PRIMARY KEY('id'))
A w pliku uninstall.sql:
DROP TABLE IF EXISTS '#_guestbook'
U mnie wszystko ładnie działa.
Pozdrawiam
@Robster
U mnie nie dziala chyba ze w com_... a mowa chyba o modułach
Mozesz sprawdzic czy cos magicznego zapomiales dopisac?
a moze oszukuja w tej ksiazce
@EkleErs możliwe, bo to jest fragment z działu o komponentach, ale ja go wstawiałem do swojego modułu i działał. Zaraz napisze coś prostego i zobaczę co z tego wyjdzie.
---------------------------
@EkleErs zabij mnie, ale nie mogę tego odtworzyć :/ Miałem to wcześniej na dysku, ale padł i nie mogłem tego odzyskać. Teraz próbowałem ponownie to zrobić i kiszka :/ Nawet tworząc baze w pliku php nie chce się ona zapisać, więc pewnie popełniam ten sam błąd. Jak znajdę chwilę czasu w weekend (paradoks świąt), to spróbuję to zrobić.
Ok nie spiesz sie. Merry Christmas.
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!