| |||
Script scroll Hola Monoswin, ¿vamos a empezar con es script Java para la ventanita de mensajes de la que estuvimos hablando la semana pasada?. Hasta hoy no habia tenido oportnidad de visitar el foro, pero si me orientas mas o menos de como hay que hacerlo estaré encantado de ponerme a intentarlo... |
| ||||
okok, manos a la obra !!! Lo principal será hacer el scroll en JS con un documento HTML que valla subiendo como las propagandas...Luego en un segundo paso administraremos ese HTML con PERL. 1er paso: crear una carpeta "scroll" en la carpeta defoult para los HTML...O sea que la dirección será http://www.dominio.com/scroll 2do paso: En el archivo index.html colocá el siguiente código
Código:
Y en el external.htm colocá<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Ejemplo de Scroll modificable dinámicamente - MonoSwim - Alextroy - Forosdelweb.com</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td><table width="100%" height="150" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td width="65%"><div align="center"><font color="#000000" size="3" face="Arial, Helvetica, sans-serif"><strong> Script de scroll !!! </strong></font></div></td> <td width="35%" bgcolor="#FFFFCC"> <!--<IFRAME> scroller- By Dynamic Drive--> <!--For full source code and more DHTML scripts, visit http://www.dynamicdrive.com--> <!--This credit MUST stay intact for use--> <iframe id="datamain" src="external.htm" width=100% height=100% marginwidth=0 marginheight=0 hspace=0 vspace=3 frameborder=0 scrolling=no></iframe></td> </tr> </table></td> </tr> </table> </body> </html>
Código:
Y bueno, hasta acá llegamos, Avisame si te funciona así seguimos adelante !!!<html> <body bgcolor="#FFFFCC"> <div id="datacontainer" style="position:absolute;left:0;top:10;width:100%" onMouseover="scrollspeed=0" onMouseout="scrollspeed=cache"> <!-- ADD YOUR SCROLLER COMMENT INSIDE HERE---------------------> <p> </p> <p> </p> <p> </p> <p> </p> <p><b><font size="3" face="Verdana, Arial, Helvetica, sans-serif">Novedades</font></b></p> <p align="left"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong>Viajes Exóticos </strong></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br> Viaje a indonesia con todo pago, un paquete muy completo con hotel 5 estrellas y viajes aéreos en primera.</font></p> <p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">Bariloche - Fiesta de la Nieve </font></strong> <br> Imperdible fiesta de 3 días a puro sky, snowboard y las mejores fiestas en la base del cerro catedral</font></p> <p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">Sudáfrica salvaje </font></strong><br> Espectacular viaje a través de las exóticas geografías de sudáfrica, un viaje a pura adrenalina, en un hotel con todas las comodidades</font></p> <p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">Viaje al fin del mundo</font><br> </strong>Viaje a Usuahia con todo pago para realizar todo el turismo aventura que esta ciudad ofrece, un viaje para realizar con toda la familia.</font> <!-- END SCROLLER CONTENT----------------------------------------> <div> <script language="JavaScript1.2"> //<iframe> script by Dynamicdrive.com //Specify speed of scroll. Larger=faster (ie: 5) var scrollspeed=cache=2 function initialize(){ marqueeheight=document.all? parent.document.all.datamain.height : parent.document.getElementById("datamain").getAttribute("height") dataobj=document.all? document.all.datacontainer : document.getElementById("datacontainer") dataobj.style.top=5 thelength=dataobj.offsetHeight scrolltest() } function scrolltest(){ dataobj.style.top=parseInt(dataobj.style.top)-scrollspeed if (parseInt(dataobj.style.top)<thelength*(-1)) dataobj.style.top=5 setTimeout("scrolltest()",50) } window.onload=initialize </script> </div></div></body> </html> <center><span style="width: 100%; font-family: helvetica; font-size: 6px; Filter: Alpha(Opacity=0,FinishOpacity=0, Style=1);"> Design downloaded from <a href="http://www.freewebtemplates.com" style="font-family: helvetica; font-size: 6px;">FreeWebTemplates.com</a><br> Free web design, web templates, web layouts, and website resources! </span></center><br><br> Saludos
__________________ Esteban Quintana |
| |||
Scroll Ok, lo he hecho tal y como has dicho y va como la seda.... Ahora a por el formulario ¿no? Una cosa solo, digo yo que si escriben muchos mensajes tardará una eternidad en mostrarlos todos ¿no?. ¿como podriamos regular esto de alguna forma? Tal vez haciendo que se borren pasados unos minutos??? Bueno venga,que estoy adelantando acontecimientos, primero el formulario. ¿hay que hacerlo en una CGI? |
| |||
script scroll Hola amigo, ¿que tal fueron los parciales? espero que bien... Cuando quieras y tengas un momento continuamos con lo del formulario para el scroll ¿de acuerdo? que estoy ansioso por empezar con los quebraderos de cabeza de Perl... |
| ||||
Pues no me fueron tan bien que digamos... Pero bueno, son los primeros parciales...Siempre me tiro a vago en los primeros parciales...jeje Este finde me siento y empiezo con el script, seguramente el domingo ya lo suba... Saludos
__________________ Esteban Quintana |
| ||||
Hola amigo, si pienses que me olvidé de vos !!! Para empezar el script vamos a darle la primera funcionalidad, que será abrir y escribir el archivo external.htm y agregarle una línea al final del mismo...Con un mensaje cualquiera, es para estar seguros que el archivo lo abre bien y lo graba... El script sería más o menos así...
Código:
Guardá este script en el una carpeta como ser cgi-bin/scroll y ejecutalo a ver si funciona, hay que ver la dirección del archivo external que sea la correcta...#!/usr/bin/perl use strict; print "Content-type: text/html\n\n"; open (DATABASE, ">>../../scroll/external.htm") || print "No se puede abrir el archivo"; flock(DATABASE,2); print DATABASE "<p>Nueva línea en el <b>archivo</b> con formato HTML</p>\n"; close (DATABASE) || print "Error al cerrar el archivo"; print "Línea agregada !!! FUNCIONA !!!"; exit(1); Saludos PD: Disculpa la tardanza, ahora estoy más libre...
__________________ Esteban Quintana |
| |||
script scroll Hola, no te preocupes, ya me imaginé que estarias ocupado, aunque reconozco que estaba algo impaciente. Bueno, lo he hecho tal y como me has dicho y creo que funciona correctamente. Cuando lo ejecuto me imprime la cadena: No se puede abrir el archivoError al cerrar el archivoLÃ*nea agregada !!! FUNCIONA !!!. ¿es esto lo que debe imprimir? Pero hay una cosa que no entiendo muy bien, ¿se supone que el script guarda en el fichero external.htm esa cadena? Porque lo he comprobado y a este fichero no se le ha añadido nada.... |
| ||||
No se puede abrir el archivo, lo imprime cuando hay un error al abrir el archivo, seguramente la dirección del mismo está mal o no tiene los permisos chmod 766 Error al cerrar el archivo, oviamente lo coloca porque si no lo pudo abrir menos lo podrá cerrar... El mensaje que debe colocar es el de Línea agregada !!! FUNCIONA !!! y al abrir el external.htm debes ver que se agregó la línea...Checkea eso de los permisos y que la dirección sea la exacta... Saludos
__________________ Esteban Quintana |
| |||
script scroll No lo entiendo, he puesto permisos 755 al archivo scroll.pl y 766 a external.html ¿es así como deben estar? He observado en el log de errores que cuando lo ejecuta y me escribe la cadena que antes te he comentado aparecen dos lineas: [error]flock() on closed filehandle DATABASE at scroll.pl line 8 [error]print() on closed filehandle DATABASE at scroll.pl line 9. |
| ||||
Claro, te escribe eso porque no pudo abrir el archivo, con lo cual tampoco lo puede bloquear (flock() ) y tampoco escribir (print DATABASE)... Está bien la dirección del archivo, con ../ vas al directorio padre... Hagamos una cosa, colocá open (DATABASE,">>external.htm") || print "No se puede abrir el archivo"; Y colocá el archivo external.htm en el mismo directorio que el script, ahí no puede haber problemas de direcciones... Checkea también que .htm y .html son distintos...Igual que mayúsculas y minúsculas... Saludos
__________________ Esteban Quintana |
| |||
script scroll Ok, ya dí con la tela... Siento no poder seguir mirandolo ayer, pero esque como esto lo hago desde el curro a veces se ponen los jefes muy pesados con el tema del trabajo... Que tonteria ¿no? Bueno, pues resulta que desde la carpeta cgi-bin es necesario poner httpdocs en las rutas. Así que al final queda asi: ../../httpdocs/scroll/external.html. La verdad esque no termino de cogerle el truco a esto de las rutas, porque probé tambien con la ruta absolula y tampoco me lo aceptó. En fin, ya me muestra el mensaje de ¡¡FUNCIONA!! y he comprobado que se ha añadido la cadena al fichero. ¿que toca ahora? |
| ||||
Perfecto !!! ahora un poco de teoría y luego te hago el script...Pero antes te digo como funciona para que lo entiendas... Primero la ruta absoluta no te sirve si la colocás desde http, ya que es el sistema operativo y no la web la que abre el archivo, deberías de poner la ruta absoluta del sistema operativo que es algo raro como /usr/bin/apache/htdocs......Lo que en windows sería algo como c:/Mis Documentos/scroll/ Ahora en el script tenemos que hacer que cuando comienza tome las variables que le mandamos desde el formulario y las imprima en esta línea que le cargamos al archivo...Y en el index.html colocar el formulario con los campos para enviar el mensaje y el action de este formulario debe estar direccionado al script... Que campos querés que envíe el usuario cuando envía el formulario ? Podría ser Nombre y Mensaje !!! Decime y lo empiezo a hacer, se entiende la lógica ? Saludos
__________________ Esteban Quintana |
| |||
script scroll Si, se entiende perfectamente. Habia pensado que como para acceder a la página primero habrá que validarse en la misma con un nombre de usuario y una contraseña, que el formulario coja automáticamente el nombre del usuario que se ha validado, esta seria la variable $usuario que se introduce en un CGI llamado validar.pl. Así que en teoria el único dato que introduciria el formulario seria el mensaje... De todas formas si de esta forma es demasiado complicado podriamos empezar como tu has dicho y luego ya se iria perfeccionando... ¿que crees que es mas conveniente? |
| ||||
Pues para ir de a partes lo haría de la forma fácil, y luego le colocamos el nombre automáticamente y le podríamos colocar la fecha/hora también automáticamente... Y si en el script de validar tiene status de usuarios también se podría colocar el status, algo así como la nacioalidad, la edad, o algún dato así... En 1 hora te subo el script... Saludos
__________________ Esteban Quintana |
| ||||
El script quedaría así:
Código:
En un rato te subo el index.html con el formulario...#!/usr/bin/perl use strict; #cargamos la información de entrada en la variable hash "inputs" my %inputs = &input_data(); print "Content-type: text/html\n\n"; open (DATABASE, ">>../../httpdocs/scroll/external.html") || print "No se puede abrir el archivo"; flock(DATABASE,2); print DATABASE "<p><b>$inputs{'autor'} dice</b> $inputs{'mensaje'}</p>\n"; close (DATABASE) || print "Error al cerrar el archivo"; #Imprimimos el mensaje de todo OK print "Mensaje guardado correctamente"; # función que realiza la carga de información del formulario... sub input_data { my (@pairs,$buffer,%input_data); if ($ENV{'REQUEST_METHOD'} eq 'GET') { @pairs = split(/&/, $ENV{'QUERY_STRING'}); }elsif ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); }else { &error('leer','datos'); } foreach my $pair (@pairs) { my ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ tr/\0//d; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/\0//d; $value =~ s/\n//g; $input_data{$name} = $value; } return(%input_data); } exit(1); Saludos
__________________ Esteban Quintana |
| ||||
El index.html quedaría así...Claro que luego le tenés que cambiar el diseño a gusto...Pues esto está sin ningún formato...
Código:
Checkea que funcione todo y seguimos...<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Ejemplo de Scroll modificable dinámicamente - MonoSwim - Alextroy - Forosdelweb.com</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td><table width="100%" height="150" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td width="65%"><div align="center"><font color="#000000" size="3" face="Arial, Helvetica, sans-serif"><strong> Script de scroll !!! </strong></font></div></td> <td width="35%" bgcolor="#FFFFCC"> <!--<IFRAME> scroller- By Dynamic Drive--> <!--For full source code and more DHTML scripts, visit http://www.dynamicdrive.com--> <!--This credit MUST stay intact for use--> <iframe id="datamain" src="external.html" width=100% height=100% marginwidth=0 marginheight=0 hspace=0 vspace=3 frameborder=0 scrolling=no></iframe></td> </tr> </table></td> </tr> </table> <form action="http://www.tudominio.com/cgi-bin/scroll/scroll.pl" method="post" name="formulario" id="formulario"> <p>Nombre:<br> <input name="autor" type="text" id="autor"> </p> <p>Mensaje:<br> <textarea name="mensaje" cols="40" rows="3" id="mensaje"></textarea> </p> <p> <input type="submit" name="Submit" value="Enviar Mensaje"> </p> </form> <p> </p> </body> </html> Saludos
__________________ Esteban Quintana Última edición por monoswim; 20/05/2005 a las 06:20 |
| |||
script scroll OK, Funciona!! y no me ha dado ningún error, Lo único es que he tenido que modificar una linea del formulario de index.html porque guardaba el mensaje pero no el nombre del usuario, concretamente esta: <input type="text" name="autor" id="autor">. Solo tengo una duda, ¿porque has creado toda la funcion input_data()? ¿no habria sido mas sencillo usar el módulo CGI.PM? Imagino que si lo has hecho asi es por algo, claro... Bueno, cuado quieras seguimos. |
| ||||
jajajaja, me confundí autor con nombre, coloqué nombre en uno y autor en otro...jaja, ahora lo modifico para que ya quede... El input_data() o el CGI.PM...mmm...mmm...La verdad es que sería lo mismo, pero a mi me gusta más el input_data() porque sabés exactamente que tiene y podés formatear la info ahí mismo, por ejemplo, cuando en los foros colocas código entre [] ya sea code o img o algo así, estaría bueno colocarlo en tu script así los usuarios podrán colocar más formato a sus mensajes...como Negrita, Cursiva y esas cosas... Con que querés seguir ? colocando la fecha y hora de cada mensaje ? Saludos
__________________ Esteban Quintana |
| |||
script scroll Ok, lo de la fecha y la hora me parece buena idea. No se si me dará tiempo a verlo hoy, porque estoy a punto de salir y en mi casa no tengo Internet, estoy cambiando la linea y aún no me han activado el nuevo servicio...voy a tener 1MB!! En fin, si no da tiempo hoy lo miraré el lunes ¿ok? buen fin de semana |
| |||
script scroll Bueno, ya estamos aqui otra vez...y toda una apasionante semana laboral por delante... Pues nada, que cuando quieras seguimos con es script. Queria comentar una cosa, cuando introdiuzco un nuevo mensaje mediante el formulario este no se añade a los demas mensajes que habian por defecto, sino que aparece de forma estática en la ventana scroll por encima de los anteriores, como si estuvies en una capa superior... Te comento esto porque no se si es debido a que aún no esté acabado o si es que he hecho algo mal. |
| ||||
Si, es que el archivo expernal.html lo tenés que colocar vacío del todo, sin información ni nada...Totalmente vacío, incluso sin etiquetas <HTML>...Ahí te funcionará perfecto... Ahora te subo el script con la modificación horaria... Saludos
__________________ Esteban Quintana |
| ||||
Código:
Checkea lo de la fecha y eliminando todo el external.html, debe aparecer en nuevo texto en el scrolling... #!/usr/bin/perl use strict; #cargamos la información de entrada en la variable hash "inputs" my %inputs = &input_data(); my $fecha = &get_fecha(); print "Content-type: text/html\n\n"; open (DATABASE, ">>../../httpdocs/scroll/external.html") || print "No se puede abrir el archivo"; flock(DATABASE,2); print DATABASE "<p><b>$inputs{'autor'} dice</b> $inputs{'mensaje'}<br>$fecha</p>\n"; close (DATABASE) || print "Error al cerrar el archivo"; #Imprimimos el mensaje de todo OK print "Mensaje guardado correctamente"; # función que realiza la carga de información del formulario... sub input_data { my (@pairs,$buffer,%input_data); if ($ENV{'REQUEST_METHOD'} eq 'GET') { @pairs = split(/&/, $ENV{'QUERY_STRING'}); }elsif ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); }else { &error('leer','datos'); } foreach my $pair (@pairs) { my ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ tr/\0//d; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/\0//d; $value =~ s/\n//g; $input_data{$name} = $value; } return(%input_data); } sub get_fecha { my ($sec,$min,$hora,$mdia,$mon,$ano,$wdia,$ydia,$isdst,@meses,@dias,$fecha); ($sec,$min,$hora,$mdia,$mon,$ano,$wdia,$ydia,$isdst) = localtime (time); @meses = ('Enero','Febrero','Marzo','Abril','Mayo','Junio', 'Julio','Agosto','Septiembre','Octubre','Noviembre ','Diciembre'); @dias = ('Domingo','Lunes','Martes','Miercoles','Jueves',' Viernes','Sabado'); $ano += 1900; $fecha = "$dias[$wdia], $mdia de $meses[$mon] de $ano"; return $fecha; } exit(1);
__________________ Esteban Quintana |
| |||
Cita: Realmente Monoswim no sería Monoswim sin su afán de NO usar módulos.
Iniciado por monoswim El input_data() o el CGI.PM...mmm...mmm...La verdad es que sería lo mismo, pero a mi me gusta más el input_data() porque sabés exactamente que tiene y podés formatear la info ahí mismo En mi opinión muy personal, prefiero mil veces usar el módulo CGI.pm, entonces podrías hacer algo así en tu script:
Código:
Para mi es más que una cuestión de gustos, realmente es más robusto usar el módulo CGI.pm pues se hacen más validaciones de los datos que la función que se usa normalmente (en este caso la función input_data).use CGI; my $qry = new CGI; my %inputs = $qry->Vars; Y cuando vayas avanzando y metiendo cosas más complicadas a tus formas, como upload de archivos, cajas de varias opciones, select boxes con varias opciones, etc, etc, este módulo te hace la vida realmente sencilla. Llevo ya bastante tiempo intentando convencer a Monoswim de esto, hasta ahora sin éxito. SALUDOS |
| ||||
jajaja, Como anda mi programador favorito !!! Debo reconocer que hasta ahora soy el único "Trastornado" que conozco al que le gusta reinventar la polvora, pero bueno, gustos son gustos...Reconozco que a la gran gran mayoría (todos menos yo) les interesa más usar el módulo CGI que hacer las cosas manualmente... Dejo esa parte del script a libre decisión de cada uno que lo use... Y ahora voy a colocar este post en la zona de Taller de PERL ya que está funcionando OK !!! Saludos PD: Kidd, si tenés alguna idea para el Taller o las faq's bienvenida sea !!! PD: Saludos amigo !!!
__________________ Esteban Quintana |
| |||
script scroll No lo entiendo...¿tengo que eliminar todo lo que hay en external.html??? ¿incluida la función Java??? Entonces ando mas perdido de lo que yo creia.... En cualquier caso he hecho eso pero no ha servidor de nada, guarda en el archivo una linea con la información que he introducido en el formulario pero no la muestra en el scroll. También he probado eliminandolo todo excepto la función, pero nada, me añade la linea al final del archivo, y no entre las etiquetas: <!-- ADD YOUR SCROLLER COMMENT INSIDE HERE---------------------> <!-- END SCROLLER CONTENT----------------------------------------> Estoy pensando también que no tiene mucho sentido que el scroll muestre la fecha cuando los mensajes van a tener una duración determinada, asique no estaria mal hacer también un histórico de mensajes o algo asi ¿no crees? |
| ||||
Los mensajes tendrán una duración determinada ???...Eso no lo sabía...jeje Es verdad que el script de external.html lo debes dejar, sino no te funciona, me olvidé de ese pequeño detalle, ahora bien, lo que no tenés que hacer es colocar el </html> y seguir escribiendo abajo (coimo está ahora) porque te aparece como una capa... Podés borrar la parte de propaganda y dejarlo sin el </html> así mostrará toda la info que los usuarios colocan en forma de scroll... Como querés que se realice el historial ? cuando llega a 30 mensajes que vuelva a 0 ? o mejor que valla eliminando pero dejando unos 3 mensajes para que no aparezca vacío... Que tenés en en mente ? Saludos
__________________ Esteban Quintana |
| |||
script scroll Hombre, lo de la duración determinada lo digo porque si nó cuando se llene el scroll de mensajes tardará una eternidad en mostrarlos todos ¿no?. Imagina que haya 300 mensajes, tardaria todo el dia en dar una vuelta entera. Mi idea seria algo asi como que en el scroll se mostrasen los mensajes escritos el mismo dia y que luego haya una opción para consultar todos los mensajes enviados en un año, por ejemplo, o los de un determinado usuario. Bueno, voy a intentar solucionar lo del external.html y a colocar la parte de las fechas, que aún no he tenido tiempo. |
| |||
script scroll Me temo que sigo sin entenderlo. El archivo external.html ¿deberia quedar asi? <html> <body bgcolor="#FFFFCC"> <div id="datacontainer" style="position:absolute;left:0;top:10;width:100%" onMouseover="scrollspeed=0" onMouseout="scrollspeed=cache"> <!-- ADD YOUR SCROLLER COMMENT INSIDE HERE---------------------> fdxgfd <!-- END SCROLLER CONTENT----------------------------------------> <div> <script language="JavaScript1.2"> //<iframe> script by Dynamicdrive.com //Specify speed of scroll. Larger=faster (ie: 5) var scrollspeed=cache=2 function initialize(){ marqueeheight=document.all? parent.document.all.datamain.height : parent.document.getElementById("datamain").getAttr ibute("height") dataobj=document.all? document.all.datacontainer : document.getElementById("datacontainer") dataobj.style.top=5 thelength=dataobj.offsetHeight scrolltest() } function scrolltest(){ dataobj.style.top=parseInt(dataobj.style.top)-scrollspeed if (parseInt(dataobj.style.top)<thelength*(-1)) dataobj.style.top=5 setTimeout("scrolltest()",50) } window.onload=initialize </script> </div></div></body> De este modo cuando valido el formulario solo me añade la siguiente linea al final del archivo: <p><b>Fulanito dice</b> ¡HOLA!</p> y no me lo muestra en ningún sitio, en el scroll solo aparece 'fdxgfd' que es lo que hay entre las lineas: <!-- ADD YOUR SCROLLER COMMENT INSIDE HERE---------------------> <!-- END SCROLLER CONTENT----------------------------------------> ¿como podria hacer para que la linea que genera el formulario aparezca entre estas lineas? |