Form

11 contenuti / 0 new
Ultimo contenuto
Form

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

Drupal Version:

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 wrote:
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à

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