Back to top

Autore Topic: [Risolto] Creare e inserire dati in tabella con installer di joomla.  (Letto 7381 volte)

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Sto cercado una soluzione alla necessità di creare ed inserire dati in tabelle evitando il passaggio da phpmyadmin.

E' possibile inserire tabelle e dati da backend con la funzione installer nativa di joomla, senza inserire nessuna estensione ?

Pensavo di usare un file XML zippato con i dati delle tabelle. Fatte alcune prove ma senza esito.
« Ultima modifica: 03 Mar 2010, 09:53:01 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #1 il: 01 Mar 2010, 21:41:23 »
ciao vales,
  a mio parere non è possibile, e se dovesse funzionare probabilmente sarebbe un bug ;D

hai visto se c'è qualcosa di adattabile nella sezione 'Data Import & Export' dello JED? (scusa la banalità :( )

... altrimenti mi sa che devi scriverti il codice.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #2 il: 02 Mar 2010, 00:28:52 »
Al momento sono riuscito creare senza errori una tabella con un file xml modificato  di un componente.

Non accetta invece i comandi di inserimento dati.

Il file è questo.

Codice: [Seleziona]
<?xml version="1.0"  encoding="utf-8" ?>
<install type="component" version="1.5.0" method="upgrade">
  <name>Create tables</name>
  <creationDate>1.Mar.2010</creationDate>
  <author>vales</author>
  <copyright>VA</copyright>
  <authorEmail>vales@bbb.it</authorEmail>
  <authorUrl>valesweb.altervista.org</authorUrl>
  <version>1.0</version>
  <license>GPL</license>
  <description>Crea tabelle nel database di Joomla</description>
 

  <install>
    <queries>
      <query>CREATE TABLE IF NOT EXISTS `#__prova` (
           `id` INT NOT NULL AUTO_INCREMENT,
           `name` TEXT NOT NULL,
           `tablenames` LONGTEXT NOT NULL,
           `SQL` LONGTEXT NOT NULL,
           `head` LONGTEXT NOT NULL,
           `body` LONGTEXT NOT NULL,
           `footer` LONGTEXT NOT NULL,
           `paramsall` LONGTEXT NOT NULL,
           `Config` LONGTEXT NOT NULL,
           `ClassCode` LONGTEXT NOT NULL,
           `ccCache1` LONGTEXT NOT NULL,
           `ccCache2` LONGTEXT NOT NULL,
           `published` TINYINT(1) NOT NULL,
            PRIMARY KEY (`id`) )
      </query>
    </queries>
  </install>

 
  <administration>
   

   
  </administration>

</install>
« Ultima modifica: 02 Mar 2010, 00:30:33 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #3 il: 02 Mar 2010, 07:12:42 »
ciao,
  continuo a propendere per il bug ;D
non è bene usare la procedura di installazione per qualcosa per cui non è progettata; le sezioni dei files di fe e be sono vuote, così come quella dei menù: un domani potrebbe essere aggiunto un controllo e bloccare il tutto. inoltre devi continuare ad installare e rimuovere il componente.

comunque al posto di della sezione queries prova ad usare

Codice: [Seleziona]
<sql>
<file charset="utf8" driver="mysql">install.sql</file>
</sql>

ed inserire nel file install.sql anche la/le istruzioni di insert.

ps: charset="utf8" lo suppongo...

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

mau_develop

  • Visitatore
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #4 il: 02 Mar 2010, 10:15:42 »
:) ... intrigava anche me la cosa e sono andato a dare un'occhiata all'installer.

Propendo per ciò che dice Marco, anche se con qualche colpo di scalpello si potrebbe duplicare e fare un dbinstaller.

In sostanza il problema maggiore è che l'installer si aspetta cose dall'xml che vengono verificate, infatti per non farlo andare in errore penso tu debba comunque costruire un falso modulo/componente etc, quindi quantomeno creare la riga di db che ogni volta devi togliere a manina.

M.

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #5 il: 02 Mar 2010, 18:37:11 »
Vi ringrazio dei contributi forniti e vi informo che la cosa funziona ed esegue correttamente le query.

L'importante che ogni comando sia a solo dentro una <query>... </query>

Questo è il codice che ho provato sia in locale che in remoto.

Codice: [Seleziona]
<?xml version="1.0"  encoding="utf-8" ?>
<install type="component" version="1.5.0" method="upgrade">
  <name>Create tables</name>
  <creationDate>1.Mar.2010</creationDate>
  <author>vales</author>
  <copyright>VA</copyright>
  <authorEmail>vales@mia.it</authorEmail>
  <authorUrl>valesweb.altervista.org</authorUrl>
  <version>1.0</version>
  <license>GPL</license>
  <description>Crea tabelle nel database di Joomla</description>
 

  <install>
    <queries>
      <query>DROP TABLE IF EXISTS `jos_prova`;</query>
      <query>CREATE TABLE IF NOT EXISTS `jos_prova` (
  `id` int(11) NOT NULL auto_increment,
  `parent_id` int(11) NOT NULL default '0',
  `title` varchar(255) NOT NULL default '',
  `name` varchar(255) NOT NULL default '',
  `alias` varchar(255) NOT NULL default '',
  `image` varchar(255) NOT NULL default '',
  `section` varchar(50) NOT NULL default '',
  `image_position` varchar(30) NOT NULL default '',
  `description` text NOT NULL,
  `published` tinyint(1) NOT NULL default '0',
  `checked_out` int(11) unsigned NOT NULL default '0',
  `checked_out_time` datetime NOT NULL default '0000-00-00 00:00:00',
  `editor` varchar(50) default NULL,
  `ordering` int(11) NOT NULL default '0',
  `access` tinyint(3) unsigned NOT NULL default '0',
  `count` int(11) NOT NULL default '0',
  `params` text NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `cat_idx` (`section`,`published`,`access`),
  KEY `idx_access` (`access`),
  KEY `idx_checkout` (`checked_out`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=35 ;
      </query>
      <query>INSERT INTO `jos_prova` (`id`, `parent_id`, `title`, `name`, `alias`, `image`, `section`, `image_position`, `description`, `published`, `checked_out`, `checked_out_time`, `editor`, `ordering`, `access`, `count`, `params`) VALUES
(1, 0, 'Ultime', '', 'ultime', 'taking_notes.jpg', '1', 'left', 'Le ultime notizie dal Team Joomla!', 1, 0, '0000-00-00 00:00:00', '', 1, 0, 1, ''),
(2, 0, 'Siti utili', '', 'siti-utili', 'clock.jpg', 'com_weblinks', 'left', 'Una selezione di collegamenti web attinenti al progetto Joomla!.', 1, 0, '0000-00-00 00:00:00', NULL, 1, 0, 0, ''),
(3, 0, 'Notizie flash', '', 'newsflash', '', '1', 'left', '', 1, 0, '0000-00-00 00:00:00', '', 2, 0, 0, ''),
(4, 0, 'Joomla!', '', 'joomla', '', 'com_newsfeeds', 'left', '', 1, 0, '0000-00-00 00:00:00', NULL, 2, 0, 0, ''),
(5, 0, 'Business: General', '', 'business-general', '', 'com_newsfeeds', 'left', '', 1, 0, '0000-00-00 00:00:00', NULL, 1, 0, 0, ''),
(6, 0, 'Linux', '', 'linux', '', 'com_newsfeeds', 'left', '', 1, 0, '0000-00-00 00:00:00', NULL, 6, 0, 0, ''),
(12, 0, 'Contatti', '', 'contatti', '', 'com_contact_details', 'left', 'Dettagli contatti per questo sito web', 1, 0, '0000-00-00 00:00:00', NULL, 0, 0, 0, ''),
(13, 0, 'Joomla', '', 'joomla', '', 'com_banner', 'left', '', 1, 0, '0000-00-00 00:00:00', NULL, 0, 0, 0, ''),
(14, 0, 'Text Ads', '', 'text-ads', '', 'com_banner', 'left', '', 1, 0, '0000-00-00 00:00:00', NULL, 0, 0, 0, ''),
(15, 0, 'Caratteristiche', '', 'caratteristiche', '', 'com_content', 'left', '', 0, 0, '0000-00-00 00:00:00', NULL, 6, 0, 0, ''),
(17, 0, 'Benefici', '', 'benefici', '', 'com_content', 'left', '', 0, 0, '0000-00-00 00:00:00', NULL, 4, 0, 0, ''),
(18, 0, 'Piattaforme', '', 'piattaforme', '', 'com_content', 'left', '', 0, 0, '0000-00-00 00:00:00', NULL, 3, 0, 0, ''),
(19, 0, 'Altre risorse', '', 'altre-risorse', '', 'com_weblinks', 'left', '', 1, 0, '0000-00-00 00:00:00', NULL, 2, 0, 0, ''),
(29, 0, 'Il CMS', '', 'il-cms', '', '4', 'left', 'Informazioni sul software Joomla![br /]', 1, 0, '0000-00-00 00:00:00', NULL, 2, 0, 0, ''),
(28, 0, 'Utenti', '', 'utenti', '', '3', 'left', 'Domande degli utenti che desiderano migrare a Joomla! 1.5[br /]', 1, 0, '0000-00-00 00:00:00', NULL, 2, 0, 0, ''),
(25, 0, 'Il Progetto', '', 'il-progetto', '', '4', 'left', 'Informazioni sul progetto Joomla![br /]', 1, 0, '0000-00-00 00:00:00', NULL, 1, 0, 0, ''),
(27, 0, 'Sei nuovo di Joomla!', '', 'sei-nuovo-di-joomla', '', '3', 'left', 'Domande per i nuovi utilizzatori di Joomla!', 1, 0, '0000-00-00 00:00:00', NULL, 3, 0, 0, ''),
(30, 0, 'La community', '', 'la-community', '', '4', 'left', 'Informazioni su milioni di utilizzatori e siti web Joomla![br /]', 1, 0, '0000-00-00 00:00:00', NULL, 3, 0, 0, ''),
(31, 0, 'Generale', '', 'generale', '', '3', 'left', 'Informazioni generali sul CMS Joomla!', 1, 0, '0000-00-00 00:00:00', NULL, 1, 0, 0, ''),
(32, 0, 'Lingue', '', 'lingue', '', '3', 'left', 'Domande sulle localizzazioni e le lingue', 1, 0, '0000-00-00 00:00:00', NULL, 4, 0, 0, ''),
(33, 0, 'Joomla! Promo', '', 'joomla-promo', '', 'com_banner', 'left', '', 1, 0, '0000-00-00 00:00:00', NULL, 1, 0, 0, ''),
(34, 0, 'Albo Pretorio On Line - Demo', '', 'albo-pretorio-on-line-demo', '', '5', 'left', 'Test Albo Pretorio', 1, 0, '0000-00-00 00:00:00', NULL, 4, 0, 0, '');
      </query>
    </queries>
  </install>

 
  <administration>
   

   
  </administration>

</install>

Ora secondo il metodo Galileiano, occorre la sperimentazione per verificare eventuali bug.

Se la cosa regge mi sembra una vera chicca.

Questa cosa era per me fondamentale per distribuire liberamente a tutti gli interessati quella specie di applicazione Albo Pretorio On Line che abbiamo realizzato con la collaborazione degli amici del forum di Joomla sezione Gestione Form con l'uso di Chronoform e Chronoconnectivity.

Il problema era che tutto il codice dell'applicazione è registrato nelle tabelle che contengono i form e le connessioni e per poter distribuire il tutto è necessario mettere a disposizione queste tabelle in un modo semplice che consenta a tutti una pseudo "installazione".

Questa è la modalità che ho pensato. Se vi viene in mente qualche idea alternativa è ben accolta.

Qui c'è la discussione collettiva della progettazione

http://forum.joomla.it/index.php/topic,92012.0.html

Qui il demo di Albo Pretorio On Line

P.S. Il codice non è riferito all'albo ma solo alla tabella jos_prova usata per prova.
« Ultima modifica: 02 Mar 2010, 23:05:30 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

mau_develop

  • Visitatore
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #6 il: 02 Mar 2010, 19:22:09 »
scusa ma qs

<install type="component"

non causa la scrittura di una riga nella tabella components?

M.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #7 il: 02 Mar 2010, 20:18:42 »
ciao vales,
  che funzionasse era fuor di dubbio: è il metodo standard di gestione del codice sql ;)

la mia obiezione era un'altra.
se l'installazione è una tantum (pensavo fosse ripetibile) ti consiglierei di metterci almeno gli altri files/elementi necessari, che poi non facciano niente è un altro discorso, ma almeno assicuri la conformità alla specifiche di joomla è sei tranquillo anche per il futuro.

su queste cose sono un po' fissato :(

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #8 il: 02 Mar 2010, 22:03:17 »
Il problema è che non ho altri elementi da inserire. I due componenti sono già installati.

Potrei inserire il mio sql nell'xml di installazione di uno dei componenti, ma questo andrebbe bene per quei siti in cui non sono già installati.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #9 il: 02 Mar 2010, 22:38:25 »
intendevo inserire gli elementi previsti per un componente.
nell'allegato ti ho messo come lo avrei fatto io, vi è la voce di menù il file index.html di fe e be e l'entry point per il be del componente.

nota che ho rimosso il method="upgrade" dal tipo di install, perché non va d'accordo con l'insert con la primary key. sempre fissazione mia ::)

ciao,
marco


=== edited

per gli altri utenti: il sql di vales inzia con DROP TABLE IF EXISTS `jos_categories`, quindi NON TENTATE DI ESEGUIRLO!!

=== edited 2
componente rimosso, provvederà vales ad inserire il link ad un componente che non faccia danni!  ;)
« Ultima modifica: 03 Mar 2010, 09:07:38 da mmleoni »
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #10 il: 02 Mar 2010, 23:00:14 »
Ottimo, sembra veramente la soluzione. ;)

Questo consente di:

1) inserire in albopretoriosetup.php le istruzioni di uso del pacchetto

2) risolve il problema segnalato da mau_develop della scrittura nella tabella components che effettivamente si verificava, anche se poi la voce non era visibile nel menu.

Grazie del contributo che mi avete dato. Ora spero di chiudere gli ultimi aggiustamenti e pubblicare.

P.S. Cambierò il nome alle tabelle nel codice di esempio per evitare che qualcuno faccia dei guai.
« Ultima modifica: 02 Mar 2010, 23:03:03 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

mau_develop

  • Visitatore
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #11 il: 02 Mar 2010, 23:08:36 »
complimenti ... Just another *nix coder/sysadmin...

:)

M.

ps i complimenti valgono anche per: ... Moderator :)
..aspetto fetta di torta..
« Ultima modifica: 02 Mar 2010, 23:10:57 da mau_develop »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Creare e inserire dati in tabella con installer di joomla.
« Risposta #12 il: 03 Mar 2010, 09:05:50 »
@maurizio
 grazie! ...torta? ti preferivo quando parlavi di birra!  ;D ;D ;D

@vales
allora rimuovo anch'io il componente, così evitiamo di far danni. quando il definitivo sarà pronto magari provvedi tu a inserire qui il link a dove lo pubblicherai.

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif