Si lo puse aquí es porque creo que el problema está en la actualización del valor de la variable txtValue. Y eso se hace en un script.
Por otra parte, no me parece muy normal que te burles (jam1138) de gente como yo, que está desesperada por hacer las cosas, y que busca ayuda donde cree que la puede hallar.
Os explico mi problema más detallado.
Tengo el siguiente script:
Código HTML:
<script language="JavaScript">
var i;
function addOpt(oCntrl, sTxt, sVal, sCnd)
{
if (sTxt.substr(0, sCnd.length).toUpperCase() == sCnd.toUpperCase())
{
var selOpcion=new Option(sTxt, sVal);
eval(oCntrl.options[i++]=selOpcion);
}
}
function cambia(oCntrl)
{
var txtVal = document.form_nueva_cita.paciente.value;
while(oCntrl.length > 0)
oCntrl.options[0]=null;
i = 0;
oCntrl.clear;
<?php
$paciente=mysql_query("select Codigo,Nombre from Clientes order by Nombre",$link);
echo "addOpt(oCntrl,\"Seleccione un paciente\",\"0\",txtVal);";
while($row = mysql_fetch_array($paciente))
{
echo "addOpt(oCntrl,\"".$row['Nombre']."\",\"".$row['Codigo']."\",txtVal);";
}
mysql_free_result($paciente);
?>
}
</script>
Que tal y como está me busca en el select cada vez que escribo un carácter. Pero ... son 7000 y el primer caracter tarda de 1 minuto a 1 minuto y medio. Y ... mi intención era mejorar eso restringiendo el select.
El código que tengo en el cuerpo de la página es:
Código HTML:
<body onLoad="cambia(document.form_nueva_cita.select_paciente)">
<form name="form_nueva_cita" method="get" action="validar.php">
<strong>Paciente:</strong>
<input type="text" name="paciente" size="50" onKeyUp="cambia(document.form_nueva_cita.select_paciente)">
<select name="select_paciente" >
</select>
<input type="submit" value="Crear cita">
</form>
</body>
Probé con este código PHP, para ver si la consulta sql funcionaba(pero en el body de la página, no en el script):
Código PHP:
$txtVal='Tr';
$paciente=mysql_query("select Codigo,Nombre from Clientes where Nombre LIKE '$txtVal%' order by Nombre",$link);
while($row = mysql_fetch_array($paciente))
{
echo 'Codigo: '.$row['Codigo'].'<br>';
echo 'Nombre: '.$row['Nombre'].'<br>';
}
mysql_free_result($paciente);
y la consulta me selecciona correctamente todos los registros cuyo campo nombre empieza por tr. Es decir, que me visualiza el código y el nombre de todos los pacientes que empiezan por tr.
Pero esto
Código PHP:
$paciente=mysql_query("select Codigo,Nombre from Clientes where Nombre LIKE 'txtVal%' order by Nombre",$link);
dentro del script no funciona. Es por eso que llegué a la conclusion de que era el txtVal el que fallaba.
Si alguien ve algún error o sabe qué puedo hacer para corregir el fallo, agradezco su colaboración.
Gracias por anticipado a cualquier ayuda (que será bien recibida).