Form
Ciao a tutti
Io ho realizzato un modulo che mi crea un nodo che visualizza un form.
I campi del form vengono usati per creare una query sql che interroga un database
Se nn riempio i campi il risultato viene visualizzato correttamente(ossia tutta la tabella interrogata),il problema nasce quando compilo il form,xchè il risultato ottenuto è ancora tutta la tabella quando invece dovrei ottenere solo determinate righe.
Come posso fare per passare correttamente il valore della variabile creata nel form alla query?

Risposte
Scusa ma ho capito poco cosa
Scusa ma ho capito poco cosa devi fare :-D
Posta il codice inserendolo dentro i tags "code".
Questo è il
Questo è il codice:
function elencoauto_help($section='') {
$output = '';
switch ($section) {
case "admin/modules#description" : $output = t("Form per la scelta delle auto da visualizzare");
break;
}
return $output;
}
function elencoauto_perm() {
return array('access content', 'access elencoauto', 'administer elencoauto');
}
function elencoauto_menu() {
$items = array();
$items[] = array( 'path' => 'elencoauto',
'title' => t('Elenco Auto'),
'callback' => '_elencoauto_all',
'access' => user_access('access content'),
'type' => MENU_CALLBACK);
return $items;
}
function form_auto(){
$form['details'] = array(
'#type' => 'fieldset',
'#title' => t('Details'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#tree' => TRUE,
);
$form['details']['auto'] = array(
'#type' => 'textfield',
'#title' => t('Auto da visualizzare'),
//'#default_value' => variable_get('Casa',''),
'#size' => 30,
'#maxlength' => 50,
'#description' => t('Casa auto che si vuole visualizzare'),
);
$form['details']['submit'] = array(
'#type' => 'submit',
'#value' => t('Vedi'),
);
$output = drupal_get_form('form_auto', $form);
return $output;
}
function form_auto_submit($form_id, $form_values) {
$block_content = '';
//$mod = variable_get('Casa','');
if($form_values['auto'] == '') {
$queryResult = db_query("SELECT * FROM auto");
}
else {$queryResult = db_query("SELECT * FROM auto WHERE Casa=\'%s\'",$form_values['auto']); };
while ($links = db_fetch_object($queryResult)) {
$block_content .= l($links->Codice." ".$links->Casa." ".$links->Modello." ".$links->Km." ".$links->Disponibilità, 'node/').'</a><br>';
}
if ($block_content == '')
{
// nn ci sono auto nella tabella
return;
}
print theme('page',$block_content);
}
function _elencoauto_all() {
$page_content = _elencoauto_page_content();
// controllo se c'è un page content'
if ($page_content == '') {
// nn ci sono contenuti
print theme("page", "Non ci sono auto.");
return;
}
print theme("page", $page_content);
}
function _elencoauto_page_content() {
$page_content = form_auto();
// controllo il page content if ($page_content == '') {
return;
}
else {
return $page_content;
}
}
L'amore porta amore credo
Allora...fammi capire un
Allora...fammi capire un po'...
tu vuoi inserire il tipo di nodo "auto" e quando inserisci questo tipo di nodo vuoi che la form ti chieda dei campi in più rispetto al solito titolo e testo, giusto?
Poi naturalmente vuoi mostrare questi dati nella visualizzazione del nodo, giusto?
Dunque
Il problema è la risposta alla query.
Quando io seleziono il link "elencoauto" nel menù,mi viene visualizzato il nodo "auto" che consiste in un semplice form.
Il form è un composto unicamente da un campo di testo. Il mio obiettivo è :
- se lascio il campo vuoto,voglio che venga visualizzata tutta la tabella "auto" creata sul database ( e questo lo fa )
- se metto una marca di auto,mi deve visualizzare solo le auto di quella marca,ed è qui che nasce il problema..anche se metto una marca,mi viene ritornata lo stesso tutta la tabella.
Dove sbaglio? :(
ciao, sicuramente hai già
ciao, sicuramente hai già risposto al tuo quesito ma
(1) un buon metodo per capire cosa succede è quello di debuggare quindi avrei messo nel metodo "submit"
echo $form_values['auto'];
(2) inoltre solitamente quando utilizzo il metodo "db_query()" non uso mettere il carattere di escape '\' agli apici singoli.
(3) può essere utile debuggare il contenuto della query string con un echo di quella.
Hope this helps.