Foros del Web » Creando para Internet » HTML »

Teclas calculadora en PHP

Estas en el tema de Teclas calculadora en PHP en el foro de HTML en Foros del Web. Hola El tema es el siguiente, estoy haciendo una calculadora en php, todas las teclas estan en la pantalla, en la forma de un formulario ...
  #1 (permalink)  
Antiguo 11/01/2004, 10:21
 
Fecha de Ingreso: enero-2004
Ubicación: Valencia
Mensajes: 9
Antigüedad: 13 años, 11 meses
Puntos: 0
Teclas calculadora en PHP

Hola

El tema es el siguiente, estoy haciendo una calculadora en php, todas las teclas estan en la pantalla, en la forma de un formulario html, al igual que las operaciones etc y muestra el resultado en un input=text.

El problema es que, a parte de permitir la introduccion de los numeros y operaciones mediante el raton, apretando en los botones, tambien se debe permitir introducir los numeros por teclado.

El caso es que no se como activar estos botones cuando se pulse la tecla que representa el boton.

Y no lo puedo hacer en Javascript, ha de ser en php.

¿Que puedo hacer para leer de teclado los numeros y enviar el formulario?

Si alguien me pudiera indicar por donde buscar o algo, es que estoy bastante perdido, no se que busco realmente.

Un saludo a todos.

PD: Si quereis el codigo de la calculadora no teneis mas que pedirlo y lo posteare.
  #2 (permalink)  
Antiguo 11/01/2004, 10:38
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Definitivamente no es PHP.
¿Preguntaste en el foro de JavaScript?, o solo asumes que no puedes.

Saludos y suerte.
  #3 (permalink)  
Antiguo 11/01/2004, 10:42
 
Fecha de Ingreso: enero-2004
Ubicación: Valencia
Mensajes: 9
Antigüedad: 13 años, 11 meses
Puntos: 0
Bueno, supongo que se puede en Javascript, el problema es que nuestro profesor no nos deja, ha de ser en PHP.

Pero gracias por contestar de todos modos.
  #4 (permalink)  
Antiguo 11/01/2004, 10:52
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues si lo posteas ...

Si lo posteas es mucho mejor aunque como te dijo fran86 creo que eso es JavaScript y no PHP de todas formas averiguaré y trataré de evacuar tus dudas. Lo del posteo es para poder probarlo en mi PC y ver si funciona.

Salu2
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 11/01/2004, 10:57
 
Fecha de Ingreso: enero-2004
Ubicación: Valencia
Mensajes: 9
Antigüedad: 13 años, 11 meses
Puntos: 0
Pues aqui os paso la parte del codigo que hay hecha:

(Espero que se vea bastante bien)

<html>

<head>
<title>Calculator</title>
</head>

<body bgcolor="navyblue">

<br><br>

<center>






<?php

if(isset($resta)) /*Codigo de la operacion resta */
{
$primero=$pantalla;
$_operacion="-";
$pantalla=0;
}

if(isset($sumar)) /*Codigo de la operacion suma*/
{
$primero=$pantalla;
$_operacion="+";
$pantalla=0;
}

if(isset($mult)) /*Codigo de la operacion multiplicacion*/
{
$primero=$pantalla;
$_operacion="*";
$pantalla=0;
}

if(isset($div)) /*Codigo de la operacion division*/
{
$primero=$pantalla;
$_operacion="/";
$pantalla=0;
}

if((isset($dec)) && ($pantalla-intval($pantalla)==0) && ($pantalla!=='0.') && ((doubleval($pantalla)>=0) && (doubleval($pantalla)<10) ))
/*Codigo que pone el punto decimal*/
{ /* Comprobamos que estamos trabajando con un numero entero, ya que */
/* si ya es decimal no hay que ponerle otro punto decimal */
/* si numero - su_entero = 0 => no es decimal */
$pantalla=$pantalla.".";
}

if(isset($igual)) /* Aqui entrara si le hemos dado al igual */
{
unset($nuevaop); /*Una vez que le demos al igual, el siguiente numero*/
/*introducido sera una nueva operacion, por lo tanto*/
/*el anterior ha de desaparecer asi que quitamos */
/*la variable nuevaop, para que pase por el bucle */
/*que se encarga de borrar todo y poner el nuevo numero*/
switch($_operacion)
{
case '+':
$pantalla=$pantalla+$primero;
break;
case '-':
$pantalla=$primero-$pantalla;
break;
case '*':
$pantalla=$primero*$pantalla;
break;
case '/':
if($pantalla==0) /*Comprobamos que no se divida por cero */
{
$pantalla="Division por cero";
}
else
{
$pantalla=$primero/$pantalla;
}
break;
}
unset($_operacion); /*"apagamos" operacion para evitar cosas como :*/
/* despues de darle al igual ,y comenzar una nueva operacion, escribir un */
/* numero y darle al igual repite la anterior operacion */
}

if((!isset($igual)) && (!isset($dec))) /*Aqui entrara si no le hemos dado al */
{ /* igual o al punto decimal */
if(!isset($numero)) /* Si no hay numero pone la pantalla a cero */
{
$pantalla=0;
}
else
{
if((($pantalla==='0') || (!isset($nuevaop))) && ($pantalla!=='0.')) /* En caso contrario este codigo pondra */
{ /* el nuevo numero */
/*si nuevaop no existe eso quiere decir que estamos*/
/*en una nueva operacion y hay que borrar el resto*/

$pantalla=$numero; /* Atencion al igual estricto === => */
$nuevaop="Estamos en una nueva operacion";
} /* es igual estricto, si no se cree que */
else /* 0. = 0 */
{
$pantalla=$pantalla.$numero;
}
}
}


/* A partir de aqui el formulario */
/**********************************/
/**********************************/
?>

<form action="<?php echo $PHP_SELF; ?>" name="calculadora" method="get">

<?php
if(isset($nuevaop))
{
?>
<input type="hidden" name="nuevaop" value="Estamos en una nueva operacion" >
<?php
}
?>

<?php
if(isset($_operacion))
{
?>
<input type="hidden" name="_operacion" value="<?php echo $_operacion; ?>" >
<?php
}
?>


<?php
if(isset($primero))
{
?>
<input type="hidden" name="primero" value="<?php echo $primero; ?>" >
<?php
}
?>

<br>
<table border="3" bgcolor="gray" cellpadding="5">
<tr>
<td colspan="2">
<input type="Text" name="pantalla" value="<?php echo $pantalla ?>" size="18" tabindex="0">
</td>
</tr>
<tr>
<td>
<center>
<input type="submit" name="numero" value="1">
<input type="submit" name="numero" value="2">
<input type="submit" name="numero" value="3">

<br>
<input type="submit" name="numero" value="4">
<input type="submit" name="numero" value="5">
<input type="submit" name="numero" value="6">

<br>
<input type="submit" name="numero" value="7">
<input type="submit" name="numero" value="8">
<input type="submit" name="numero" value="9">

<br>
<input type="submit" name="numero" value="0">
<br>
<br>
</center>
</td>

<td>
<center>
<input type="submit" name="clr" value="clr">
<input type="submit" name="sumar" value="+">
<br>
<input type="submit" name="resta" value="-">
<input type="submit" name="mult" value="*">
<br>
<input type="submit" name="div" value="/">
<input type="submit" name="igual" value="=">
<br>
<input type="submit" name="dec" value=".">

</center>
</td>
</tr>
</table>

</form>

<br><br>

</body>

</html>
  #6 (permalink)  
Antiguo 11/01/2004, 10:59
 
Fecha de Ingreso: enero-2004
Ubicación: Valencia
Mensajes: 9
Antigüedad: 13 años, 11 meses
Puntos: 0
Copiarlo, deberia funcionar, aunque quiza entenderlo es bastante complicado pues el codigo es bastante extenso.

Y bueno, podeis hacer con el codigo lo que querais, si os sirve para algo utilizadlo sin problemas.
  #7 (permalink)  
Antiguo 11/01/2004, 13:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,
Cita:
Bueno, supongo que se puede en Javascript, el problema es que nuestro profesor no nos deja, ha de ser en PHP.
Pues si tu profesor os pide que con PHP controleis las pulsaciones de teclas en el cliente, cambia de profesor.

PHP no puede capturar las pulsaciones del teclado del navegadoe (ni el raton). Eso es en el lado del cliente.

La solucion es HTML: http://www.w3schools.com/tags/standardattributes.asp , la ultima seccion (accesskey y tabindex).

Asi que muevo el al foro de HTML.

Saludos desde PHP.

PD: Por cierto, mejor que os explique vuestro profesor los arrays superglobales y register_globals a OFF.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 11/01/2004, 14:17
 
Fecha de Ingreso: enero-2004
Ubicación: Valencia
Mensajes: 9
Antigüedad: 13 años, 11 meses
Puntos: 0
Bueno, pues parece que no es algo sencillo, el caso es que en las especificaciones del proyecto viene la introduccion por teclado como uno de los puntos "basicos" del trabajo.

Teneis toda la razon esto es algo que se debe hacer en javascript, de todos modos veremos que solucion nos da el profesor.

Una vez que tenga su solucion la posteare y asi podremos ver si era un error de especificacion o que.

Lo de globals a off, de momento me lo mirare yo por mi cuenta, a mi profesor parece que le gusta trabajar asi, aunque comprendo las ventajas que implica trabajar con globals a off (nunca sabes como va a estar configurado un servidor, y trabajando con globals a off siempre aciertaras).

Muchas gracias a todos por la participacion, ahora mismo me voy a ver el link que me has pasado.

Saludos
  #9 (permalink)  
Antiguo 13/01/2004, 03:53
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Volviendo con lo de PHP...
Una opcion que puedes implemental es el uso de eval()
Es decir, el usuario insertaria la formula completa por teclado. Por ejemplo en el campo tipo text (que tu llamas pantalla) el usuario insertaria "2+8-8" y luego desde php transformas esa cadena para que puedas usar eval() y obtener un resultado:
Código PHP:
$p"2+8-8"// suponiendo que esto es lo que se inserto desde el formulario
$codigoresultado"\$resultado = $p;";
eval(
$codigoresultado); // a partir de ahora tienes una variable llamada $resultado 
echo $resultado
Esa seria la idea, claro que no funciona exactamente como una calculadora simple, sino como un interprete de formulas o algo asi.
http://www.php.net/eval

Saludos
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 17:22.