autocompletamento campo text

6 contenuti / 0 new
Ultimo contenuto
autocompletamento campo text

Ciao ragazzi,
ho appena iniziato a sviluppare con drupal..mi chiedevo se potevate aiutarmi in questo apparente semplice problema
sto sbroccando!!
devo creare un form con un campo text dove c'è l'autocompletamento...mi potete dare una mano?

la funzione di autocompl è:

function test_getusers($part){
$result = db_query('select name from users where name like "%s%%";', $part);
$users = array();
while ($row = db_fetch_array($result)){
$users[] = $row['name'];
}

print drupal_to_js(
$users
);
}

come faccio a creare il form linkato a questa funzione?

grazie millleeee

pie

ma da dove li devi pescare i dati da autocompletare?

prova a usare drupal_json() al posto di drupal_to_js()

Devi innanzitutto creare una chiamata nell'hook_menu() che di permetta di generare quell'output, e successivamente tramite il campo #autocomplete dell'form_item collegarlo al tuo elmento.

Tovi una guida (spero) più completa all'indirizzo:

Ciao
Marco
--
My blog
Working at @agavee

ciao ragazzi grazie delle risposte...
ancora però non riesco a farlo funzionare....

non riesco a capire...

function attendees_menu()
{
$items['text_autocomplete'] = array(
'title' => 'text matching',
'page callback' => 'attendees_text_autocompletePage',
'access arguments' => array('access content')
);
return $items;
}

function attendees_text_autocompletePage()
{
$sOut = ''. t('Inserisci il nome per la ricerca') .'';
$sOut .= drupal_get_form('attendees_text_autocomplete');

return $sOut;
}
function attendees_text_autocomplete()
{
$form = array();

// Name textfield.
$form['nome2'] = array(
'#title' => t('Name'),
'#type' => 'textfield',
'#maxlength' => 20,
'#description' => t('Enter your name.'),
'#autocomplete_path' => 'text_autocomplete'
);

return $form;

}

function text_autocomplete($string='')
{
//$string='p';

$matches = array();
if($string)
{
if ($string) {
$result = db_query_range("SELECT name FROM {mbattendees} WHERE LOWER(name) LIKE LOWER('%s%%')", $string, 0, 10);
while ($dati = db_fetch_object($result)) {
$matches[$dati->name] = check_plain($dati->name);
}
}
print drupal_json($matches);
exit();

}

}

non so se sto commettendo qualche stupidaggine...sono nuovo su drupal e questi form sembrano un po' incasinati

grazie
pie'0

Stai facendo un errore nella creazione della chiamata AHAH, nella tua voce di menu hai inserito solo la voce che genera la tua pagina, manca quella che genera la risposta JSON che deve essere interpretata da AHAH, quindi nel menu devi avere:

<?php
function attendees_menu() {
 
$items['text_autocomplete'] = array(
   
'title' => 'text matching',
   
'page callback' => 'attendees_text_autocompletePage',
   
'access arguments' => array('access content')
  );
 
$items['js/text_autocomplete'] = array(
   
'page callback' => 'text_autocomplete',
   
'access arguments' => array('access content'),
   
'type' => MENU_CALLBACK,
  );
  return
$items;
}
?>

in questo modo avrai la tua chiamata alla voce di menu che genera l'output JSON,

Ciao
Marco
--
My blog
Working at @agavee