Salve sono semi-nuovo della comunita drupal...ho fatto il mio primo sito con l'aggregazione di moduli ed ora ho ripreso in mano le redini e ho deciso di scrivere un modulo :D
Devo fare un sito per l'inserimento di annunci!
Sono riuscito a creare la form di inserimento dati ma ora non fa nulla!
In pratica devo aggiungere il tasto conferma che va a scrivere i dati...e li nasce il problema...dove salva drupal i dati...e poi posso reperirli per poi fare un modulo per la visualizzazione di essi. :)
Inoltre ci deve essere una associazione tra la tabella delle inserzioni e degli utenti altrimenti come faccio a capire di chi è quell'annuncio :D
Ps.nella form c'è un campo di tipo file..a me non servono tutti i file ma solo certi come faccio
Saluti
antonio
Ciao Antonio,
dai un occhio a questo link: https://api.drupal.org/api/drupal/includes%21form.inc/group/form_api/7
Immagino che nel tuo modulo hai una funzione tipo:
<?php function mymodule_form($form, $form_state) {
$form['field'] = array(
'#type' => 'textfield'
);
}
[...]
Le azioni che puoi associare al form sono:
la validazione
mymodule_form_validate($form, $form_state)
Il submit
mymodule_form_submit($form, $form_state)
Dove salvare i dati lo decidi tu nel submit
Ciao
Ioris
Tks Ioris :D
Girovagando un po ho trovato anche io questa soluzione :D ed è quella che applicherò :D
Ora pero mi chiedo...i dati da salvare vanno in una tabella di drupal...ma la devo creare giusto?? :D e come!
Inoltre un altro problema...come faccio a fargli capire che deve caricare solo jpeg,bitmap etc..insomma immagini e non tutto!
ps..nella form ho usato un #type=>'file'
Saluti
Antonio
Allora,
per creare una nuova tabella puoi o crearla tu direttamente da MySql (io uso phpMyAdmin) oppure inserendo uno script all'interno del file myModule.install del modulo:
http://lyphuong.drupalgardens.com/content/create-install-file-schema-dru...
Per quanto riguarda le estensioni dei file:
https://drupal.org/node/1537950
Ciao
Ioris
Grazie ancora Ioris per le tue utili fonti,
Se uso hook_schema se passo il modulo ad un altra persona mi riproduce la tabella esattamente come l'ho definita??
In giro ho trovato questi due metodi per creare tabelle quale è usato maggiormente e sopratutto quale è la migliore:
1) https://drupal.org/node/51220
Nella quale vedo una query diretta al db con una Create Table
oppure
2) http://drupalpassion.blogspot.it/2011/10/druapl-custom-tables-per-un-mod...
Modalita un po piu complessa con hook_schema ma è la soluzione che mi hai consigliato!
Un ultima cosa usando h_schema posso fare la foreign key con l'uid della tabella users!
GRazie ancora per la disponibilità :D
Ciao
Antonio
Ciao Antonio,
il metodo migliore è l'hook_schema se vuoi creare un modulo da riutilizzare quindi si, se passi il modulo ad un altra persona avrà esattamente la tabella come la definisci tu.
Puoi praticamente fare tutto quello che vuoi con questo hook: http://goo.gl/UukHb
Devi solo vedere come chiamare gli elementi, io ci ho messo un po' a capire che l'auto increment lo si dava dando al campo valore "serial" ;)
Se invece vuoi utilizzarlo solo sul sito attuale puoi anche creare la tabella da phpMyAdmin.
Personalmente uso entrambi i metodi, dipende dalla situazione.
Ciao
Ioris
Ciao Ioris,
il tuo aiuto è di gran lungamigliore del mio prof. che assegna progetti che non sa fare!
Tornando a noi,ho creato la mia bella tabella ora non mi resta che salvare i dati della form nel db.
Come hai accennato tu faccio un hook(nomemodulo_form_submit) e gli passo la query insert per l'inserimento dei dati e li mi dà problema.
La parte di codice in submit è
//Funzione per il salvataggio dei dati nel DB
function insert_form_submit($form,$form_state){
$sql="insert into{inserzioni} (nome_inserzione) values('%s')";
db_query($sql,$form_state['values']['name_prod']);
}
Ma mi dà il seguente errore "Argument 2 passed to db_query() must be an array, string given, called in /home/" il che è strano perchè richiede un array e dice che gli ho passato una stringa!
La mia form contiene il campo [name_prod] ed è formata cosi
function insert_form($form,$form_state){
$form=array();
$form['name_prod'] = array(
'#weight' => '3',
'#required' => '1',
'#type' => 'textfield',
'#title' => t('Titolo Inserzione'),
);
return $form;
}
Per completezza ti aggiungo anche l'hook menu
function insert_menu() {
$items = array();
$items['insert'] = array(
'title' => 'Aggiungi Inserzione',
'page callback' => 'drupal_get_form',
'page arguments' => array('insert_form'),
'access callback' => TRUE,
'access callback' => 'user_is_logged_in',
);
return $items;
}
Ora sto pensando a qualcosa che non va bene tra i passaggi di parametri!
nel frattempo attendo tue risposte :D
Saluti
Antonio
Ciao,
occhio nel submit che function insert_form_submit($form, &$form_state), manca la & nel $form_state (potrebbe essere quello la causa dell'errore). Inoltre, le query su Drupal 7 sono più funzionali se utilizzi le API che ti da a disposizione per fare le query: https://api.drupal.org/api/drupal/includes!database!database.inc/group/d.... Molto più funzionali e meglio organizzate (a mio parere) della classica query php.
;)
Salve ragazzi,dopo un po di testa-codice ci sono riuscito :)
Ho creato la mia tabella in mysql ed inserito i dati all'interno di essa :D
Non mi resta che creare una pagina custom ad ogni nuovo record ma non ho proprio idea su e dove partire :D
Consigli??
Scusate l'intromissione ma perchè non usi i moduli di drupal come CCK (integrato nel core dalla versione 7) e views????
Forse non capisco che cosa devi fare...ma è da diversi anni che sviluppo su drupal sia template che moduli ma per una cosa del genere non ho veramente nemmeno mai pensato a sviluppare un modulo visto che fa tutto drupal. Ripeto... probabilmente non capisco quali sono le necessità
REDNODE - Sviluppo siti web e cosulenze Drupal
Ciao rednode il problema è che è un esame di tecnologie web lato developer...se lo faccio con interfaccia grafica cosa posso mai imparare :D
ps.Ho visto ke l'ultima parte..cioè la costruzione di una pagina la posso fare solo con view..mi confermi?
Saluti
Antonio