|
Ver temas sin respuesta | Ver temas activos
Foros Linux » Desarrollo » Programación
Página 1 de 1
|
[ 10 mensajes ] |
|
| Autor |
Mensaje |
greer

Forista Medio
Registrado: Mar Feb 27, 2007 12:00 am Mensajes: 279 Ubicación: PANAMA
|
 Publicado: Sab Oct 23, 2010 11:30 pm |
|
Hola, que tal. He estado tratando de muchas formas hacer lo siguente sin exito... Tengo 2 paginas, Una en HTML en donde tengo un formulario muy basico con tres campos y la Segunda pagina esta hecha en PHP que es donde se procesan los datos que pongo en el formulario hecho en HTML. Ahora bien, mi problema es el siguiente, He decidido que cada vez que se ingrese un dato erroneo, ese dato se procese en mi segunda pagina y me diga si es erroneo o verdadero mi dato. Si es verdadero sigue su preceso normal.... Pero si el dato es erroneo me muestre un Mensaje usando jquery pero sin salir de mi Formulario... Voy a poner parte de mi codigo, para ser un poco mas grafico. Pagina en HTML (formulario): Código: <?php include("calendario/calendario.php"); ?>
<html> <head> <title>Reporte en Excel</title> <script language="JavaScript" src="calendario/javascripts.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" > $(document).ready(function(){ setTimeout(function(){ $(".flash").fadeOut("slow", function () { $(".flash").remove(); }); }, 2000); }); </script>
</head>
<body> <center><h1>Reporte en Excel</h1> Seleccione una fecha de inicio y una de fin para generar el reporte. <br><br><br> <form name="fcalen" action="reporte.php" method="get"> Fecha inicio: <?php escribe_formulario_fecha_vacio("fecha1","fcalen"); ?> <br><br> Fecha final: <?php escribe_formulario_fecha_vacio("fecha2","fcalen"); ?> <br><br> <input name="submit" type="submit" value="Enviar" /> <input type="reset" value="Borrar"> </form> </center> </body> </html> Pagina PHP (donde se procesan los datos) Código: //Obtengo la fecha de formulario $inicio = $_GET['fecha1']; $fin = $_GET['fecha2'];
//Ordeno la fecha de dd/mm/yy a yy/mm/dd para la consulta a la base de datos $fdesde = explode('/',$inicio); $fhasta = explode('/',$fin);
if($desde == $hasta){ $fhasta[0] = $fhasta[0] + 1; }
$desde = $fdesde[2]."-".$fdesde[1]."-".$fdesde[0]; $hasta = $fhasta[2]."-".$fhasta[1]."-".$fhasta[0];
$f1 = $fdesde[2].$fdesde[1].$fdesde[0]; $f2 = $fhasta[2].$fhasta[1].$fhasta[0];
$error = "<div class='flash'>Mensaje de Error</div>";
if(($f1 == null) or ($f2 == null)){ $fA = 0; } elseif(($f1 == null) and ($f2 == null)){ $fA = 0; } elseif($f1 > $f2){ $fA = 0; } elseif($f1 <= $f2){ $fA = 1; } if($fA == 0){ print $error; } ... Como veran los datos los obtengo del formulario y luego los preceso en la pagina PHP y por medio de sentencias decido si son correctas o erroneas, entonces si son erroneas me muestra un mensaje: Código: $error = "<div class='flash'>Mensaje de Error</div>"; Actualmente me muestra el mensaje pero cuando me lo muestra no es en el mismo formulario... sino que me saca del formulario y me muestra ese mensaje en una pagina en blanco, por lo cual para volver a escribir en el formulario debo abrir nuevamente la pagina. Mi idea es mostrar ese mismo mensaje que se procesa en el PHP y que me lo muestre en el formulario usando jquery. Si miran en el codigo del formulario, veran que ya puse el script del jquery y el mensaje de error tiene en su etiqueta la referencia para usar el jquery, pero como digo, el mensaje se muestra en una pagina en blanco y no en el mismo Formulario... Habra forma de hacer esto ?
_________________ http://greer.nodolinux.com
|
|
|
|
 |
akodo

Moderador
Registrado: Mié Nov 28, 2007 12:00 am Mensajes: 1361 Ubicación: En la X del explorer (pulse para llamar)
|
 Publicado: Dom Oct 24, 2010 4:36 am |
|
Seguro que no funciona, pero por intentarlo que no quede: Código: #En la parte de javascript function validateInServer(){ fecha_1 = document.getElementById("fecha1"); fecha_2 = document.getElementById("fecha2"); $.post('validate.php', {fecha1: fecha_1 ; fecha2: fecha_2}, function (data){ alert(data); } ); #esto es para pasar los parámetros por post. Para pasarlos por get cambia "$.post" por "$.get", #lo demás sigue igual } #estoy suponiendo que la página dónde se realizan las comprobaciones es "validate.php", y que #los parámetros que pasas son fecha1 y fecha2, con valores fecha_1 y fecha_2 respectivamente. #En este caso sólo muestra una alerta.
#En el html cambia el submit: <input name="submit" type="button" onclick="javascript:validateInServer();" value="Enviar" />
Me remito a la parte de ajax de jquery, que es como yo lo haría: http://api.jquery.com/category/ajax/
_________________ Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)
|
|
|
|
 |
niky45

Forista Ancestral
Registrado: Mié Abr 11, 2007 11:00 pm Mensajes: 8550 Ubicación: tras la pantalla (...)
|
 Publicado: Dom Oct 24, 2010 7:30 am |
|
|
habia un codigo html para abrir en una nueva pestania/ventana.... no es la solucion ideal, pero al menos no se "cierra" la ventana.
_________________ #446716
--Not me, guys. I read the Bash man page each day like a Jehovah's Witness reads the Bible. No wait, the Bash man page IS the bible. Excuse me... (from comp.os.linux.misc) [ DNFD ] - [ F4A ] - [ dotfiles ]
|
|
|
|
 |
maiku

Moderador
Registrado: Mié Abr 18, 2007 11:00 pm Mensajes: 1209 Ubicación: Cojutepeque, El Salvador C. A.
|
 Publicado: Dom Oct 24, 2010 10:29 am |
|
niky45 escribió: habia un codigo html para abrir en una nueva pestania/ventana.... no es la solucion ideal, pero al menos no se "cierra" la ventana. Es una buena solución pero por mucho es mejor jquery para hacerlo mediante ajax: akodo escribió: Seguro que no funciona, pero por intentarlo que no quede: Me remito a la parte de ajax de jquery, que es como yo lo haría: http://api.jquery.com/category/ajax/
_________________ Grüße...
Maiku
Full linux alchemist!!!
|
|
|
|
 |
greer

Forista Medio
Registrado: Mar Feb 27, 2007 12:00 am Mensajes: 279 Ubicación: PANAMA
|
 Publicado: Dom Oct 24, 2010 4:08 pm |
|
akodo escribió: Seguro que no funciona, pero por intentarlo que no quede: Código: #En la parte de javascript function validateInServer(){ fecha_1 = document.getElementById("fecha1"); fecha_2 = document.getElementById("fecha2"); $.post('validate.php', {fecha1: fecha_1 ; fecha2: fecha_2}, function (data){ alert(data); } ); #esto es para pasar los parámetros por post. Para pasarlos por get cambia "$.post" por "$.get", #lo demás sigue igual } #estoy suponiendo que la página dónde se realizan las comprobaciones es "validate.php", y que #los parámetros que pasas son fecha1 y fecha2, con valores fecha_1 y fecha_2 respectivamente. #En este caso sólo muestra una alerta.
#En el html cambia el submit: <input name="submit" type="button" onclick="javascript:validateInServer();" value="Enviar" />
Me remito a la parte de ajax de jquery, que es como yo lo haría: http://api.jquery.com/category/ajax/pareciera funcionar pero no... intente integrar el codigo PHP en la misma pagina HTML y en la parte donde indico a donde se van los datos: Código: <form name="fcalen" action="reporte.php" method="get"> puse: Código: <form name="fcalen" action="" method="get"> para poder obtener esos datos desde el mismo archivo y me funciono! exactamente como queria! PERO esa no era la idea! la idea era, es tener estos dos archivos separados, el formulario HTML (index.html) y el PHP (reporte.php) separados... unidos me quedo de esta forma: Código: <?php
include("calendario/calendario.php");
//Obtengo la fecha de formulario $inicio = $_GET['fecha1']; $fin = $_GET['fecha2'];
//Ordeno la fecha de dd/mm/yy a yy/mm/dd para la consulta a la base de datos $fdesde = explode('/',$inicio); $fhasta = explode('/',$fin);
if($desde == $hasta){ $fhasta[0] = $fhasta[0] + 1; }
$desde = $fdesde[2]."-".$fdesde[1]."-".$fdesde[0]; $hasta = $fhasta[2]."-".$fhasta[1]."-".$fhasta[0];
$f1 = $fdesde[2].$fdesde[1].$fdesde[0]; $f2 = $fhasta[2].$fhasta[1].$fhasta[0];
$error = "<div class='flash'>Mensaje de Error</div>";
if(($f1 == null) or ($f2 == null)){ $fA = 0; } elseif(($f1 == null) and ($f2 == null)){ $fA = 0; } elseif($f1 > $f2){ $fA = 0; } elseif($f1 <= $f2){ $fA = 6; } if($fA == 0){ print $error; }
?>
<html> <head> <title>Reporte en Excel</title> <script language="JavaScript" src="calendario/javascripts.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" > $(document).ready(function(){ setTimeout(function(){ $(".flash").fadeOut("slow", function () { $(".flash").remove(); }); }, 2000); }); </script>
</head>
<body> <center><h1>Reporte en Excel</h1> Seleccione una fecha de inicio y una de fin para generar el reporte en excel. <br><br><br> <form name="fcalen" action="" method="get"> Fecha inicio: <?php escribe_formulario_fecha_vacio("fecha1","fcalen"); ?> <br><br> Fecha final: <?php escribe_formulario_fecha_vacio("fecha2","fcalen"); ?> <br><br> <input name="submit" type="submit" value="Enviar" /> <input type="reset" value="Borrar"> </form> </center>
</body> </html> Asi me funciono, colocando el codigo PHP en el mismo formulario, Pero como digo esta no es la idea, la idea es tener el codigo PHP separado del formulario HTML, en archivos separados. mmm sigo intentando! tiene que haber una forma se que si! Haber si ustedes encuentran algun metodo que no sepa ?¿ Saludos.
_________________ http://greer.nodolinux.com
|
|
|
|
 |
akodo

Moderador
Registrado: Mié Nov 28, 2007 12:00 am Mensajes: 1361 Ubicación: En la X del explorer (pulse para llamar)
|
 Publicado: Lun Oct 25, 2010 3:35 pm |
|
|
Pásame los archivos necesarios y te lo miro mañana. Supongo que serán los archivos "reporte.php" (el php que realiza la validación), el html con el formulario y el php que contiene la funcion "escribe_formulario_fecha_vacio"
_________________ Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)
|
|
|
|
 |
greer

Forista Medio
Registrado: Mar Feb 27, 2007 12:00 am Mensajes: 279 Ubicación: PANAMA
|
 Publicado: Lun Oct 25, 2010 6:14 pm |
|
akodo Te adjunto todo en una carpeta comprimida, todo es bien basico... como te dije, pude hacer lo que queria pero solo integrando el PHP en el archivo HTML yo por mi parte sigo viendo que se me ocurre... Saludos. Adjunto:
reportes.zip [28.51 KiB]
19 veces
_________________ http://greer.nodolinux.com
|
|
|
|
 |
akodo

Moderador
Registrado: Mié Nov 28, 2007 12:00 am Mensajes: 1361 Ubicación: En la X del explorer (pulse para llamar)
|
 Publicado: Mar Oct 26, 2010 5:35 am |
|
Esto debería de funcionar. He tenido que hacer algunos cambios en los archivos: - En el archivo calendario.php, la función "escribe_formulario_fecha_vacio" añade la propiedad "id" con el mismo valor que la de "name"
- El botón de envío del formulario de index.cc.html tiene el nombre cambiado, de "submit" a "submitButton" (da problemas poniendo "name=submit")
- Añadido el archivo "phps/validar.php" que hace una validación simple. El archivo DEBE "escribir" ok si la validación es correcta, y cualquier otro mensaje de error (en html si se prefiere) si falla.
Creo que esos son todos los cambios, aparte de la función de jquery. Lo que se hace es: · Al enviar el formulario, primero se envía una petición asíncrona con jquery al archivo phps/validar.php. Este archivo realiza la validación del formulario. · Si la validación es correcta, el archivo DEBE escribir "ok" (al menos es lo que se está esperando que devuelva). Cualquier otra cosa será interpretada como un error. Este error se escribirá en el div "mensaje" (añadido en index.cc.php), tal y como venga. · Si se devuelve una validación correcta, se vuelve a reenviar el formulario, pero esta vez para ser procesado en el archivo phps/reporte.cc.php. La validación está separada porque creo que es lo mejor, o al menos da menos problemas. Se podría enviar directamente al archivo phps/reporte.cc.php, pero el problema está en que el procesamiento de los resultados es más complicado. No obstante, no tienes por qué modificar la validación realizada en el archivo. Puedes considerar al archivo phps/validar.php como una validación necesaria para enviar el formulario. No tiene por qué ser una validación completa, pero puedes utilizar accesos a base de datos, envio de correos, o lo que se te ocurra. Si tienes alguna duda, ya sabes lo que toca 
_________________ Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)
|
|
|
|
 |
greer

Forista Medio
Registrado: Mar Feb 27, 2007 12:00 am Mensajes: 279 Ubicación: PANAMA
|
 Publicado: Mar Oct 26, 2010 10:54 am |
|
jajajjaja akodo yo estaba haciendo algo parecido, agregando otro arcivo php algo como lo que hiciste en validar.php, voy a obtener algunos datitos del tuyo para ver que onda, ahora en la tarde me pongo con eso y vemos que onda jejeje gracias pana. ahora cuento que paso... Saludos. Editado -- Mié Oct 27, 2010 2:54 am --greer escribió: jajajjaja akodo yo estaba haciendo algo parecido, agregando otro arcivo php algo como lo que hiciste en validar.php, voy a obtener algunos datitos del tuyo para ver que pasa, ahora en la tarde me pongo con eso y vemos que onda jejeje gracias pana.
ahora cuento que paso...
Saludos.
_________________ http://greer.nodolinux.com
|
|
|
|
 |
akodo

Moderador
Registrado: Mié Nov 28, 2007 12:00 am Mensajes: 1361 Ubicación: En la X del explorer (pulse para llamar)
|
 Publicado: Mar Oct 26, 2010 2:52 pm |
|
|
Otra cosa que podrías plantearte es realizar una validación completa, y si todo va bien generar un enlace o un formulario oculto para crear o descargar el documento. Creo que podría ser incluso más conveniente que lo que te he puesto.
_________________ Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)
|
|
|
|
 |
|
|
|
Página 1 de 1
|
[ 10 mensajes ] |
|
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados
No puede abrir nuevos temas en este Foro No puede responder a temas en este Foro No puede editar sus mensajes en este Foro No puede borrar sus mensajes en este Foro No puede enviar adjuntos en este Foro
|
|