Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 10 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mar Feb 27, 2007 12:00 am
Mensajes: 279
Ubicación: PANAMA

Nota Publicado: Sab Oct 23, 2010 11:30 pm 
Arriba  
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

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 12:00 am
Mensajes: 1361
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Dom Oct 24, 2010 4:36 am 
Arriba  
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)

 Perfil  

Desconectado
Forista Ancestral
Forista Ancestral
Avatar de Usuario

Registrado: Mié Abr 11, 2007 11:00 pm
Mensajes: 8550
Ubicación: tras la pantalla (...)

Nota Publicado: Dom Oct 24, 2010 7:30 am 
Arriba  
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 ]

 Perfil Email WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Abr 18, 2007 11:00 pm
Mensajes: 1209
Ubicación: Cojutepeque, El Salvador C. A.

Nota Publicado: Dom Oct 24, 2010 10:29 am 
Arriba  
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!!!

 Perfil WWW  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mar Feb 27, 2007 12:00 am
Mensajes: 279
Ubicación: PANAMA

Nota Publicado: Dom Oct 24, 2010 4:08 pm 
Arriba  
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

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 12:00 am
Mensajes: 1361
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Lun Oct 25, 2010 3:35 pm 
Arriba  
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)

 Perfil  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mar Feb 27, 2007 12:00 am
Mensajes: 279
Ubicación: PANAMA

Nota Publicado: Lun Oct 25, 2010 6:14 pm 
Arriba  
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

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 12:00 am
Mensajes: 1361
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Mar Oct 26, 2010 5:35 am 
Arriba  
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 :)


Adjuntos:
reportes2.zip [34.04 KiB]
34 veces

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)
 Perfil  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mar Feb 27, 2007 12:00 am
Mensajes: 279
Ubicación: PANAMA

Nota Publicado: Mar Oct 26, 2010 10:54 am 
Arriba  
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

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 12:00 am
Mensajes: 1361
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Mar Oct 26, 2010 2:52 pm 
Arriba  
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)

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 10 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


¿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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC - 6 horas
Traducción al español por Huan Manwë
phpBB SEO