• Publicidad

Problema recoger datos formulario

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Problema recoger datos formulario

Notapor Oli » 2006-08-18 07:16 @345

Buenas,
tengo un problema y es que no se recepcionar los datos del formulario y devolverlo en código PERL. Os adjunto la página web, lo que quiero es que una vez introducidos todos los datos te devuelva una página con todos los datos, y te calcule el precio final multiplicando el precio web * unidades del producto. Tampoco me funciona un contador tengo el código de la página HTML y perl (.pl)

Haber si me podeis echar una mano, es que soy novatillo.

Muchas gracias y un saludo.

Código pagina htlm:
Código: Seleccionar todo
<html>

<head>
<meta http-equiv="Content-Language" content="es">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>www.RCLAND.es Tú página de modelismo</title>
<script language="JavaScript">
<!--Muestra fecha y hora actual en la página-->
var all;
var month;
var period;
var day;
function time(){
var currentDate=new Date()

hour=currentDate.getHours()
min=currentDate.getMinutes()
sec=currentDate.getSeconds()
date=currentDate.getDate()
switch(currentDate.getMonth()){
        case 0:month="Enero";break;
        case 1:month="Febrero";break;
        case 2:month="Marzo";break;
        case 3:month="Abril";break;
        case 4:month="Mayo";break;
        case 5:month="Junio";break;
        case 6:month="Julio";break;
        case 7:month="Agosto";break;
        case 8:month="Septiembre";break;
        case 9:month="Octubre";break;
        case 10:month="Noviembre";break;
        case 11:month="Diciembre";break;
}

switch(currentDate.getDay()){
        case 0:day="Domingo";break;
        case 1:day="Lunes";break;
        case 2:day="Martes";break;
        case 3:day="Miercoles";break;
        case 4:day="Jueves";break;
        case 5:day="Viernes";break;
        case 6:day="Sabado";break;
}
if(sec<10){sec="0"+sec}
if(min<10){min="0"+min}

if(hour>12){hour-=12;period="pm"} else {period="am"}
if(currentDate.getHours()==12){period="pm"}
if(currentDate.getHours()==24){period="am"}

var all="Hoy es: "+day+", "+date+ " de "+month+". La hora es: "+hour+":"+min+":"+sec+period
window.status=all
window.setTimeout("time()",300)
}
time()

<!--
function FP_swapImg() {//v1.0
 var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array(); for(n=2; n<args.length;
 n+=2) { elm=FP_getObjectByID(args[n]); if(elm) { doc.$imgSwaps[doc.$imgSwaps.length]=elm;
 elm.$src=elm.src; elm.src=args[n+1]; } }
}
function FP_getObjectByID(id,o) {//v1.0
 var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById) el=o.getElementById(id);
 else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;
 if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)
 for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }
 f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;
 for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]); if(el) return el; } }
 return null;
}

function FP_swapImg() {//v1.0
 var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array(); for(n=2; n<args.length;
 n+=2) { elm=FP_getObjectByID(args[n]); if(elm) { doc.$imgSwaps[doc.$imgSwaps.length]=elm;
 elm.$src=elm.src; elm.src=args[n+1]; } }
}

function FP_preloadImgs() {//v1.0
 var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();
 for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image; d.FP_imgs[i].src=a[i]; }
}
// -->
</script>
</head>

<body onload="FP_preloadImgs(/*url*/'button35.jpg', /*url*/'button36.jpg', /*url*/'button38.jpg', /*url*/'button39.jpg', /*url*/'button3B.jpg', /*url*/'button3C.jpg', /*url*/'button3E.jpg', /*url*/'button3F.jpg', /*url*/'button41.jpg', /*url*/'button42.jpg', /*url*/'button44.jpg', /*url*/'button45.jpg', /*url*/'button47.jpg', /*url*/'button48.jpg', /*url*/'button4D.jpg', /*url*/'button4E.jpg')">


<div style="border-style:solid; border-width:2px; position: absolute; width: 766px; height: 895px; z-index: 1; left: 80px; top: 32px" id="Datoscliente">

   

<form method ="post" action ="Contador.pl>
<p><b><font size="4" color="#FFFFFF"><font color="#FFFFFF" size="4"><b><span style="background-color: #FF00FF">
   Introduzca el nombre del producto, el precio y el número de unidades
deseadas:</span></font></b></b></font></p>
<p>
   <b><font size="4" color="#FFFFFF">Nombre producto:&nbsp; </font></b>
   <input type="text" name="NProd" size="32"><b><font size="4" color="#FFFFFF">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   Precio Web:</font></b><input type="text" name="Precio" size="8" value="0"></p>
   <p>
   <b><font size="4" color="#FFFFFF">Nº de unidades del producto:</font></b><input type="text" name="NUnidades" size="5" value="0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <font color="#FFFFFF" size="4"><b>Precio Pedido Final:</b></font><input type="text" name="PrecioFinal" size="8" value="0"></p>
<h3>&nbsp;</h3>
<h3><font color="#FFFFFF"><span style="background-color: #FF00FF">Por favor,
introduzca correctamente todos sus datos:</span></font></h3>
<h3><font color="#FFFFFF">Nombre</font></h3><input type="text" name="nombre" size="38"></h3>
<h3><font color="#FFFFFF">Apellidos</font></h3><input type="text" name="apellidos" size="40">
<h3><font color="#FFFFFF">Domicilio</font></h3><input type="text" name="domicilio" size="36">
<h3><font color="#FFFFFF">Provincia</font></h3><input type="text" name="provincia" size="10">
<h3><font color="#FFFFFF">País</font></h3><input type="text" name="país" size="36">
<h3><font color="#FFFFFF">Código Postal</font></h3><input type="text" name="CPostal" size="6">
<h3><font color="#FFFFFF">Teléfono</font></h3><input type="text" name="tlfno" size="9">
<h3><font color="#FFFFFF">E-Mail</font></h3><input type="text" name="E-Mail" size="20">
<p>
<input type="submit" value="Enviar datos">
<input type="reset" value="Borrar datos">

   </p>

   </form>
<div style="position: absolute; width: 116px; height: 339px; z-index: 1; left: 873px; top: 148px; border-style: solid; border-width: 2px" id="capa1">
   <p align="center"><font color="#FF00FF">
   <span style="font-weight: 700; background-color: #FFFF00">CONSULTAS</span></font></div>
</div>
<div style="position: absolute; width: 139px; height: 21px; z-index: 6; left: 568px; top: 941px" id="Volver">
   <a href="../Principal.htm">
   <img border="0" id="img17" src="button4C.jpg" height="31" width="155" alt="VOLVER A PRINCIPAL" fp-style="fp-btn: Soft Rectangle 6" fp-title="VOLVER A PRINCIPAL" onmouseover="FP_swapImg(1,0,/*id*/'img17',/*url*/'button4D.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img17',/*url*/'button4C.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img17',/*url*/'button4E.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img17',/*url*/'button4D.jpg')"></a></div>
<div style="position: absolute; width: 86px; height: 21px; z-index: 6; left: 962px; top: 480px" id="Volver6">
   <a href="../PRecambios.htm">
   <img border="0" id="img16" src="button46.jpg" height="20" width="100" alt="ACCESORIOS" onmouseover="FP_swapImg(1,0,/*id*/'img16',/*url*/'button47.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img16',/*url*/'button46.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img16',/*url*/'button48.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img16',/*url*/'button47.jpg')" fp-style="fp-btn: Soft Rectangle 6" fp-title="ACCESORIOS"></a></div>
<div style="position: absolute; width: 86px; height: 21px; z-index: 6; left: 962px; top: 437px" id="Volver5">
   <a href="../PEmisoras.htm">
   <img border="0" id="img15" src="button43.jpg" height="20" width="100" alt="EMISORAS" onmouseover="FP_swapImg(1,0,/*id*/'img15',/*url*/'button44.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img15',/*url*/'button43.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img15',/*url*/'button45.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img15',/*url*/'button44.jpg')" fp-style="fp-btn: Soft Rectangle 6" fp-title="EMISORAS"></a></div>
<div style="position: absolute; width: 86px; height: 21px; z-index: 6; left: 962px; top: 394px" id="Volver4">
   <a href="../PBarcos.htm">
   <img border="0" id="img14" src="button40.jpg" height="20" width="100" alt="BARCOS" onmouseover="FP_swapImg(1,0,/*id*/'img14',/*url*/'button41.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img14',/*url*/'button40.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img14',/*url*/'button42.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img14',/*url*/'button41.jpg')" fp-style="fp-btn: Soft Rectangle 6" fp-title="BARCOS"></a></div>
<div style="position: absolute; width: 86px; height: 21px; z-index: 6; left: 962px; top: 351px" id="Volver3">
   <a href="../PAviones.htm">
   <img border="0" id="img13" src="button3D.jpg" height="20" width="100" alt="AVIONES" onmouseover="FP_swapImg(1,0,/*id*/'img13',/*url*/'button3E.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img13',/*url*/'button3D.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img13',/*url*/'button3F.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img13',/*url*/'button3E.jpg')" fp-style="fp-btn: Soft Rectangle 6" fp-title="AVIONES"></a></div>
<div style="position: absolute; width: 86px; height: 21px; z-index: 6; left: 962px; top: 308px" id="Volver2">
   <a href="../PCamiones.htm">
   <img border="0" id="img12" src="button3A.jpg" height="20" width="100" alt="CAMIONES" onmouseover="FP_swapImg(1,0,/*id*/'img12',/*url*/'button3B.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img12',/*url*/'button3A.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img12',/*url*/'button3C.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img12',/*url*/'button3B.jpg')" fp-style="fp-btn: Soft Rectangle 6" fp-title="CAMIONES"></a></div>
<div style="position: absolute; width: 86px; height: 21px; z-index: 6; left: 962px; top: 265px" id="Volver1">
   <a href="../PMotos.htm">
   <img border="0" id="img11" src="button37.jpg" height="20" width="100" alt="MOTOS" onmouseover="FP_swapImg(1,0,/*id*/'img11',/*url*/'button38.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img11',/*url*/'button37.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img11',/*url*/'button39.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img11',/*url*/'button38.jpg')" fp-style="fp-btn: Soft Rectangle 6" fp-title="MOTOS"></a></div>
<div style="position: absolute; width: 86px; height: 21px; z-index: 6; left: 962px; top: 219px" id="Volver0">
   <a href="../PCoches.htm">
   <img border="0" id="img10" src="button34.jpg" height="20" width="100" alt="COCHES" onmouseover="FP_swapImg(1,0,/*id*/'img10',/*url*/'button35.jpg')" onmouseout="FP_swapImg(0,0,/*id*/'img10',/*url*/'button34.jpg')" onmousedown="FP_swapImg(1,0,/*id*/'img10',/*url*/'button36.jpg')" onmouseup="FP_swapImg(0,0,/*id*/'img10',/*url*/'button35.jpg')" fp-style="fp-btn: Soft Rectangle 6" fp-title="COCHES"></a></div>
<p align="center"><img border="0" src="../PCondiciones.JPG" width="1280" height="981"></p>

</body>

</html>


Código contador HTML:
Código: Seleccionar todo
<html>
<head><title>Contador de Visitas</title></head>
<body>

<form method=“post” action="/cgi-bin/contador.pl">
   <center>
   <h2>Pulse el botón para incrementar el contador de visitas</h2>
   <input type="submit" value="Nueva Visita">
   <input type="submit" value="Enviar datos">
   </center>
</form>
</body>
</html>


Código contador PERL:
Código: Seleccionar todo
open(IN,"cuenta");
$n_visitas=<IN>;
close(IN);
$n_visitas++;
open(OUT,">cuenta_nueva");
print OUT $n_visitas;
close(OUT);
unlink("cuenta");
rename("cuenta_nueva","cuenta");
print "content-type: text/html\n\n";
print "<h2>El numero de visitas de esta pagina es $n_visitas</h2>";
Oli
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-08-18 07:03 @335

Publicidad

Notapor explorer » 2006-08-18 07:38 @359

Hola, Oli. Bienvenido al foro.

Esta es una respuesta rápida.

Veo en la línea del <form> que te falta una '"', y que además llamas a Contador.pl. Pero este contador, según veo en el código al final, sólo sirve para contar los accesos a la página.

En este foro encontrarás tutoriales para leer los datos de un formulario html. Por ejemplo, aquí: http://perlenespanol.com/archives-tut/cat_cgi.html

Y en el foro hay muchas preguntas contestadas sobre el módulo CGI, que es el que debes de usar. Utiliza el sistema de búsqueda.

Aquí te podremos ayudar cuando te atasques con tu código.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Oli » 2006-08-22 05:12 @258

Buenas, aprovechando esto os adjunto un formulario con el nombre de sus campos, como sería el código en perl para capturar estos datos y volver a mostrarlos en HTML. Me vale sólo un ejemplo en el que se multipliquen los campos del número de unidades por el precio para obtener el precio final.

Haber si alguien me puede echar una mano, es que he probado otros código y no me ha funcionado.

Muchas gracias y un saludo.

Imagen
Oli
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-08-18 07:03 @335

Notapor danimera » 2006-08-22 07:27 @352

Con gusto te dare una respuesta a esto, Hay dos formas para que lo hagas esta que seria la real, pero si estas aprendiendo apenas tu veras si la usas y seria: si usas el method=post en tu formulario

Código: Seleccionar todo
#!/usr/local/bin/perl
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);

   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $value =~ s/<([^>]|\n)*>//g;
   $value =~ s/<//g;
   $value =~ s/>//g;
   $FORM{$name} = $value;
}
# esto multiplicaria los campos supongo que se llaman asi

$multiplicacion = $FORM{'NUnidades'} * $FORM{'precio'};


O bueno yo usaria el modulo CGI y puedes estar seguro de que te funcionara quedaria asi:

////////////////////////////////
Código: Seleccionar todo
#!/usr/local/bin/perl
use CGI qw(:all);

# solamente colocas param y el nombre del campo de tu formulario, yo #he tomado que se llaman NUnidades y precio, pero debes colocar como #se llaman estos textbox

$multiplicacion = param('NUnidades') * param('precio');



PDT: Espero que te sirva, deberia funcionarte bien, pero en caso contrario, no dudes en escribirnos y te estaremos ayudadando OK
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Notapor explorer » 2006-08-22 11:13 @509

¡¡¡NO DEJES DE COMPROBAR QUE LO QUE RECIBES DESDE EL USUARIO ES COHERENTE!!!
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Oli » 2006-08-23 04:04 @211

Vale, ya lo he probado, si que me funciona, muchas gracias por contentar y vuestra rapidez. :wink:

Un saludo.
Oli
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-08-18 07:03 @335


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados