Form autoriempiente

ciao,
per chi può interessare
PHP:
<?php
//per vedere il funzionamento del form
if(isset($_POST['Submit'])){
	$prova=$_POST['suggest1'];
	echo "<br>$prova<br>";
}
/*NOTA
ho fatto una tabella chiamata prova con
id int(3) autoincrement primarikey
nome varchar (50)
e l'ho rimepita di parole da abbondio, asdrubale....zoppa, zoccola, zagaglia
e ho fatto il file mesi_1.php
*/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>prova N° 1</title>
	<script src="lib/jquery-1.3.2.min.js" type="text/javascript"></script>
    <script src="lib/jquery.metadata.js" type="text/javascript"></script>
	<script src="lib/jquery.autocomplete.mod.js" type="text/javascript"></script>
	<script src="autocomplete.custom.js" type="text/javascript"></script>
	<link href="lib/jquery.autocomplete.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
	<input type="text" name="suggest1" id="suggest1" class="suggest" alt="php/mesi_1.php"/>
</p>	
<p>
  <input type="submit" name="Submit" value="Invia">
</p>
</form>
</body>
</html>

mesi_1.php
PHP:
<?php
$q = strtolower($_GET["q"]);
if (!$q) return;
//valori di connessione 
include_once "../connessione.php";
//select alla tabella con il campo che interessa, es. nome
//fatto come dice alex e, strano a dirsi, funzia
$query=mysql_query("SELECT nome FROM prova  WHERE nome LIKE '$q%' ORDER BY nome");
while($row=mysql_fetch_array($query)){ 
    echo $row['nome']."\n"; 
}
?>
 
ciao
c'è un altro "piccolo" problemino (SANtifal interviene?) e questo credo proprio dipenda dal js.
per fare una prova ho aggiunto alla tabella i valori:
aa_01, aa_02, ..... aa_11, sino ad aa_15
ora inserendo aa nella select appaiono i valori da aa_01 sino ad aa_10 e quelli successivi non
si riesce mai a visualizzarli
credo che dipenda da jquery.autocomplete.mod.js o (in funzione dell'usato) jquery.autocomplete.js.

lo script js ha la funzione

$.fn.extend({
autocomplete: function(urlOrData, options) {
var isUrl = typeof urlOrData == "string";
options = $.extend({}, $.Autocompleter.defaults, {
url: isUrl ? urlOrData : null,
data: isUrl ? null : urlOrData,
delay: isUrl ? $.Autocompleter.defaults.delay : 10,
max: options && !options.scroll ? 10 : 150
}, options);
//ecc....
modificando il valore che ho evidenziato si modifica in effetti il numero di opzioni presentati dalla select.

ma il "problemino" è il seguente:
essndo la selezione dinamica come faccio a farcli capire (senza dover correggere) che al posto di 10 ci deve essere un
numero maggiore?
finchè si tratta di nomi (statisticamente) non dovrebbero esserci problemi, ma se al posto dei nomi ho ad es.
"codici articoli"? posso avere centinaia di codici che iniziano per aa
 
Per rendere quel paramtero dinamico bisognerebbe entrare nel merito del codice js e del suo funzionamento, ma personalmente ritengo la cosa inutile in quanto sarebbe improponibile scorrere centinaia se non migliaia di valori all'interno di una droplist. Sarebbe più corretto raffinare la ricerca inserendo altri caratteri. Comunque ho fatto delle prove e secondo me la cosa più semplice ed immediata è quella di inserire direttamente un valore molto alto.
 

Discussioni simili