Codigo Javascript no funciona dentro del codigo PHP
Publicado por Evair_Peterson (3 intervenciones) el 30/07/2013 19:07:23
Necesito ejecutar un codigo javascript durante la ejecución de un codigo PHP. La ejecicón sera de esa forma: cuando el usuario haz click el el botón REGISTRAR del formulario, se ejecutara la función javascript JSF(), que deberá hacer una primera validación de los datos en el formulario. Si todo esta OK, habra un submit que va ejecutar la segunda validación con la función PHP enviar(). Si todo esta OK de nuevo, va seguir con el logeo del usuario...
Durante las validaciones, si se encuentra algun error, sera generado un mensaje de que deberá ser impreso en el campo frmRegisterError del formulario. Con javascript logré hacer de esa manera:
Código Javascript:
Como todo lo que he leido acerca de PHP dice que no se puede direccionar un mensaje para un campo especifico del formulario solo con el PHP, lo que me vino a la mente es mexclar los codigos javascript con los de PHP. Buscando por internet, encontré algo semejante a lo que necesito y se lo adapté de esa forma para mi caso:
Código HTML:
Y en el HEAD de la pagina le puse los codigos javascript y los codigos PHP:
Código Javascript:
Código PHP:
En ese modo de prueba me funciona perfectamente el codigo. Me devuelve el mensaje con el PHP igual que con el javascript. Con eso pienso que solo necesitaba cambiar el codigo PHP de la función enviar () para rellenar el value del input con el mensaje de error que necesito. Asi que probé ese código:
Código PHP:
Pero no sé por cual motivo no me funciona de esa manera. Después de unas cuantas pruebas llegué a la seguiente conclusión: Cuando se tiene javascript dentro del PHP no funciona el getElementById. Para saber si es cierto eso, cambié la funcion javascript JSF() y la funcion PHP enviar() de ese modo:
Código Javascript:
Código PHP:
Con eso, si el usuario inserta su username era para ser muestro el mensaje dos veces, pero lo que pasa es que se mustra apenas una. La pagina ejecuta todo el codigo javascript de la funcion JSF (), incluso nos muestra el mensaje que se espera. Pero cuando va ejecutar el javascript interior al PHP, es como si encontrara algun error y no sé ejecuta nada después de usar el getElementById.
Alguién sabe como corrigir ese problema? No sé qué debo hacer para solucionarlo!
Lo siento lo tan extenso quedó ese mensaje, pero con eso creo que a cualquier persona quedará bastante claro lo que se esta pasando en el codigo...
Durante las validaciones, si se encuentra algun error, sera generado un mensaje de que deberá ser impreso en el campo frmRegisterError del formulario. Con javascript logré hacer de esa manera:
Código Javascript:
1
2
var frmRegisterError = document.getElementById("frmRegisterError");
frmRegisterError.value = "INFORME SEU NOME DE USUÁRIO";
Como todo lo que he leido acerca de PHP dice que no se puede direccionar un mensaje para un campo especifico del formulario solo con el PHP, lo que me vino a la mente es mexclar los codigos javascript con los de PHP. Buscando por internet, encontré algo semejante a lo que necesito y se lo adapté de esa forma para mi caso:
Código HTML:
1
2
3
4
5
6
7
8
9
<form method="post" action="teste.php?function=enviar" id="frmRegister" name="frmRegister" accept-charset="utf-8">
<label>Nombre de usuario: </label>
<input type="text" id="frmRegisterUN" value="" name="frmRegisterUN" />
<br />
<label>Se encontro un error: </label>
<input type="text" value="" id="frmRegisterError" name="frmRegisterError"/>
<br />
<input type="button" value="REGISTRAR" id="frmRegister_Button"/ onClick="JSF ()">
</form>
Y en el HEAD de la pagina le puse los codigos javascript y los codigos PHP:
Código Javascript:
1
2
3
4
5
6
<script type="text/javascript">
function JSF ()
{
document.getElementById("frmRegister").submit();
}
</script>
Código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
if($_GET['function'] == "enviar")
{
enviar();
}
function enviar ()
{
if (isset($_POST))
{
$usuario = $_POST['frmRegisterUN'];
if ($usuario != "")
{
?>
<script>
document.write("OK. EL CODIGO FUNCIONA.");
</script>
<?php
}
else
{
echo "EL NOME DE USUARIO ES REQUERIDO";
}
}
}
?>
En ese modo de prueba me funciona perfectamente el codigo. Me devuelve el mensaje con el PHP igual que con el javascript. Con eso pienso que solo necesitaba cambiar el codigo PHP de la función enviar () para rellenar el value del input con el mensaje de error que necesito. Asi que probé ese código:
Código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
function enviar ()
{
if (isset($_POST))
{
$usuario = $_POST['frmRegisterUN'];
if ($usuario != "")
{
?>
<script>
var error = document.getElementById("frmRegisterError");
error.value = "OK. EL CODIGO FUNCIONA.";
</script>
<?php
}
else
{
echo "EL NOME DE USUARIO ES REQUERIDO";
}
}
}
?>
Pero no sé por cual motivo no me funciona de esa manera. Después de unas cuantas pruebas llegué a la seguiente conclusión: Cuando se tiene javascript dentro del PHP no funciona el getElementById. Para saber si es cierto eso, cambié la funcion javascript JSF() y la funcion PHP enviar() de ese modo:
Código Javascript:
1
2
3
4
5
6
7
8
<script type="text/javascript">
function JSF ()
{
var error = document.getElementById("frmRegisterUN").value;
alert (error);
document.getElementById("frmRegister").submit();
}
</script>
Código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
if($_GET['function'] == "enviar")
{
enviar();
}
function enviar ()
{
if (isset($_POST))
{
$usuario = $_POST['frmRegisterUN'];
if ($usuario != "")
{
?>
<script>
var error = document.getElementById("frmRegisterUN").value;
alert (error);
</script>
<?php
}
else
{
echo "EL NOME DE USUARIO ES REQUERIDO";
}
}
}
?>
Con eso, si el usuario inserta su username era para ser muestro el mensaje dos veces, pero lo que pasa es que se mustra apenas una. La pagina ejecuta todo el codigo javascript de la funcion JSF (), incluso nos muestra el mensaje que se espera. Pero cuando va ejecutar el javascript interior al PHP, es como si encontrara algun error y no sé ejecuta nada después de usar el getElementById.
Alguién sabe como corrigir ese problema? No sé qué debo hacer para solucionarlo!
Lo siento lo tan extenso quedó ese mensaje, pero con eso creo que a cualquier persona quedará bastante claro lo que se esta pasando en el codigo...
Valora esta pregunta


0