Form autoriempiente

Steftcom

Nuovo Utente
7 Mag 2010
19
0
0
38
Lugano, Svizzera
Salve, ho una domanda e non so se è la sezione giusta oppure deve andare in Javascript
Io ho un campo select di un form in cui ci posso scrivere anche e man mano che inserisco le lettere mi fa vedere le possibilità associate.
Per esempio nel DB ho il campo nome, nel form ho la tendina che mi fa vedere tutti i nomi, poi per esempio scrivo A mi fa vedere tutti i nomi con la A (Alberto - Antonio - Andrea - ...) poi se continuo a scrivere per esempio An mi fa vedere i corrispondenti (Antonio - Andrea - ...)
Spero di essermi spiegato bene.

Grazie


Stefano
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Hai già realizzato l'applicazione per estrarre i dati? Se è solo un problema di visualizzazione la cosa si potrebbe risolvere con Ajax
 

Steftcom

Nuovo Utente
7 Mag 2010
19
0
0
38
Lugano, Svizzera
Ho qua la query che mi restituisce il nome e l'ID corrispondente, il select è gia pronto, infatti adesso lo devo scorrere tutto ( sono circa 1000 nomi) per selezionare il nome che mi niteressa
 

Steftcom

Nuovo Utente
7 Mag 2010
19
0
0
38
Lugano, Svizzera
Il codice è questo:
PHP:
$query_user = "SELECT id,nome FROM ITE_utenti";
$result_user = mysql_query($query_user,$db);
echo "<select name='for_user'>";
while($row_user = mysql_fetch_array($result_user))
{
	echo "<option value=$row_user[id]>$row_user[nome]</option>";
}
echo "</select>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
Ciao
scusate se mi intrometto ma anche io sto cercando qualcosa di simile
Intanto una cosa per alex: a che ti serve sapere dove va la select? Secondo me non ha alcuna importanza (qualche post da qualche parte riceverà il valore).
Mentre, sempre per alex, è interessante l’articolo che hai segnalato, ma c’è un però!!!
È giusto quello che dice, digitando un lettera in campo di testo appaiono i nomi che iniziano per tale lettera.
Ma c’è il però che ho detto: i nomi devo inserirli (manina, manina) in un array del js, mentre quello che vorrei io (e da quanto ho capito vorrebbe steftcom) e che tale array (o qualcosa di simile) venisse generato dinamicamente in funzione del contenuto di campo della tabella (non costretto a scivere i nomi uno a uno nell’arry js e modificarlo ogni volta che aggiungo/tolgo un record (quindi credo che abbia ragione eliox a parlare di ajax).
Steftcom eventualmente mi smentisca, ma credo che voglia una cosa del genere
Se nella tabella (oltre al resto dei campi) ho il campo nome e i vari record contengano in nome i valori:

abate
abbondio
antonio
giuseppe
ecc….

abbia un campo di testo che quando in questi digito a appaia una tendina (select) con

abate
abbondio
antonio

digitando anche b (campo di testo ab)

abate
abbondio

digitando un’alta b (campo di testo abb)

abbondio

se digito una lettera, es. z , e non ci sono nomi che inizino per z la tendina non si apre (o si apra con tutti i nomi)

cliccando sul nome poi trasmetto il valore della select

scusate se mi sono dilungato, ma spero che serva a chiarire e che qualche anima pia posti la soluzione
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
grazie, dalla demo sembrerebbe quello che cerco, ora guardo gli scripts e se non è quello che voglio rimetto come avatar il gatto ruggente:)
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Ehm, bene, allora fammi sapere se devo mettere come avatar un cane randagio :D
Comunque ti avverto che c'è bisogno della libreria JSON per farlo funzionare. Se hai PHP5 (e penso proprio di sì) dovrebbe essere già installata. Dai un'occhiata alle funzioni json_encode e json_decode. Altrimenti dovrai scaricare la classe e includerla manualmente nello script.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
ho php 5.2.3 quindi le lib dovrebbero esserci.
il punto però è che ho scaricato i vari js ma non capisco come far prelevare i dati dalla tabella
in tutti i c'è sempre un esempio qui no.
spero che a forsa di cercare qualcosa riesca a ricavare

p.s.
se rimetto il mio gatto ruggente hai poco da inserire un cane, ben che vada scappa dalla paura:)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
forse ho trovato qualcosa qui
http://maxb.net/blog/2009/09/14/autocomplete-con-jquery/

da quello ch per ora ho capito nella pagina in cui si vuole il menù a tendina (oltre evidentemente caricare i js e css)
si trova i seguente campo di testo (che andra inserito poi ,penso, in un form)

HTML:
<input type="text" name="suggest1" id="suggest1" class="suggest" alt="php/mesi.php" />
sotto cui (digitando un carattere si apre la tendina)
il tutto viene gesito per il prelevo dei dati da alt="php/mesi.php" che non è altro che un semplicissimo script

PHP:
<?php
$q = strtolower($_GET["q"]);
if (!$q) return;
$items = array(
	'gennaio',
	'febbraio',
	'marzo',
	'aprile',
	'maggio',
	'giugno',
	'luglio',
	'agosto',
	'settembre',
	'ottobre',
	'novembre',
	'dicembre'
);

foreach ($items as $value) {
    if (strpos(strtolower($value), $q) !== false) {
        echo "$value\n";
    }
}
?>
ora sostituendo a $item =array(eccc...
PHP:
<?php
$q = strtolower($_GET["q"]);
if (!$q) return;
//valori di connessione
//select alla tabella con il campo che interessa, es. nome

while($row=mysql_fetch_array($query){
	$item[]=$row['nome'];
}

foreach ($items as $value) {
    if (strpos(strtolower($value), $q) !== false) {
        echo "$value\n";
    }
}
?>
il gioco dovrebbe essere fatto
se secondo voi sono fuori strada avvisatemi

p.s.
per ora trova i nomi che "contengono" il carattere digitato dovrò (ahime) cercare tra i vari js in modo che trovi i nomi che "iniziano" col carattere digitato
 

Steftcom

Nuovo Utente
7 Mag 2010
19
0
0
38
Lugano, Svizzera
Ciao

è esattamente come dice borgo italia, la lista è in continua modifica pertanto modificare sempre l'array è un po' un lavoraccio.
Adesso provo lo script e poi vedo

Grazie
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao eliox (ecc...)
si ho provato, si modifica in funzione dei dati in tabella.
poi ho provato a fare delle modifiche ma non sto cavando un ragno dal classico buco.
inserendo (es) a mi restituisce

abbondio
artemisia
bulanzone
zuzzurra

cioè contiene a
non sono riuscito a capire (maledetto js) come a ricavare solo i valori che INIZIANO per a
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Per ottenere ciò che vuoi non devi modificare il js ma lo script PHP. Sostituisci il foreach con:

PHP:
foreach ($items as $value) {
    if (substr(strtolower($value), 0, strlen($q)) == $q) {
        echo "$value\n";
    }
}
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao x stefticom
scusa ma mi ero dimenticato di te,
la query la faccio qui

PHP:
<?php 
$q = strtolower($_GET["q"]); 
if (!$q) return; 
//valori di connessione 
$query=mysql_query("SELECT * FROM mia_tabella");//se serve WHERE, ORDER, LIMIT

while($row=mysql_fetch_array($query){ 
    $item[]=$row['nome']; 
} 

foreach ($items as $value) { 
    if (strpos(strtolower($value), $q) !== false) { 
        echo "$value\n"; 
    } 
} 
?>
per fare in modo che venga "INIZIA PER" quarda quello che ha scritto satifal, pardon SANtifal:)

dimenticavo: al posto di * è meglio mettere il nome del campo che interessa
 
Ultima modifica:
Autore Discussioni simili Forum Risposte Data
D Javascript 2
L PHP 16
R PHP 0
V PHP 3
P Javascript 7