Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Problema recoger datos formulario Responder al tema
Nuevo tema


Página 1 de 1  [ 6 mensajes ] 
 
Nota 2006-08-18 07:16 @345

Perlero Nuevo
Registrado: 2006-08-18 07:03 @335
Mensajes: 3
Problema recoger datos formulario
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:
<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:
<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:
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>";


Nota 2006-08-18 07:38 @359
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
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.baboonsoftware.com ... t_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.


Nota 2006-08-22 05:12 @258

Perlero Nuevo
Registrado: 2006-08-18 07:03 @335
Mensajes: 3
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.

[img][img]http://img241.imageshack.us/img241/6137/formulariovh8.jpg[/img][/img]


Nota 2006-08-22 07:27 @352
Avatar de Usuario
Vive para Perl en Español
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia
Mensajes: 551
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:
#!/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:
#!/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


Nota 2006-08-22 11:13 @509
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
¡¡¡NO DEJES DE COMPROBAR QUE LO QUE RECIBES DESDE EL USUARIO ES COHERENTE!!!


Nota 2006-08-23 04:04 @211

Perlero Nuevo
Registrado: 2006-08-18 07:03 @335
Mensajes: 3
Vale, ya lo he probado, si que me funciona, muchas gracias por contentar y vuestra rapidez. :wink:

Un saludo.


Responder al tema  [ 6 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO