PDA

Ver la Versión Completa : boton no hace nada al pulsarlo


martita
02-04-2009, 09:50:53
hola foro, tengo el siguiente codigo que la idea
es que al pulsar el boton haga algo(llamar a una funcion)
para poder validar que se pulso el boton, pero ni la funcion
onclick=funcion() se va a la funcion ni tampoco me valida con el

if $_post["var"]

aqui el codigo, espero alguien me pueda apoyar con esto


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ejemplo de formulario</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?PHP
function verifica()
{
echo "si entre";
echo $mail;
}
?>
<table width="505" border="1">
<tr>
<td width="80">nombre</td>
<td width="333"><form name="form2" method="post" action="">
<input name="nombre" type="text" id="nombre" value="" size="55" maxlength="50">
</form></td>
<td width="28">&nbsp;</td>
</tr>
<tr>
<td>email</td>
<td><form name="form3" method="post" action="">
<input name="email" type="text" id="email" size="55" maxlength="50">
</form></td>
<td><form name="form1" method="post" action="">
<input type="submit" name="enviar" ) id="var" value="Enviar" onclick=verifica() >
</form>
</table>


<td>&nbsp;</td>
<td>&nbsp;</td>
<?PHP
if ($_POST["var"])
{
echo "si valido el post";
}
?>
</p>
</body>
</html>

roman
02-04-2009, 19:27:18
martita:

Hay dos cosas que tienes que entender antes de iniciarte en el mundo de php:

1. PHP y javascript son dos lenguajes distintos
2. PHP y HTML (incluido javascript) viven en dos espacios diferentes.

El punto 1 ya te lo aclaró dec en otro hilo, así que enfaticemos el punto 2.

PHP es un lenguaje que se ejecuta en el servidor Web y te sirve para producir un documento HTML que el servidor manda al cliente (típicamente, el navegador). Cuando el documento llega a su destino, PHP ya no tiene nada que hacer y es imposible interactuar con él, no puedes hacer llamadas a funciones definidas en PHP, simplemente porque ya no están ahí.

Por poner un ejemplo sencillo, considera este script PHP:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.1//EN">
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1'>
<meta name='generator' content='editplus'>
<meta name='author' content='román'>

<title> Prueba </title>
</head>
<body>
<?php

echo "Este texto fue generado con PHP";

?>
</body>
</html>


Cuando el servidor Web recibe la petición por parte del cliente (el navegador) de este script, lo turna a su vez al procesador de PHP (que es un módulo del servidor) para su interpretación. Este procesador genera un documento HTML basado en el código HTML que tenga el script y en las instrucciones de PHP -todo lo que esté entre <?php y ?>.

Así, por ejemplo, cuando llega a


<?php

echo "Este texto fue generado con PHP";

?>


el procesador PHP ejecuta la instrucción y coloca la salida en el mismo documento. El resultado final es:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.1//EN">
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1'>
<meta name='generator' content='editplus'>
<meta name='author' content='román'>

<title> Prueba </title>
</head>
<body>
Este texto fue generado con PHP
</body>
</html>


Y este documento es el que el servidor Web finalmente envia al cliente, tal y como si lo hubieras escrito directamente así.

Entonces, cuando el documento llega al navegador, ya no tiene ni rastro de PHP y por ello no es posible hacer algo como


<input type="submit" name="enviar" id="var" value="Enviar" onclick=verifica() >


porque esto ya es HTML que "vive" en el cliente. La instrucción onclick sólo puede hacer referencia a una función de algún lenguaje que se ejecute en el cliente (como javascript).

En resumen, y para reiterar: el código PHP y el documento final HTML viven en dos mundos distintos y no pueden interactuar directamente.

-------------------------------

Entonces, regresando al motivo de tu hilo: "boton no hace nada al pulsarlo", espero que ahora quede más claro porqué no hace nada. De hecho no sólo no hace nada sino que, además, marca un error, porque la función verifica no existe; existió en el servidor cuando se estaba procesando el script, pero ya no cuando el documento final llegó al navegador.

Más aún, ese onclick no es necesario; se trata de un elemento <input type='submit'> que con sólo presionarlo ocasiona que los datos del formulario se envíen al servidor sin codificar nada aparte.

Ahora, el nombre de ese botón es "enviar", y por tanto, cuando pones


<?PHP
if ($_POST["var"])
{
echo "si valido el post";
}
?>


no pasa nada cuando la petición llega al servidor, porque la variale 'var' no existe. No es lo mismo name que id. ides un atributo que sólo tiene sentido del lado del cliente.

// Saludos

martita
06-04-2009, 04:32:54
Gracias roman por tu respuesta, me sirvio de mucho entender lo que comentas, ahora la pregunta es tonz como puedo hacer un boton y que al pulsarlo ejecute una funcion mi formulario web ?
saludos.:p

subzero
08-04-2009, 19:01:52
Hola... te recomiendo que te documentes un poco sobre java así como te dice roman. Sin embargo voy a tratar de explicarte un poquito la idea.

1. Debes crear una funcion en java que realice las validaciones que deseas.
2. Esta funcion debes ubicarla para mayaro facilidad en la cabecera <head></head> entre
<script>
function myfuncion()
{
....
....
}
</script>

3. Ya en el botón, ve al evento OnClick="myfuncion()";


Un poco resumido lo que te explicaban arriba.

PHP hace envios al servidor y trae datos desde allá recargandose la pagina las veces que sea realizado.

Java hace procesos desde la misma pagina sin necesidad de recargarse.

Espero te sirva esta aclaración y mucha suerte!

roman
08-04-2009, 19:51:00
Nada más por afinar un par de puntos:

1. No es Java sino JavaScript, que, además del nombre, no tienen ninguna similitud.
2. PHP no envía datos al servidor, PHP trabaja en el servidor.

// Saludos

subzero
08-04-2009, 21:07:14
roman.... gracias por tu correción.