Foros del Web » Programando para Internet » PHP »

Espera hasta presionar una tecla

Estas en el tema de Espera hasta presionar una tecla en el foro de PHP en Foros del Web. Hola a todos En otros lenguajes como FoxPro hay una función INKEY(n) que permite esperar n segundos por una tecla o entonces continúa la ejecución, ...
  #1 (permalink)  
Antiguo 14/09/2007, 21:17
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Espera hasta presionar una tecla

Hola a todos
En otros lenguajes como FoxPro hay una función INKEY(n) que permite esperar n segundos por una tecla o entonces continúa la ejecución, y si n = 0, la espera es indefinida hasta que se presione una tecla.
Hay en PHP algo que se le parezca?
Alguien me puede convidar el código que hace eso?
Muchas gracias.
  #2 (permalink)  
Antiguo 14/09/2007, 22:03
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 2
Re: Espera hasta presionar una tecla

Para detectar que el usuario teclea algo en un input deberias usar javascript .

Saludos
Andres
  #3 (permalink)  
Antiguo 14/09/2007, 22:13
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Espera hasta presionar una tecla

Gracias, andruqui
Lo que quiero hacer es mostrar un mensaje de error, por ejemplo, y que el mensaje permanezca hasta que el usuario presiones cualquier techa.
Por casualidad tienes por ahí el código que hace eso?
  #4 (permalink)  
Antiguo 15/09/2007, 13:30
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 2
Re: Espera hasta presionar una tecla

Lo que tienes qeu haces es en el input que te interese cada vez que se apreta una tecla se llama a una funcion JS, si el msg de error se esta mostrando simplemente lo ocultas.

Saludos
  #5 (permalink)  
Antiguo 16/09/2007, 05:04
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Espera hasta presionar una tecla

Gracias por tu respuesta, andruqui
Busqué en la lista de funciones de PHP y no aparece ninguna _is()
Aparte de mostrar el mensaje en pantalla y dejarlo ahí hasta que el usuario presione una tecla cualquiera, el INKEY() sin n que describo también me servía para recibir del teclado una respuesta tal como S o N cuando pregunto SI o NO y esa sola tecla me sirve para direccionar segun la respuesta.
Aqui en PHP tengo un FORM que tiene 20 preguntas, de las cuales 5 toman respuestas de una sola tecla y según la respuesta se presentan las siguientes preguntas.
¿Significa eso que tendré que hacer un FORM para cada campo y luego una página de FORM-ACTION por cada una de las preguntas con respuesta S o N ?
Segun veo me estoy respondiendo solo. En todo caso, apreciaré tu opinión.
Un abrazo.
  #6 (permalink)  
Antiguo 16/09/2007, 07:10
isra00
Invitado
 
Mensajes: n/a
Puntos:
Re: Espera hasta presionar una tecla

Hola Luis, creo que estas un poco confundido con respecto al funcionamiento de PHP. Este lenguaje no interactua con los usuarios. PHP no puede esperar a que el usuario pulse una tecla porque no tiene acceso a esa interactividad. La manera de interactuar con el usuario es mediante el lenguaje HTML, que se genera con la salida estandar del lenguaje. En HTML se insertan formularios, y el PHP recibe la informacion de esos formularios. Aunque dentro del HTML puedes incluir JavaScript, que es un lenguaje de programacion que si puede hacer lo que pides, puesto que soporta eventos. Por ejemplo:

<html>
<head>
<title>Respuesta</title>
<script language="JavaScript" type="text/javascript">
ocultar() {
document.getElementById("aviso").style.display="no ne";
}

respuesta() {
if (event.keyCode==73) si();
if (event.keyCode==110) no();
}

si() {
ocultar();
//Accion de la respuesta SI
}

no() {

ocultar();
//Accion de la respuesta NO
}
</script>
</head>
<body onKeyPress="respuesta()">
<div style="border: 1px solid black; text-align: center; display: block" id="aviso">
Este es el mensaje de error. Desea tomarse una pizza?<br>
<a href="#" onClick="si()">Si</a>
<a href="#" onClick="no()">No</a>
</div>
</body>
</html>

He incluido otra manera de responder, ademas de mediante teclado, y es anhadiendo un enlace SI y otro NO, para mayor accesibilidad y por si el usuario ha desactivado JavaScript. Con este codigo el mensaje se oculta, pero no hace nada mas. Para determinar las acciones segun la respuesta, sustituye los comentarios en las funciones si() y no().

Espero que sirva. Saludos, Isra.
  #7 (permalink)  
Antiguo 07/01/2008, 09:31
 
Fecha de Ingreso: agosto-2007
Ubicación: Osorno, Chile
Mensajes: 40
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Espera hasta presionar una tecla

Hola ISRA00
Gracias por tu respuesta
He intentado aplicar ese código que me dejaste y, como no se JavaScript no consigo montar la acción posterior al mensaje con la pregunta: He hecho lo siguiente:
<html>
<head>
<title>Respuesta</title>
<script language="JavaScript" type="text/javascript">
ocultar() {
document.getElementById("aviso").style.display="no ne";
}

respuesta() {
if (event.keyCode==73) si();
if (event.keyCode==110) no();
}

si() {
display="Anda a tomártelo sentado";
ocultar();

//Accion de la respuesta SI
}

no() {
display="Quedate a esperar";
ocultar();

//Accion de la respuesta NO
}
</script>
</head>
<body onKeyPress="respuesta()">
<div style="border: 1px solid black; text-align: center; display: block" id="aviso">
Este es el mensaje de error. Desea tomarse una pizza?<br>
<a href="#" onClick="si()">Si</a>
<a href="#" onClick="no()">No</a>
</div>
</body>
</html>

Y no me funciona, porque aunque aprete las teclas sS o nN o le haga click en Si o en No, igual no hace nada. Serías tan gentil de completarme el código para poder resolver ese problema?
Te lo agradeceré mucho. Un abrazo y feliz navidad y próspero año nuevo 2008.-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:24.