scrivere sul database

14 risposte [Ultimo messaggio]
Offline
DrupalNiubbo
Iscritto il: 18 Giu 2005
Messaggi: 68
scrivere sul database

in un post precedente http://www.drupalitalia.org/?q=node/749, giannigiusti inseriva questo pezzo di codice, che restituisce una tabella ordinata:

// Costruisci i titoli da mostrare nella tabella
$header = array(
array('data' => t('Nome'), 'field' => 'name', 'sort' => 'asc'),
array('data' => t('Indirizzo'), 'field' => 'address'),
);
// Visualizza la lista nella tabella
$result = db_query("SELECT name,address FROM {gest_user}".tablesort_sql($header));
while ($dati = db_fetch_object($result)) {
$rows[] = array($dati->name, $dati->address,);
}
// Temizzazione della tabella e titoli
$output = theme('table', $header, $rows);
print $output;

La domanda è: come si fa a scrivere sulla tabella guest_user utilizzando un form direttamente dal sito.

Grazie anticipatamente.

Ritratto di giannigiusti
Offline
Iscritto il: 9 Giu 2005
Messaggi: 487

di seguito ti posto un esempio di gestione clienti/fornitori (inserimento/ricerca/cancellazione/modifica) in una tabella gest_soggetto.

Struttura tabella:
--
-- Struttura della tabella `gest_soggetto`
--

CREATE TABLE `gest_soggetto` (
`id` int(6) NOT NULL default '0',
`nome` varchar(50) binary NOT NULL default '',
`indirizzo` varchar(100) NOT NULL default '',
`citta` varchar(25) NOT NULL default '',
`provincia` varchar(5) default NULL,
`cap` varchar(10) default NULL,
`indirizzo2` varchar(100) default NULL,
`citta2` varchar(25) default NULL,
`cap2` varchar(10) default NULL,
`provincia2` varchar(5) default NULL,
`codicefiscale` varchar(16) binary default NULL,
`email` varchar(60) default NULL,
`telefono1` varchar(25) default NULL,
`telefono2` varchar(25) default NULL,
`fax` varchar(25) default NULL,
`note` text,
`comunenascita` varchar(40) default NULL,
`provincianascita` varchar(5) default NULL,
`datanascita` date default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;

modulo soggetto.module:

<?php
/* ---------------------------------------------------------------------

*         MODULO PER LA GESTIONE DEI SOGGETTI (CLIENTI/FORNITORI)

*                        v 0.1 14/11/2005

*                      Licenza Modulo GPL

* ---------------------------------------------------------------------- */





/*

----------------- FUNZIONI DI BASE PER IL MODULO -----------------------

*/



function soggetto_help($section='') {

$output = '';

switch (
$section) {

    case
"admin/modules#description":

   
$output = t("*** Amministrazione clienti/fornitori ***");

    break;
    case
"sogg/test":
   
$output = t("In questa pagina e' possibile aggiungere un Soggetto");
    break;   

    }

return
$output;

}
// function onthisdate_help



// Determiniamo gli accessi al modulo (dando poi i giusti permessi nell'amministrazione)

function soggetto_perm() {

return array(
'amministrazione soggetto','gestione soggetto');

}



function
soggetto_menu() {



   
$items = array();

   

   
// Principale (operazioni principali)

   
$items[] = array(

           
'path' => 'soggetto',

           
'title' => t('Soggetti (Clienti/Fornitori)'),

           
'callback' => 'soggetto_form',

           
'access' => user_access('gestione soggetto'),

           
'type' => MENU_NORMAL_ITEM );

           

   
// Inserimento

   
$items[] = array(

           
'path' => 'soggetto/inserisci',

           
'title' => t('Inserimento'),

           
'callback' => 'soggetto_form',

           
'access' => user_access('gestione soggetto'),

           
'type' => MENU_NORMAL_ITEM );

           

   
// Ricerca (operazioni di ricerca)

   
$items[] = array(

           
'path' => 'soggetto/ricerca',

           
'title' => t('Ricerca'),

           
'callback' => 'soggetto_form_ricerca',

           
'access' => user_access('gestione soggetto'),

           
'type' => MENU_NORMAL_ITEM );

                               
   
// Inserisci popup (non visibile nei menu)

   
$items[] = array(

           
'path' => 'soggetto/inserisci_popup',

           
'title' => t('Inserimento Soggetto'),

           
'callback' => 'soggetto_form',

           
'access' => user_access('gestione soggetto'),

           
'type' => MENU_CALLBACK );   

           

   
// Ricerca Soggetto con protocollo xmlrcp (non visibile nei menu)

   
$items[] = array(

           
'path' => 'soggetto/soggetto_ricerca_xmlrpc',

           
'title' => t('soggetto ricerca xmlrcp'),

           
'callback' => 'soggetto_form',

           
'access' => user_access('gestione soggetto'),

           
'type' => MENU_CALLBACK );                       


   
// Ricerca Soggetto con protocollo xmlrcp (non visibile nei menu)

   
$items[] = array(

           
'path' => 'soggetto/lista',

           
'title' => t('Lista Soggeti Trovati'),

           
'callback' => 'soggetto_lista',

           
'access' => user_access('gestione soggetto'),

           
'type' => MENU_CALLBACK );   
           
   
$items[] = array(

           
'path' => 'soggetto/autocomplete/nome',

           
'title' => t('Lista soggetto'),

           
'callback' => 'soggetto_autocomplete_nome',

           
'access' => user_access('gestione soggetto'),

           
'type' => MENU_CALLBACK );   
           
   
$items[] = array(

           
'path' => 'soggetto/autocomplete/codice',

           
'title' => t('Lista soggetto'),

           
'callback' => 'soggetto_autocomplete_codice',

           
'access' => user_access('gestione soggetto'),

           
'type' => MENU_CALLBACK );                   

   
// Menu Tab su dettaglio Soggetto (se non è selezionato un soggetto non mostrare i sottomenu)
   
if (arg(1)>0) {
       
       
// Cancella (non visibile nei menu)

       
$items[] = array(

               
'path' => 'soggetto/'.arg(1).'/modifica/cancella',

               
'title' => t('Cancella'),

               
'callback' => 'soggetto_cancella',

               
'access' => user_access('gestione soggetto'),

               
'type' => MENU_CALLBACK );       
           
           
// Menu Locale (tabulatori), richiamato quando sei su soggetto/modifica

           
$items[] = array(
               
'path' => 'soggetto/'.arg(1).'/modifica/anagrafica',
               
'title' => t('Soggetto'),
               
'access' => user_access('gestione soggetto'),
               
'callback' => 'soggetto_form',
               
'weight' => 3,       
               
'type' => MENU_LOCAL_TASK// Tabulatore attivo di default
               
);
               
                       
// SOTTOMENU DI ANAGRAFICA
                       
$items[] = array(
                           
'path' => 'soggetto/'.arg(1).'/modifica/anagrafica/dati',
                           
'title' => t('Dati Anagrafici'),
                           
'access' => user_access('gestione soggetto'),
                           
'callback' => 'soggetto_form',   
                           
'weight' => 3,           
                           
'type' => MENU_LOCAL_TASK,
                            );           
                           
                       
$items[] = array(
                           
'path' => 'soggetto/'.arg(1).'/modifica/anagrafica/contatto',
                           
'title' => t('Contatti'),
                           
'access' => user_access('gestione soggetto'),
                           
'callback' => 'soggetto_form_contatto',   
                           
'weight' => 5,           
                           
'type' => MENU_LOCAL_TASK// Tabulatore attivo di default
                           
);       

           
/*
            $items[] = array(
                'path' => 'soggetto/'.arg(1).'/modifica/documenti',
                'title' => t('Documenti'),
                'access' => user_access('gestione soggetto'),
                'callback' => 'soggetto_form',
                'weight' => 4,           
                'type' => MENU_LOCAL_TASK
                );
       
            // Visualizza Scheda Immagini

            $items[] = array(

                'path' => 'soggetto/'.arg(1).'/modifica/scadenze',

                'title' => t('Scadenze'),

                'callback' => 'soggetto_form',

                'access' => user_access('gestione soggetto'),
                'weight' => 5,           
                'type' => MENU_LOCAL_TASK
                );
               
            // Visualizza Scheda Immagini

            $items[] = array(

                'path' => 'soggetto/'.arg(1).'/modifica/schede',

                'title' => t('Schede Lav.'),

                'callback' => 'soggetto_form',

                'access' => user_access('gestione soggetto'),
                'weight' => 6,           
                'type' => MENU_LOCAL_TASK
                );
               
            // Visualizza Scheda schede di lavorazione

            $items[] = array(

                'path' => 'soggetto/'.arg(1).'/modifica/auto',

                'title' => t('Auto'),

                'callback' => 'soggetto_form',
                'access' => user_access('gestione soggetto'),       
                'weight' => 7,           

                'type' => MENU_LOCAL_TASK );       
            */
           
   
}


    return
$items;

}



/**
* Recupera dati di autocompletamento
*/
function soggetto_autocomplete_nome($string) {
 
$matches = array();
 
$result = db_query_range("SELECT nome, indirizzo, citta FROM {gest_soggetto} WHERE LOWER(nome) LIKE LOWER('%s%%')", $string, 0, 10);
  while (
$user = db_fetch_object($result)) {
   
$matches[$user->nome] = check_plain($user->nome.'-'.$user->indirizzo.'-'.$user->citta);
  }
  print
drupal_implode_autocomplete($matches);
  exit();
}

function
soggetto_autocomplete_codice($string) {
 
$matches = array();
 
$result = db_query_range("SELECT codicefiscale, nome, indirizzo, citta FROM {gest_soggetto} WHERE LOWER(codicefiscale) LIKE LOWER('%s%%')", $string, 0, 10);
  while (
$user = db_fetch_object($result)) {
   
$matches[$user->codicefiscale] = check_plain($user->codicefiscale.'-'.$user->nome.'-'.$user->indirizzo.'-'.$user->citta);
  }
  print
drupal_implode_autocomplete($matches);
  exit();
}


// ***********************************************
// ***** FORM E LISTA CONTATTI ******************

function soggetto_form_contatto()

{

   
// Verifica l'argomento 6 per verificare se siamo in modifica o cancella
   
if (arg(6)=='cancella') {
       
db_query('
            DELETE FROM
            {gest_contatto}

            WHERE
            id_soggetto = %d
            AND
            id = %d
            '
,
           
arg(1),
           
arg(5)
            );
    }
   
    if (
arg(6)=='modifica') {
       
$result = db_query('
            SELECT
            id,
            nome,
            telefono1,
            telefono2,
            email
            FROM
            {gest_contatto}

            WHERE
            id_soggetto = %d
            AND
            id = %d
            '
,
           
arg(1),
           
arg(5)
            );
       
$value = db_fetch_array($result);
    }   

   
// Form Inserimento / Modifica
   
$form['#method'] = 'post';
   
$form['#action'] = url('/soggetto/'.arg(1).'/modifica/anagrafica/contatto');

   
// Campo Nome
   
$form['id'] = array(
     
'#type' => 'hidden',
     
'#title' => t('Nome'),
     
'#default_value' => $value['id'],     
    );   

   
// Campo Nome
   
$form['nome'] = array(
     
'#type' => 'textfield',
     
'#title' => t('Nome'),
     
'#size' => 30,
     
'#maxlength' => 50,
     
'#required' => TRUE,     
     
'#default_value' => $value['nome'],     
     
'#prefix' => '<table><tr><td>',
       
'#suffix' => '</td>',
    );   

   
$form['telefono1'] = array(
     
'#type' => 'textfield',
     
'#title' => t('Telefono 1'),
     
'#size' => 16,
     
'#maxlength' => 25,
     
'#default_value' => $value['telefono1'],   
     
'#prefix' => '<td>',
       
'#suffix' => '</td>',
    );


   
$form['telefono2'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Telefono 2'),

     
'#size' => 16,

     
'#maxlength' => 25,

     
'#default_value' => $value['telefono2'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td>',

    );   



   
$form['email'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Email'),

     
'#size' => 30,

     
'#maxlength' => 50,

     
'#default_value' => $value['email'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td></tr></table>',

    );   
   
   
// Pulsante Ricerca
     
$form['search'] = array('#type' => 'submit', '#value' => t('Conferma'));

     
// Provvede a controllare il form completando eventuali valori omessi, costruisce e stampa il form
     
$output = drupal_get_form('soggetto_form_contatto', $form);


   
// Costruisci i titoli da mostrare

   
$header = array(

        array(
'data' => t('Nome'), 'field' => 'nome', 'sort' => 'desc'),

        array(
'data' => t('Telefono 1'), 'field' => 'telefono1'),

        array(
'data' => t('Telefono 2'), 'field' => 'telefono2'),
        array(
'data' => t('email'), 'field' => 'email'),

       
t('Mostra'),

       
t('Elimina'),      

    );   

   

   
// Costruisci la query

   
$sql = 'SELECT

            id,

            nome,

            telefono1,

            telefono2,
            email

            FROM
            {gest_contatto}

            WHERE
            id_soggetto = '
           
.arg(1)
            .
tablesort_sql($header)
            ;    



   
// Applica la query (paginata)

   
$result = pager_query($sql, 50);

       

    while (
$contatto = db_fetch_object($result)) {

     
$rows[] = array(

                   
$contatto->nome,

                   
$contatto->telefono1,

                   
$contatto->telefono2,
                   
$contatto->email

                   
l(t('Dettaglio'), '/soggetto/'.arg(1).'/modifica/anagrafica/contatto/'.$contatto->id.'/modifica', NULL ),

                   
l(t('Cancella'), '/soggetto/'.arg(1).'/modifica/anagrafica/contatto/'.$contatto->id.'/cancella', NULL ),

                    );

    }



   
// Temizzazione della tabella e titoli

   
$output .= theme('table', $header, $rows);



   
// Temizzazione della pagina

   
$output .= theme('pager', NULL, 10, 0, tablesort_pager());   



   
// print theme('page', $output);

   
return $output;
   
}

// INSERIMENTO CONTATTO

function soggetto_form_contatto_submit($form_id, $form_values) {

   


   
// Verifica l'operazione è una modifica
   
if ($form_values['id']>0) {
       
       
// Modifica Contatto
       
db_query("

            UPDATE {gest_contatto} SET  
            nome = '%s',
            telefono1 = '%s',
            telefono2 = '%s',
            email = '%s'
            WHERE
            id = %d

            "
,
           
drupal_strtoupper($form_values['nome']),
           
drupal_strtoupper($form_values['telefono1']),
           
drupal_strtoupper($form_values['telefono2']),
           
$form_values['email'],
           
$form_values['id']

            );
           
       
drupal_set_message(t('Contatto Modificato'),'error');   
    }
    else {

       
// Recupera l'ultimo id inserito

       
$id_contatto = db_next_id('gest_contatto_id');
   
       
// Inserisci Contatto
       
db_query("

            INSERT INTO  

            {gest_contatto}
            (
            id,
            id_soggetto,
            nome,
            telefono1,
            telefono2,
            email
            )
            VALUES
            (
            %d,
            %d,
            '%s',
            '%s',
            '%s',
            '%s'
            )

            "
,
           
$id_contatto,

           
arg(1),
           
drupal_strtoupper($form_values['nome']),
           
drupal_strtoupper($form_values['telefono1']),
           
drupal_strtoupper($form_values['telefono2']),
           
$form_values['email']

            );
       
drupal_set_message(t('Nuovo Contatto Inserito'),'error');
    }
   
drupal_goto('/soggetto/'.arg(1).'/modifica/anagrafica/contatto');   

}

/*
function soggetto_form_alter($form_id, &$form)
{
    if ($_POST['edit']['nome'] =='pippo')
        $form['nome']['#value'] = 'dgdg dg dg dfg dg d';   
}
*/


// FORM DA MOSTRARE PER INSERIMENTO/MODIFICA

function soggetto_form()

{
   
// Se l'argomento è maggiore di 0 significa che è selezionato un soggetto
    // Fai la query e mostra i dati
   
if (arg(1)>0) {
       
// Ricerca se esiste già un codice iva o codice fiscale esistente
       
$result = db_query('SELECT
            id,

            nome,

            indirizzo,

            citta,

            provincia,

            cap,

            indirizzo2,

            citta2,

            provincia2,

            cap2,               

            codicefiscale,

            email,

            telefono1,

            telefono2,

            fax,

            note,
            comunenascita,
            provincianascita,
            datanascita
            FROM
            {gest_soggetto}
            WHERE
            id = \'%s\'
            '
,
           
arg(1)
            );   
       
$value = db_fetch_array($result);   
       
       
// Gira la data in modo corretto

       
if ($value['datanascita']) {

           
$ArrayDataEsploso = explode ('-', $value['datanascita']);

           
$value['datanascita'] = array('day'=> $ArrayDataEsploso[2], 'month'=> $ArrayDataEsploso[1], 'year'=> $ArrayDataEsploso[0]);

        }       
    }
   

   
// Proprietà del form

   
$form['#method'] = 'post';

   
$form['#action'] = url($value['action']);

     
// );


    // Campo ID (Nascosto)   

   
$form['id'] = array(

     
'#type' => 'hidden',

     
'#size' => 10,

     
'#maxlength' => 10,

     
'#required' => FALSE,

     
'#value' => $value['id'],
     
'#prefix' => ''

    );



   
// Campo Nome/Ragione Sociale   

   
$form['nome'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Nome'),

     
'#size' => 50,

     
'#maxlength' => 50,

     
'#required' => TRUE,

     
'#default_value' => $value['nome'],

     
'#prefix' => '<table><tr><td><table><tr><td>',

       
'#suffix' => '</td>',

    );   



   
// Campo Partita Iva

   
$form['codicefiscale'] = array(

     
'#type' => 'textfield',

     
'#title' => t('P.Iva/Cod.Fiscale'),

     
'#size' => 20,

     
'#maxlength' => 20,

     
'#required' => TRUE,

     
'#default_value' => $value['codicefiscale'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td></tr></table></td></tr>',

    );


// Indirizzo (linea NON collasabile)
     
$form['dettaglionascita'] = array(
       
'#type' => 'fieldset',
       
'#title' => t('Dati Di Nascita'),
       
'#collapsible' => TRUE,

       
'#collapsed' => TRUE,          
         
'#prefix' => '<tr><td>',
           
'#suffix' => '',       
      );

   
// Campo indirizzo Nascita   
   
$form['dettaglionascita']['comunenascita'] = array(
     
'#type' => 'textfield',
     
'#title' => t('Comune di Nascita'),
     
'#size' => 40,
     
'#maxlength' => 50,
     
'#default_value' => $value['comunenascita'],
     
'#prefix' => '<table><tr><td>',
       
'#suffix' => '</td>',
    );   

   
// Campo Provincia Nascita
   
$form['dettaglionascita']['provincianascita'] = array(
     
'#type' => 'textfield',
     
'#title' => t('Prov'),
     
'#size' => 5,
     
'#maxlength' => 5,
     
'#default_value' => $value['provincianascita'],
     
'#prefix' => '<td>',
       
'#suffix' => '</td>',     
    );
   
   
// Campo Data Nascita   
   
$form['dettaglionascita']['datanascita'] = array(
     
'#type' => 'date',
     
'#title' => t('Data'),
     
'#default_value' => $value['datanascita'],
     
'#prefix' => '<td>',
       
'#suffix' => '</td></tr></table></td></tr>',
    );

     
// Indirizzo (linea NON collasabile)

     
$form['dettaglio'] = array(

       
'#type' => 'fieldset',

       
'#title' => t('Indirizzo Principale'),

         
'#prefix' => '<tr><td>',

           
'#suffix' => '',       

      );



   
// Campo indirizzo   

   
$form['dettaglio']['indirizzo'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Indirizzo'),

     
'#size' => 80,

     
'#maxlength' => 100,

     
'#required' => TRUE,

     
'#default_value' => $value['indirizzo'],

     
'#prefix' => '<table><tr><td colspan=3>',

       
'#suffix' => '</td></tr>',

    );   



   
// Campo CAP

   
$form['dettaglio']['cap'] = array(

     
'#type' => 'textfield',

     
'#title' => t('CAP'),

     
'#size' => 5,

     
'#maxlength' => 5,

     
'#required' => TRUE

     
'#default_value' => $value['cap'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td>',     

    );

   

   
// Campo Città   

   
$form['dettaglio']['citta'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Citta\''),

     
'#size' => 25,

     
'#maxlength' => 25,

     
'#required' => TRUE,    

     
'#default_value' => $value['citta'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td>',

    );



   
// Campo Provincia

   
$form['dettaglio']['provincia'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Provincia'),

     
'#size' => 5,

     
'#maxlength' => 5,

     
'#required' => TRUE,     

     
'#default_value' => $value['provincia'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td></tr></table></td></tr>',

    );   



     
// Indirizzo Alternativo (linea collasabile)

     
$form['dettaglio1'] = array(

       
'#type' => 'fieldset',

       
'#title' => t('Indirizzo Secondario'),

       
'#collapsible' => TRUE,

       
'#collapsed' => TRUE,

         
'#prefix' => '<tr><td>',

           
'#suffix' => '',       

      );



   
// Campo indirizzo secondario   

   
$form['dettaglio1']['indirizzo2'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Indirizzo'),

     
'#size' => 80,

     
'#maxlength' => 100,

     
'#required' => FALSE,

     
'#default_value' => $value['indirizzo2'],

     
'#prefix' => '<table><tr><td colspan=3>',

       
'#suffix' => '</td></tr>',       

    );   



   
// Campo CAP secondario

   
$form['dettaglio1']['cap2'] = array(

     
'#type' => 'textfield',

     
'#title' => t('CAP'),

     
'#size' => 5,

     
'#maxlength' => 5,

     
'#required' => FALSE

     
'#default_value' => $value['cap2'],

     
'#prefix' => '<tr><td>',

       
'#suffix' => '</td>',     

    );

   

   
// Campo Città secondario   

   
$form['dettaglio1']['citta2'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Citta\''),

     
'#size' => 25,

     
'#maxlength' => 25,

     
'#required' => FALSE,    

     
'#default_value' => $value['citta2'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td>',     

    );



   
// Campo Provincia secondario

   
$form['dettaglio1']['provincia2'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Provincia'),

     
'#size' => 5,

     
'#maxlength' => 5,

     
'#required' => FALSE,     

     
'#default_value' => $value['provincia2'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td></tr></table>',         

    );



   
// Campo Telefono Principale

   
$form['telefono1'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Telefono'),

     
'#size' => 15,

     
'#maxlength' => 20,

     
'#required' => FALSE

     
'#default_value' => $value['telefono1'],

     
'#prefix' => '<tr><td><table><tr><td>',

       
'#suffix' => '</td>',

    );



   
// Campo Cellulare

   
$form['telefono2'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Cellulare'),

     
'#size' => 15,

     
'#maxlength' => 20,

     
'#required' => FALSE,

     
'#default_value' => $value['telefono2'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td>',

    );



   
// Campo Fax

   
$form['fax'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Fax'),

     
'#size' => 15,

     
'#maxlength' => 20,

     
'#required' => FALSE,    

     
'#default_value' => $value['fax'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td>',

    );   



   
// Campo Email

   
$form['email'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Indirizzo Email'),

     
'#size' => 30,

     
'#maxlength' => 60,

     
'#required' => FALSE,     

     
'#default_value' => $value['email'],

     
'#prefix' => '<td>',

       
'#suffix' => '</td></tr></table></td></tr>',

    );

 

     
// Campo Note (collassabile)

     
$form['dettaglio2'] = array(

       
'#type' => 'fieldset',

       
'#title' => t('Note'),

       
'#collapsible' => TRUE,

       
'#collapsed' => TRUE,       

         
'#prefix' => '</td></tr><tr><td>',     

           
'#suffix' => '',       

      );

   
// Campo Note

     
$form['dettaglio2']['note'] = array(

     
'#type' => 'textarea',

     
'#title' => t('Note'),

     
'#default_value' =>  variable_get('description', ''),

     
'#cols' => 80,

     
'#rows' => 5,    

     
'#default_value' => $value['note'],

     
'#prefix' => '',

       
'#suffix' => '</td></tr></table>',

    );



 
// pulsante conferma

 
$form['submit'] = array('#type' => 'submit', '#value' => t('Conferma'));

 
// pulsante conferma

 
$form['test'] = array('#type' => 'submit', '#value' => t('Prova'));

  

 
// Provvede a controllare il form completando eventuali valori omessi, costruisce e stampa il form

 
$output = drupal_get_form('soggetto_form', $form);

  return
$output;   

}


// VALIDAZIONE DEI DATI IMMESSI NEL FORM CLIENTI

function soggetto_form_validate($form_id, $form_values) {

   

   
// Imposta l'array dei dati

   
$errors = array();

   

   
// Verifica che siano inseriti i dati essenziali (NOT NULL)

   
if ($form_values['nome'] == '') {

        
$errors['nome'] = t('Inserire il Nome o La ragione Sociale');

    }

    if (
$form_values['indirizzo'] == '') {

        
$errors['indirizzo'] = t('Inserire l\'indirizzo');

    }

    if (
$form_values['citta'] == '') {

        
$errors['citta'] = t('Inserire la Citta\'');

    }

    if (
$form_values['provincia'] == '') {

        
$errors['provincia'] = t('Inserire la provincia');

    } 



   
// Verifica la validità dell'email inserita

   
if ($form_values['email']) {

        if (!
valid_email_address($form_values['email'])) {

            
$errors['email'] = t('Email NON valida');

        }    

    }

   

   
// Se stiamo facendo un inserimento nuovo ($form_values['id'] = NULL), verifica Partita iva

   
if (!$form_values['id'] && $form_values['codicefiscale']) {

       

       
// Ricerca se esiste già un codice iva o codice fiscale esistente

       
$result = db_query('SELECT

                            id 

                            FROM

                            {gest_soggetto}

                            WHERE

                            codicefiscale = \'%s\'

                            '
,

                           
$form_values['codicefiscale']

                            );

                           

       
// se ci sono piu righe restituisci l'errore
       
if (db_num_rows($result) > 0) {

           
$errors['codicefiscale'] = t('Partita iva o Codice Fiscale gia\' presente in archivio');                                       

            }

    }
// Fine verifica Partita iva

   

    // Imposta l'array degli errori trovati    

   
foreach ($errors as $name => $message) {       

     
form_set_error($name, $message);

    }

   

   
// Ritorna il numero degli errori trovati

   
return count($errors) == 0;

     

}





// ESECUZIONE DOPO AVER VERIFICATO I DATI DEL FORM

function soggetto_form_submit($form_id, $form_values) {



   
// Se non c'è id, siamo di fronte ad un inserimento

   
if (arg(1)<=0) {

       

       
// Recupera l'ultimo id inserito

       
$id_soggetto = db_next_id('gest_soggetto_id');       

       

       
// inserisci

       
db_query("INSERT INTO {gest_soggetto}

                (

                id,

                nome,

                indirizzo,

                citta,

                provincia,

                cap,

                indirizzo2,

                citta2,

                provincia2,

                cap2,               

                codicefiscale,

                email,

                telefono1,

                telefono2,

                fax,

                note,
                comunenascita,
                provincianascita,
                datanascita

                ) VALUES (

                %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'

                )"
,

               
$id_soggetto,

               
drupal_strtoupper($form_values['nome']), 

               
drupal_strtoupper($form_values['indirizzo']),

               
drupal_strtoupper($form_values['citta']),

               
drupal_strtoupper($form_values['provincia']),

               
drupal_strtoupper($form_values['cap']),

               
drupal_strtoupper($form_values['indirizzo2']),

               
drupal_strtoupper($form_values['citta2']),

               
drupal_strtoupper($form_values['provincia2']),

               
drupal_strtoupper($form_values['cap2']),               

               
drupal_strtoupper($form_values['codicefiscale']),

               
$form_values['email'],

               
drupal_strtoupper($form_values['telefono1']),

               
drupal_strtoupper($form_values['telefono2']),

               
drupal_strtoupper($form_values['fax']),

               
drupal_strtoupper($form_values['note']),
               
drupal_strtoupper($form_values['comunenascita']),

               
drupal_strtoupper($form_values['provincianascita']),
               
$form_values['datanascita']['year'].'-'.$form_values['datanascita']['month'].'-'.$form_values['datanascita']['day']   

                );

   

       
// Imposta il messaggio di avvenuto inserimento

       
drupal_set_message(t('Cliente').' '.$form_values['name'].' '.t('Inserito'));   


    }

    else

        {   

       
//aggiorna

       
db_query("UPDATE {gest_soggetto} SET    

                nome = '%s',

                indirizzo = '%s',

                citta = '%s',

                provincia = '%s',

                cap = '%s',

                indirizzo2 = '%s',

                citta2 = '%s',

                provincia2 = '%s',

                cap2 = '%s',               

                codicefiscale = '%s',

                email = '%s',

                telefono1 = '%s',

                telefono2 = '%s',

                fax = '%s',

                note = '%s',
                comunenascita = '%s',

                provincianascita = '%s',

                datanascita = '%s'

                WHERE

                id = %d

                "
,

               
drupal_strtoupper($form_values['nome']), 

               
drupal_strtoupper($form_values['indirizzo']),

               
drupal_strtoupper($form_values['citta']),

               
drupal_strtoupper($form_values['provincia']),

               
drupal_strtoupper($form_values['cap']),               

               
drupal_strtoupper($form_values['indirizzo2']),

               
drupal_strtoupper($form_values['citta2']),

               
drupal_strtoupper($form_values['provincia2']),

               
drupal_strtoupper($form_values['cap2']),

               
drupal_strtoupper($form_values['codicefiscale']),

               
$form_values['email'],

               
drupal_strtoupper($form_values['telefono1']),

               
drupal_strtoupper($form_values['telefono2']),

               
drupal_strtoupper($form_values['fax']),

               
drupal_strtoupper($form_values['note']),
               
drupal_strtoupper($form_values['comunenascita']),

               
drupal_strtoupper($form_values['provincianascita']),

               
$form_values['datanascita']['year'].'-'.$form_values['datanascita']['month'].'-'.$form_values['datanascita']['day'],               

               
arg(1)

                );
               
           
// imposta l'id da passare sull'url $argomento (1)
           
$id_soggetto = arg(1);   



       
drupal_set_message(t('Cliente').' '.$form_values['name'].' '.t('Aggiornato'));   

       

        }


       
// Vai direttamente in modifica
       
drupal_goto('/soggetto/'.$id_soggetto.'/modifica/anagrafica');


}



/*

---------------- FUNZIONI DI RICERCA ---------------------------------------

*/



function soggetto_form_ricerca()

{

   
// Proprietà del form

   
$form['#method'] = 'post';

   
$form['#action'] = url('soggetto/ricerca');

     
// );



    // Campo Nome/Ragione Sociale   

   
$form['nome'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Nome'),

     
'#size' => 50,

     
'#maxlength' => 50,
     
'#autocomplete_path' => 'soggetto/autocomplete/nome',     

     
'#prefix' => '<table><tr><td>',

       
'#suffix' => '</td>',

    );   



   
// Campo Partita Iva

   
$form['codicefiscale'] = array(

     
'#type' => 'textfield',

     
'#title' => t('P.Iva/Cod.Fiscale'),

     
'#size' => 45,

     
'#maxlength' => 16,
     
'#autocomplete_path' => 'soggetto/autocomplete/codice',         

     
'#prefix' => '<td>',

       
'#suffix' => '</td></table>',

    );

   

   
// Pulsante Ricerca

     
$form['search'] = array('#type' => 'submit', '#value' => t('Cerca'));



     
// Provvede a controllare il form completando eventuali valori omessi, costruisce e stampa il form

     
$output = drupal_get_form('soggetto_form_ricerca', $form);

      return
$output;   

}

               

// VALIDAZIONE DEI DATI IMMESSI NEL FORM RICERCA

function soggetto_form_ricerca_validate($form_id, $form_values) {

   

}



// ESECUZIONE DOPO AVER VERIFICATO I DATI DEL FORM DI RICERCA

function soggetto_form_ricerca_submit($form_id, $form_values) {

   
// Trasforma i dati trasmessi nel post in dati di GET
   
drupal_goto('soggetto/lista', 'nome='.$form_values['nome']);   

}               

// Mostra Lista Risultati

function soggetto_lista() {
   

   
// Costruisci la condizione

   
$condition = '';

    if (
$_GET['nome']) {

        if (
$condition == '') $condition = ' nome like \'%'.$_GET['nome'].'%\'';

                        else 
$condition .= ' AND nome like \'%'.$_GET['nome'].'%\'';

        }



    if (
$_GET['codicefiscale']) {

        if (
$condition == '') $condition = ' codicefiscale like \'%'.$_GET['codicefiscale'].'%\'';

                        else 
$condition .= ' AND codicefiscale like \'%'.$_GET['codicefiscale'].'%\'';

        }

   

   
// Aggiunge l'eventuale where

   
if ($condition != '') $condition = ' WHERE '.$condition;

   

   
// Costruisci i titoli da mostrare

   
$header = array(

       array(
'data' => t('Nome/Ragione Sociale'), 'field' => 'nome', 'sort' => 'desc'),

       array(
'data' => t('Citta\''), 'field' => 'citta'),

       array(
'data' => t('P.IVA/Cod. Fiscale'), 'field' => 'codicefiscale'),

      
t('Mostra'),

      
t('Elimina'),      

    );   

   

   
// Costruisci la query

   
$sql = 'SELECT

            id,

            nome,

            citta,

            codicefiscale

            FROM {gest_soggetto}

            '
.$condition.tablesort_sql($header);    



   
// Applica la query (paginata)

   
$result = pager_query($sql, 50);

       

    while (
$soggetto = db_fetch_object($result)) {

     
$rows[] = array(

                     
$soggetto->nome,

                     
$soggetto->citta,

                     
$soggetto->codicefiscale,

                     
l(t('Dettaglio'), '/soggetto/'.$soggetto->id.'/modifica/anagrafica', NULL ),

                     
l(t('Cancella'), '/soggetto/'.$soggetto->id.'/modifica/cancella', NULL ),

                      );

    }



   
// Temizzazione della tabella e titoli

   
$output .= theme('table', $header, $rows);



   
// Temizzazione della pagina

   
$output .= theme('pager', NULL, 10, 0, tablesort_pager());   



   
// print theme('page', $output);

   
return $output;
   

}   

/*

--------- FUNZIONE ELIMINAZIONE DEL SOGGETTO -----------

*/

function soggetto_cancella() {


   
// Mostra quel cliente

   
$result = db_query("

        SELECT

        id,

        nome,

        indirizzo,

        citta,

        provincia,

        cap,

        codicefiscale

        FROM {gest_soggetto}

        WHERE

        id = %d

        "
,

       
arg(1)

        );

   
$soggetto = db_fetch_object($result);


   
// Memorizza il referer (per poi tornare alla ricerca)    

   
$form['referer'] = array(

     
'#type' => 'hidden',

     
'#size' => 200,

     
'#maxlength' => 200,

     
'#required' => FALSE,

     
'#value' => referer_uri(),

    ); 


   
$output .= confirm_form(

       
'soggetto_form_cancella',

       
$form,

       
t('ATTENZIONE!!! Confermi la cancellazione? '),

       
'soggetto/'.arg(1).'/modifica/anagrafica',

       
'Nome: '.$soggetto->nome.' - '.

       
'Indirizzo: '.$soggetto->indirizzo.' - '.

       
'Citta\': '.$soggetto->citta.'<p></p>',

       
t('Cancella'),

       
t('Annulla')                                

        );    
       
    return
$output;

}



// CONFERMA CANCELLAZIONE

function soggetto_form_cancella_submit($form_id, $form_values) {

   

   
// Cancella il Soggetto

   
db_query("

        DELETE FROM 

        {gest_soggetto}

        WHERE

        id = %d

        "
,

       
arg(1)

        );   

   
drupal_set_message(t('Soggetto Cancellato!!'),'error');   

   
drupal_goto('soggetto/inserisci');   

}
?>

P.S.
Spero non sia stato "frantumato" dal forum. Nell'esempio sopra puoi studiarti come fare un modulo che interagisce con dati in una tabella

Ciao
Gianni

Ritratto di giannigiusti
Offline
Iscritto il: 9 Giu 2005
Messaggi: 487

Il modulo sopra contiene molto di più di ciò che ti serve, perchè fa parte di un progetto più ampio, quindi alcune parti le potresti anche togliere.

Guardati i menu
function soggetto_form()
function soggetto_form_validate($form_id, $form_values)
function soggetto_form_submit($form_id, $form_values)

Il primo determina i menu, la funzione soggetto_form() disegna il form, la funzione soggetto_form_validate valida i dati inseriti e la funzione soggetto_form_submit inserisce il soggetto nella tabella

Ciao
Gianni

Offline
DrupalNiubbo
Iscritto il: 18 Giu 2005
Messaggi: 68

grazie mille provvederò a personalizzare e se ho pbl mi sa che mi farò di nuovo vivo. Comunque grazie mille.

Offline
DrupalNiubbo
Iscritto il: 18 Giu 2005
Messaggi: 68

ho caricato il modulo e creato la tabella nel db.
cliccando poi nel menu soggetti/fornitori mi dice:

Fatal error: Call to undefined function: drupal_get_form() in c:\programmi\easyphp1-7\www\prova\modules\soggetto.module on line 1091

Ritratto di giannigiusti
Offline
Iscritto il: 9 Giu 2005
Messaggi: 487

devi usare drupal 4.7

Ciao
Gianni

Offline
DrupalNiubbo
Iscritto il: 18 Giu 2005
Messaggi: 68

ok

Offline
DrupalNiubbo
Iscritto il: 18 Giu 2005
Messaggi: 68

ho installato il tutto, gira, ma alla conferma per l'inserimento dei dati mi da il seguente errore:

Fatal error: Cannot create references to/from string offsets nor overloaded objects in /web/htdocs/www.miosito.it/home/chiese/includes/form.inc on line 277

però la scheda viene regolarmente caricata, perchè con la funzione ricerca me la da regolarmente, tranne poi cliccare "dettagli" e mi restituisce lo stesso errore di sopra.

Ritratto di giannigiusti
Offline
Iscritto il: 9 Giu 2005
Messaggi: 487

Quel codice è un esempio, te lo devi un po' studiare. Tieni conto che è estrapolato da un progetto che ho fatto. Alcune schede non funzionano perchè sono estrapolate dal contesto del programma. Studiatelo per capire come funzionano tabelle e menu. Ti posto anche un altro codice più semplice (tabella gest_marche... id integer, nome varchar(30))

<?php
/* ---------------------------------------------------------------------
*         MODULO PER LA GESTIONE DELLE MARCHE AUTO
*        v 0.1 14/11/2005
*              Licenza Modulo GPL
*        Autore giusti Gianni ---------------------------------------------------------------------- */


/*
----------------- FUNZIONI DI BASE PER IL MODULO -----------------------
*/

function marca_help($section='') {
$output = '';
switch (
$section) {
    case
"admin/modules#description":
   
$output = t("*** Gestione Marca Auto ***");
    break;
    }
return
$output;
}

// Determiniamo gli accessi al modulo (dando poi i giusti permessi nell'amministrazione)
function marca_perm() {
return array(
'amministrazione marca','gestione marca');
}

// Gestione dei Menu

function marca_menu() {



   
$items = array();

   

   
// Principale (operazioni principali)

   
$items[] = array(

       
'path' => 'tabelle/marca',

       
'title' => t('Marche'),

       
'callback' => 'marca_form',

       
'access' => user_access('gestione marca'),

       
'type' => MENU_NORMAL_ITEM);

   
// Se c'è l'argomento attiva il menu modifica
   
if (arg(2)>0) {
       
       
// Modifica (non visibile nei menu)

       
$items[] = array(

           
'path' => 'tabelle/marca/'.arg(2).'/modifica',

           
'title' => t('Modifica'),

           
'callback' => 'marca_form',

           
'access' => user_access('gestione marca'),

           
'type' => MENU_CALLBACK );   

       
// Modifica (non visibile nei menu)

       
$items[] = array(

           
'path' => 'tabelle/marca/'.arg(2).'/cancella',

           
'title' => t('Cancella'),

           
'callback' => 'marca_form_cancella',

           
'access' => user_access('gestione marca'),

           
'type' => MENU_CALLBACK );   
           
    }

    return
$items;

}

function
marca_form_cancella() {


   
// Mostra quel cliente

   
$result = db_query("

        SELECT

        id,

        nome

        FROM {gest_marca}

        WHERE

        id = %d

        "
,

       
arg(2)

        );

   
$dati = db_fetch_object($result);


   
$output .= confirm_form(

       
'marca_form_cancella',

       
$form,

       
t('ATTENZIONE!!! Confermi la cancellazione? '),

       
'tabelle/marca/'.arg(2).'/modifica',

       
'Nome: '.$dati->nome.'<p></p>',

       
t('Cancella'),

       
t('Annulla')                                

        );    
       
    return
$output;

}

// CONFERMA CANCELLAZIONE

function marca_form_cancella_submit($form_id, $form_values) {

   

   
// Cancella il Soggetto

   
db_query("

        DELETE FROM 

        {gest_marca}

        WHERE

        id = %d

        "
,

       
arg(2)

        );   

   
drupal_set_message(t('Marca Cancellata!!'),'error');   

   
drupal_goto('tabelle/marca');   

}

function
marca_form() {


   
// Se l'argomento è maggiore di 0 significa che è selezionato un elemento. Fai la query e mostra i dati
   
if (arg(2)>0) {
       
// Ricerca se esiste gia
       
$result = db_query('
            SELECT
            id,
            nome
            FROM
            {gest_marca}
            WHERE
            id = %d
            '
,
           
arg(2)
            );   
       
$value = db_fetch_array($result);   
    }

   
$form['#method'] = 'post';
   
// $form['#action'] = url('marca');

     
$form['datiprincipali'] = array(
       
'#type' => 'fieldset',
       
'#title' => t('Inserimento/Modifica'),       
         
'#prefix' => '',
           
'#suffix' => '',       
      );

   
$form['datiprincipali']['nome'] = array(

     
'#type' => 'textfield',

     
'#title' => t('Marca'),

     
'#size' => 22,

     
'#maxlength' => 30,

     
'#default_value' => $value['nome'],

     
'#prefix' => '',

       
'#suffix' => '',

    );
   
 
// pulsante conferma
 
$form['submit'] = array('#type' => 'submit', '#value' => t('Conferma'));
  
 
// Provvede a controllare il form completando eventuali valori omessi, costruisce e stampa il form
 
$output .= drupal_get_form('marca_form', $form);


   
// Costruisci i titoli da mostrare

   
$header = array(
       array(
'data' => t('id'), 'field' => 'id'),

       array(
'data' => t('Nome'), 'field' => 'nome', 'sort' => 'asc'),

      
t('Modifica'),

      
t('Elimina'),      

    );   

   

   
// Costruisci la query

   
$sql = 'SELECT

            id,

            nome

            FROM {gest_marca}

            '
.$condition.tablesort_sql($header);    



   
// Applica la query (paginata)

   
$result = pager_query($sql, 50);

       

    while (
$dati = db_fetch_object($result)) {

     
$rows[] = array(

                     
$dati->id,

                     
$dati->nome,

                     
l(t('Dettaglio'), '/tabelle/marca/'.$dati->id.'/modifica', NULL ),

                     
l(t('Cancella'), '/tabelle/marca/'.$dati->id.'/cancella', NULL ),

                      );

    }

   

   
// Temizzazione della tabella e titoli

   
$output .= theme('table', $header, $rows);



   
// Temizzazione della pagina

   
$output .= theme('pager', NULL, 10, 0, tablesort_pager());   



   
// print theme('page', $output);

   
return $output;

}


// INSERIMENTO/MODIFICA DATI IMMESSI NEL FORM
function marca_form_validate($form_id, $form_values) {

   
// Imposta l'array dei dati
   
$errors = array();

    if (
arg(2)<=0) {
       
$result = db_query('
            SELECT id FROM {gest_marca}
            WHERE
            nome = \'%s\'
            '
,
           
$form_values['nome']
        );       
        if (
db_num_rows($result) > 0) {
           
$errors['nome'] = t('Attenzione!! Marca già inserita');                                       
            }
    }
   
    if (
$form_values['nome']=='') {
       
$errors['nome'] = t('Attenzione!! Inserire la Marca');                                       
        }   

   
// Imposta l'array degli errori trovati    
   
foreach ($errors as $name => $message) {       
     
form_set_error($name, $message);
    }
   
   
// Ritorna il numero degli errori trovati
   
return count($errors) == 0;

}

// INSERIMENTO/MODIFICA DATI IMMESSI NEL FORM
function marca_form_submit($form_id, $form_values) {

    if (
arg(2)>0) {
       
db_query('
            UPDATE {gest_marca}
            SET
            nome = \'%s\'
            WHERE
            id = %d
            '
,
           
drupal_strtoupper($form_values['nome']),
           
arg(2)
        );       
    }
    else {
       
// Recupera l'ultimo id inserito
       
$id_marca = db_next_id('gest_marca_id');   

       
// Inserisci Marca
       
db_query('
            INSERT INTO {gest_marca}
            (id, nome)
            VALUES
            (%d, \'%s\')
            '
,
           
$id_marca,
           
drupal_strtoupper($form_values['nome'])
        );           
    }
}
?>

Offline
DrupalNiubbo
Iscritto il: 18 Giu 2005
Messaggi: 68

ok

Ritratto di giannigiusti
Offline
Iscritto il: 9 Giu 2005
Messaggi: 487

Ho provato gli script sulla 4.7b5 ed ho trovato un errore!!
cancella la/le righe con questo condice
$form['#action'] = url($value['action']);
perchè, a causa di un bug sulla 4.7b4, quella linea non aveva nessun effetto, sulla 4.7b5 invece, ti blocca l'inserimento del soggetto perchè non lo valorizzo!! Commentala/e e vedrai che l'inserimento funziona.
A parte questo, il resto mi funziona.

Ciao
Gianni

Offline
DrupalNiubbo
Iscritto il: 18 Giu 2005
Messaggi: 68

Volevo sapere se ho interpretato bene le funzioni delle seguenti righe:
//$form_values['natoil']['day'].'-'.$form_values['natoil']['month'].'-'.$form_values['natoil']['year']//
Questa riga trasforma 'natoil' in una stringa con giorno-mese-anno
mentre la seguente riga:
//:$form_values['natoil']['day'].'-'.$form_values['natoil']['month'].'-'.$form_values['natoil']['year'],
arg(1)//
inserisce nella variabile 'natoil' sul database il valore uscente.
Tutto ciò perchè, se io provo a stampare il valore di 'natoil' mi viene fuori la scritta "array", ciò significa che non ha recepito la data che ho inserito.

Ritratto di giannigiusti
Offline
Iscritto il: 9 Giu 2005
Messaggi: 487

La data su un form drupal, viene inserita in un array associativo composto da $form_values['NOMECAMPO']['day'].'-'.$form_values['NOMECAMPO']['month'].'-'.$form_values['NOMECAMPO']['year']
Quindi se stampi direttamente NOMECAMPO ti viene scritto Array proprio perchè quel campo è un array composto da 3 "campi" (permettimi il termine non proprio tecnico), cioè day, month e year.
arg(1) è una funzione di drupal che permette di prendere un argomento della stringa passata a q attraverso l'url..... detto in parole più terra terra, se vedi l'url che adesso hai sul browser, è fatto così ....?q=node/1062 arg(1) è il primo argomento di node/1062, cioè 1062.
Io lo uso per passare da un link ad un altro, l'id del cliente.

Ciao
Gianni

yqy
Offline
DrupalNiubbo
Iscritto il: 24 Maggio 2006
Messaggi: 5

...e non immaginavo che per fare un banale form con insert/update/delete ci sarebbero volute un bordello di righe di codice...
solitamente ci metto nemmeno un'ora per fare una form di insert con una tabella con edit/delete e controlli vari....

da quello che vedo qui sopra penso che per fare un form complesso (parecchi campi) ci mettero' probabilmente mezza giornata.....o sbaglio?

non trovo molta simpatia per i cms, essendo abituato a fare le cose a mano in mooooolto meno tempo....o sbaglio?
vi prego convincetemi!

una intranet aziendale complessa, onestamente, la fareste con drupal?
ciao:)

Ritratto di TheCrow
Offline
Iscritto il: 2 Feb 2006
Messaggi: 353

se ci metti mooooolto meno tempo a scrivere codice a mano sarebbe inutile per te usare un cms o un cmf che dir si voglia ma questo è un discorso generico credo.
Se poi ti stanno pure antipatici chi te lo fa fare?
Fossi in te neanche i 3 secondi per scaricarlo avrei perso...

Iscriviti al DrupalCamp Torino 2010 corner_ribbon_1.png