PDA

Zobacz pełną wersję : Moduły - tworzenie tabel w bazie



Robster
06-09-2010, 17:37
Czy można dodać do paczki instalacyjnej plik, który będzie odpowiedzialny za stworzenie odpowiedniej tabeli w bazie danych?
Zacząłem od tworzenia modułów i nigdzie nie znalazłem informacji na ten temat. Dopiero przy tworzeniu komponentów jest o tym wspomniane, ale struktura folderów się wtedy zmienia i chyba bez controllera nie jest to możliwe.

moje
06-09-2010, 22:57
Moduły z założenia pobierają i wyświetlają dane. Są rozwiązania gdzie moduł dodaje informacje do bazy danych ale już do istniejącej tabeli (np.: moduł rejestracji). Sprawdź czy podczas instalacji modułu nie da się utworzyć nowej tabeli. Są rozszerzenia (komponenty), które w mają umieszczony kod w opisie(w pliku xml), w momencie wyświetlania opisu zaraz po instalacji w Joomla, w tym opisie pojawia się przycisk instaluj,po kliknięciu tworzona jest nowa tabela/nowe tabele.
Pokombinuj w ten sposób.

dkint
06-09-2010, 23:09
Witam

Ja bym spróbował tak


<install type="module" version="1.5.0">
<name>Nazwa modułu</name>
<creationDate>2010-09-06</creationDate>
<author>dkint</author>
<authorEmail>info@jakisemail.info</authorEmail>
<authorUrl>http://www.jakasstrona.info</authorUrl>
<copyright>Info o prawach autorskich</copyright>
<license>Info o licencji</license>
<version>1.0.0000</version>
<description>Moduł do czegoś tam</description>
<installfile>install.properties.php</installfile>
<uninstallfile>uninstall.properties.php</uninstallfile>
<install>
<queries>
<query>
CREATE TABLE IF NOT EXISTS `#__jakas_tabela` (
`id` int(2) NOT NULL auto_increment,
`name` varchar(100) default NULL,
`alias` varchar(100) default NULL,
`parent` int(2) default NULL,
`published` tinyint(1) NOT NULL,
`ordering` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
</query>
</queries>
</install>
<files>
<filename module="mod_jakismodul">mod_jakismodul.php</filename>
<filename>helper.php</filename>
<filename>index.html</filename>
<filename>tmpl/default.php</filename>
<filename>tmpl/index.html</filename>
</files>
</install>Oczywiście to przykład do prób, nie wiem jaki moduł tworzysz ...

pozdrawiam
Krzysiek

Robster
06-09-2010, 23:16
@moje chciałbym to załatwić w module, bo tworzę dość prostą aplikację i nie wiem czy jest sens podciągać to pod komponent.

@dkint dzięki wielkie, jutro spróbuję czy coś z tego wyjdzie. Starałem się to zrobić tak jak w komponentach, ale bez kontrolera nic z tego nie wyjdzie.

moje
06-09-2010, 23:18
Napisałem o komponencie bo w takim rozszerzeniu to widziałem,osobiście nie sprawdzałem czy działa to w module ale powinno.

dkint
06-09-2010, 23:24
Witam

Chyba za szybko się pośpieszyłem bo jednak nie zapisuje do bazy ... sorry mój błąd, testowałem na komponentach ...

-edit-

może jednak nie będzie tak źle, poczytaj tutaj ... http://docs.joomla.org/Sql_parameter_type ...

pozdrawiam
Krzysiek

Robster
06-09-2010, 23:55
@dkint pod tym linkiem jest tylko wyjaśnione jak pobierać dane z tabeli i wyświetlać jako drop down list.
Pokombinuję jeszcze nieco jutro, a jak nie da rady, to zwyczajnie podciągnę to pod komponent i też będzie ok.

Dzięki Panowie.

moje
07-09-2010, 00:34
W:

<description> ... </description>
Umieść link do pliku jakis-modul_instal.php (z użyciem encji zamiast znaków specjalnych).
Ten o to plik utworzy Ci odpowiednią tabelę, po czym otworzy plik jakis-modul.xml jako plik tekstowy, usunie z niego link do pliku jakis-modul_insal.php, żeby zapobiec ponownemu utworzeniu tabeli, zapisze i zamknie plik jakis-modul.xml, a na koniec otworzy stronę/przekieruje na stronę listy modułów (czyli index.php?option=com_modules na zapleczu).

dkint
07-09-2010, 09:53
Witam

Robster faktycznie nie przyda Ci się i ten link - przetestowałem i nie działa, skorzystaj z porady moje albo zrób komponent ...

pozdrawiam
Krzysiek

Robster
07-09-2010, 10:04
@moje spróbuję chodź troszeczkę to dla mnie kosmos (nigdy nie edytowałem kodem .php innego pliku .php - albo inaczej, nigdy w ten sposób nie usuwałem kodu z pliku). Jak nie wyjdzie, to zrobię komponent.

EDIT:
Zrobiłem tak jak napisałeś @moje i wszystko ładnie śmiga :) Dzięki serdeczne.