Joomla.it Forum
Non solo Joomla... => Sviluppo => : lumacarom 12 Jul 2008, 07:31:12
-
Buongiorno a tutti. Sono nuovo della lista ma abbastanza appassionato di Joomla.
Tempo fa avevo sviluppato un modulo per la versione Joomla 1.0.x che, fra l'altro vorrei mettere a disposizione della comunità.
Adesso ho preparato l'estensione per la versione 1.5 Fra l'altro devo ringraziare gmassi (http://sviluppare-in-rete.blogspot.com) per il tutorial che mi ha dato modo di avvicinarmi (anche se in modo forse un po' artigianale) all'ultima versione di Joomla!
Bene! Funziona tutto. Tranne ovviamente la cosa più semplice. Sono letteralmente impazzito nella creazione del pacchetto di installazione. Non che non funzioni del tutto. Non funziona la mia quesry per la generazione delle tabelle. Il sistema continua a segnalarmi un errore di sintassi nella query. Ma la stessa query copiata e incollata nel pannello di mysqlmyadmin funziona perfettamente. Il pacchetto di installazione per la vecchia versione 1.0 anche, e se cambio il file .sql con un altro pure. Non so proprio più dove andare a sbattere...
C'è qualcuno che ha un idea di come posso risolvere la cosa?!?!?
Con l'occasione. Visto che il componente deve generare una directory in fase di instalazione qualcuno mi sa dire come e dove vanno "citati" i files install e uninstall nell' XML?
Ciao a tutti e grazie per ogni aiuto.
-
Per il problemi delle query stai all'occhio con le virgolette, solitamente son loro che traggono in inganno! :)
-
Se non è quello che ha suggerito odino, posta il contenuto del file .sql e l'errore che ricevi e vediamo.
-
Ho ricontrollato e, francamente, mi pare che non ci siano errori nelle virgolette. Oltretutto la query è stata generata in automatico da mysqladm perchè, per testare il componente avevo generato le tabelle attraverso l'interfaccia grafica.
Provo a fare come mi hai detto:
ecco la query:
DROP TABLE IF EXISTS `#__docenti`;
CREATE TABLE `#__docenti` (
`nomeutente` text NOT NULL,
`password` text NOT NULL,
`tipo` text NOT NULL,
`max_file` int(11) NOT NULL default '0',
`ext` text NOT NULL )
DEFAULT CHARSET=utf8;
INSERT INTO `#__docenti` VALUES ('docenti', 'docenti', 'general', 500, '.doc, .pdf, .zip');
INSERT INTO `#__docenti` VALUES ('docenti', 'docenti', 'jolly', 500, '.doc, .pdf, .zip');
DROP TABLE IF EXISTS `#__attachment`;
CREATE TABLE `#__attachment` (
`id` int(11) NOT NULL default '0',
`pass` text NOT NULL,
`tipo` text NOT NULL,
`descrizione` text NOT NULL,
`filename` text NOT NULL )
DEFAULT CHARSET=utf8;
ed ecco il messaggio di errore:
JInstaller::install: Errore SQL. DB function failed with error number 1064
Errore di sintassi nella query SQL vicino a 'DROP TABLE IF EXISTS `jos_docenti`' linea 1 SQL=DROP TABLE IF EXISTS `jos_docenti`;
SQL =
DROP TABLE IF EXISTS `jos_docenti`;componente Installa: Errore file sql non leggibile o non presente. DB function failed with error number 1064
Errore di sintassi nella query SQL vicino a 'DROP TABLE IF EXISTS `jos_docenti`' linea 1 SQL=DROP TABLE IF EXISTS `jos_docenti`;
SQL =
DROP TABLE IF EXISTS `jos_docenti`;
Grazie ancora per l'aiuto
-
La query mi sembra giusta. È in un file esterno install.sql?
E nel file xml di installazione ci sono queste parti?
<install>
<sql>
<file charset="utf8" driver="mysql">install.sql</file>
</sql>
</install>
...
<administration>
...
<files folder="admin">
...
<filename>install.sql</filename>
...
</files>
</administration>
Se no non saprei cosa possa essere.
-
Il caso è veramente strano. Fatte tutte le verifiche ho provato con il file install.sql preso dal tuo com_pastdays e con quello funziona. Ovviamente quella tabella non serve al mio componente. Basta però che faccia l'atto di risalvare lo stesso file senza apportare nessuna modifica ed ecco che viene fuori lo stesso errore. Ho pensato ad un meccanismo di salvataggio che snaturi il file .sql ma l'estensione è proprio quella.
Bo!!! Se risolvo il problema in qualche modo vi faccio sapere. Strano che nessuno si sia ancora imbattuto nello stesso dilemma.
Grazie comunque per l'aiuto. A presto.
-
Ma allora sarà l'editor che non salva il file nel formato giusto. Quale usi? Il file deve essere salvato come utf-8. Se il tuo editor ti fa scegliere tra utf-8 con BOM e senza BOM, scegli il secondo formato.
-
Obiettivamente ho appena testato la cosa e va...con tutte le indicazioni di massi...
Non saprei che dire :-[
L'unica cosa che a me non va è che in fase di disinstallazione non legge l'uninstall.sql che contiene l'istruzione di droppare la tabella creata con l'install.sql...strano
-
Il problema sembrerebbe risolto. Anch'io avevo il sospetto che fosse la fase di salvataggio a snaturare l'estensione o la codifica che, per la cronaca era sempre utf8.
In ogni caso ho fatto ricorso al buon vecchio notepad e ho provato tutte le codifiche e... magia! Con la codifica ANSI funziona. Grazie a tutti voi per l'aiuto.
Un ultima cosa se non disturbo troppo... Il componente deve generare una directory in fase di instalazione quindi c'è un file install.nomecomponente.php che va chiamato nel file xml. Qualcuno mi sa dire la sintassi per citare questo file nell' XML? Sembra che con quella utilizzata per la vecchia versione 1.0 il sistema non "consideri" il file install.
-
Basta inserire questi tag nel file di installazzione:
<install>
<sql >
<file charset="utf8" driver="mysql">install.<nome_componente>.sql</file>
</sql>
</install>
<uninstall>
<sql >
<file charset="utf8" driver="mysql">uninstall.<nome_componente>.sql</file>
</sql>
</uninstall>
ciao e a presto!
PS: non devono per forza essere messi in una directory dopo l'installazzione...
-
OK! Al momento non ho il tempo di provare ma spero di non trovare altri intoppi. Comunque grazie.
A presto.
-
Scusami Evangelis se ritorno sulla questione un po' a scoppio ritardato. Ma solo adesso mi sono rimesso al mio componente.
Probabilmente non avevo formulato bene la mia domanda finale. Ho un file di tipo .php che, in fase di installazione crea una directory nella cartella principale. Questa è una operazione che non posso certo fare con SQL. Quindi chiedevo il comando XML che, in fase di installazione appunto, localizza il file install.[nomecomponente].php e lo esegue.
Nella vecchia versione di Joomla questo comando era:
<installfile>install.[nomecomponente].php</installfile> ma sulla 1.5 non funziona...