bho se vuoi seguire per forza questa via non ho altre obiezioni, solo dammi un po di tempo per scriverla
io comunque consiglierei vivamente la soluzione che ho proposto, le tabelle dei nomi delle città si trovano già pronte e aggiornate senza che le compili tu
anche perchè con la tua soluzione se un utente si registra con città Ruoma, Rroma, ecc avrai popolato la tua tabella di valori non validi,
se invece lo costringi alla selezione da un insieme fisso questa possibilità di errore non esiste
cmq la tua idea:
registrati.php
Codice:
<form action = registrati.php method = post>
... ...<br>
Città: <input type = text onkeyup=sc() onkeydown=cc() required id = "citta"><br>
<div id = "lista"></div>
<br>
<input type = submit value = "Invia">
</form>
<script>
var tT, interval = 500; // aspetto che l'utente finisca di scrivere
function sc(){ cc(); tT= setTimeout(ctrl, interval); }
function cc(){ clearTimeout(tT); cerca(); }
function ctrl(){
val = document.getElementById('citta').value;
var http = new XMLHttpRequest();
http.open("GET","citta.php?nuova=" + val);
http.send();
http.onreadystatechange=function()
{
if (http.readyState==4 && http.status==200)
res = http.responseText;
}
}
function cerca(){
val = document.getElementById('citta').value;
var http = new XMLHttpRequest();
http.open("GET","citta.php?cerca=" + val);
http.send();
http.onreadystatechange=function()
{
if (http.readyState==4 && http.status==200)
document.getElementById('lista').innerHTML = http.responseText;
}
}
function completa()
{
document.getElementById('citta').value = document.getElementById('listaCitta').value;
}
</script>
citta.php
Codice:
<?php
// ... tutta la parte di connessione al db poi
if (isset($_GET['cerca']))
{
$cerca = mysql_real_escape_string($_GET['cerca']);
//$rs = @mysql_query("SELECT * from localita WHERE citta LIKE '$cerca%'");
// stampo tutte le città trovate con queste iniziali
print "<select id = 'listaCitta' name = 'listaCitta' onClick=completa()>";
//while ()
// print <option value = ... ... $rs['citta'];
print "<option value = 'rimini'>rimini</option>";
print "<option value = 'roma'>roma</option>";
print "</select>";
die();
}
if (!isset($_GET['nuova'])) die();
$citta = mysql_real_escape_string($_GET['nuova']);
@mysql_query("REPLACE INTO localita(citta) VALUES ('$citta')");
echo $citta;
?>
...> da completare con l'effettiva stampa dei risultati della ricerca (al posto dei risultati fittizi 'rimini' e 'roma'
il campo 'citta' è assunto chiave di 'localita'