Foros del Web » Programación para mayores de 30 ;) » Programación General »

Script scroll

Estas en el tema de Script scroll en el foro de Programación General en Foros del Web. 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 ...

  #1 (permalink)  
Antiguo 11/05/2005, 02:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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...
  #2 (permalink)  
Antiguo 11/05/2005, 05:25
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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:
<!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>
Y en el external.htm colocá

Código:
<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>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</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&oacute;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&eacute;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&iacute;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&aacute;frica 
    salvaje </font></strong><br>
    Espectacular viaje a trav&eacute;s de las ex&oacute;ticas 
    geograf&iacute;as de sud&aacute;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>
Y bueno, hasta acá llegamos, Avisame si te funciona así seguimos adelante !!!

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 11/05/2005, 08:01
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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?
  #4 (permalink)  
Antiguo 11/05/2005, 08:34
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Si, será un CGI que administrará los mensajes que hay en el HTML, ahora cuando tenga un minuto de tiempo empiezo el script, la estructura para que vos la sigas...

Es que tengo mucho trabajo y hoy tengo un parcial y mañana otro...AUXILIO !!!!!!!

Saludos
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 11/05/2005, 08:44
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
scroll

Venga tu tranquilo, primero lo tuyo. Yo mientras voy a ver si se me ocurre algo mas para meterle a la página.
Suerte en los parciales...
  #6 (permalink)  
Antiguo 13/05/2005, 06:48
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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...
  #7 (permalink)  
Antiguo 13/05/2005, 07:46
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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
  #8 (permalink)  
Antiguo 17/05/2005, 18:46
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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:
#!/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);
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...

Saludos
PD: Disculpa la tardanza, ahora estoy más libre...
__________________
Esteban Quintana
  #9 (permalink)  
Antiguo 18/05/2005, 01:43
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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....
  #10 (permalink)  
Antiguo 18/05/2005, 05:22
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90


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
  #11 (permalink)  
Antiguo 18/05/2005, 06:59
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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.
  #12 (permalink)  
Antiguo 18/05/2005, 07:55
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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
  #13 (permalink)  
Antiguo 19/05/2005, 01:27
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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?
  #14 (permalink)  
Antiguo 19/05/2005, 05:21
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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
  #15 (permalink)  
Antiguo 19/05/2005, 06:06
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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?
  #16 (permalink)  
Antiguo 19/05/2005, 06:13
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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
  #17 (permalink)  
Antiguo 19/05/2005, 08:51
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
El script quedaría así:

Código:
#!/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);
En un rato te subo el index.html con el formulario...

Saludos
__________________
Esteban Quintana
  #18 (permalink)  
Antiguo 19/05/2005, 09:08
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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:
<!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>&nbsp;</p>
</body>
</html>
Checkea que funcione todo y seguimos...

Saludos
__________________
Esteban Quintana

Última edición por monoswim; 20/05/2005 a las 06:20
  #19 (permalink)  
Antiguo 20/05/2005, 02:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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.
  #20 (permalink)  
Antiguo 20/05/2005, 06:20
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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
  #21 (permalink)  
Antiguo 20/05/2005, 07:06
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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
  #22 (permalink)  
Antiguo 23/05/2005, 02:14
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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.
  #23 (permalink)  
Antiguo 23/05/2005, 10:59
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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
  #24 (permalink)  
Antiguo 23/05/2005, 11:23
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Código:
#!/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);
Checkea lo de la fecha y eliminando todo el external.html, debe aparecer en nuevo texto en el scrolling...
__________________
Esteban Quintana
  #25 (permalink)  
Antiguo 23/05/2005, 12:06
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años
Puntos: 0
Cita:
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
Realmente Monoswim no sería Monoswim sin su afán de NO usar módulos.

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:
use CGI;

my $qry = new CGI;
my %inputs = $qry->Vars;
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).

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
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
  #26 (permalink)  
Antiguo 23/05/2005, 19:25
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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
  #27 (permalink)  
Antiguo 24/05/2005, 01:02
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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?
  #28 (permalink)  
Antiguo 24/05/2005, 06:23
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
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
  #29 (permalink)  
Antiguo 24/05/2005, 06:43
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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.
  #30 (permalink)  
Antiguo 24/05/2005, 06:57
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
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?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:34.