• Publicidad

Problemas con variables

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Problemas con variables

Notapor tmejia » 2009-03-09 12:00 @542

Hola, buenos días, tengo un problemilla con mi programa, lo que estoy haciendo es lo siguiente:

En el cgi X, tengo una referencia, por la cual paso 3 parámetros: planta, maq y sub.

Sintáxis: [ Descargar ] [ Ocultar ]
  1. <td colspan=50 align=center bgcolor=silver> 
  2. <a href=\"microbiologico.cgi? planta=$GrupoExtranet\&maq=2&sub=$d\"> 


entonces en el cgi Y, si le doy print $planta, $maq y $sub, sí me las muestra al inicio del cgi, pero conforme va avanzando el cgi ya no me respeta el valor y no puedo verlo, el cgi contiene varias funciones y una de ellas es la de insertar en la base de datos o actualizar, dependiendo del caso. ¿Qué tengo que hacer para poder tener el valor de esa variables en todo el cgi?

Porque el fin último es meter ese valor dentro de una base de datos, pero al hacer referencia a el, no lo toma y por lo tanto no inserta nada en la base de datos.

Agradezco de antemano su ayuda.
tmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2009-03-09 11:46 @532

Publicidad

Notapor danimera » 2009-03-09 12:34 @565

Deberías pegar parte de tu código y ver que no le estés reasignando valores a esas variables en el curso del script.
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 tmejia » 2009-03-09 13:01 @584

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use CGI::Carp "fatalsToBrowser";

        print "Content-type: text/html \n\n<html>";

require "cx.pl"; #conexion a base de datos

print "*$planta **$maq ***$sub ";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

###( esas son las variables que estoy llamando y al hacerles print(), me imprime los valores sin problema

código HTML para el head
Sintáxis: [ Descargar ] [ Ocultar ]
  1. <body> 
  2. <table> 

Declaro unos combos para seleccionar la fecha

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print <<eof;
         $planta, $maq, $sub ## <span style="font-weight: bold">aqui con el print de esas variables me sigue mostrando el valor de los parametros que pasé</span>
        <input type=submit value=' SELECCIONAR RANGO DE FECHAS ' style='cursor:pointer;'>
        <input type=hidden name=imprimir value='$imprimir'>
        </form>

eof


if ($nuevo) {
  $elcambio="INSERT INTO monitoreo_prensa (
   fecha , peso_filtro, peso_humedo, peso_seco, quien , cuando, <span style="
font-weight: bold">sub</span>, observaciones)
     values (
'$fecha', '$peso_filtro', '$peso_humedo', '$peso_seco', '$quien', '$cuando', '<span style="
font-weight: bold">$sub'</span>, '$observaciones') ;"; <span style="font-weight: bold">## sub es el valor q quiero insertar en la base de datos</span>    
        $sth0 = $dbh->prepare($elcambio) or die "Unable to prepare $elcambio : " . $dbh->err, "\n", $dbh->errstr;
        $sth0->execute or die "Unable to execute $elcambio : " . $dbh->err, "\n", $dbh->errstr;
                       
                                                 
}

if ($aplicar && $Id) {
 
  $elcambio="UPDATE monitoreo_prensa set
  fecha ='$fecha' , peso_filtro='$peso_filtro' , peso_humedo='$peso_humedo' ,
  peso_seco='$peso_seco', quien ='$quien', cuando = '$cuando', sub = '$sub', observaciones='$observaciones'
  where row_id='$Id' ;"
;
     
        $sth0 = $dbh->prepare($elcambio) or die "Unable to execute $elcambio : " . $dbh->err, "\n", $dbh->errstr;
        $sth0->execute or die "Unable to execute $elcambio : " . $dbh->err, "\n", $dbh->errstr;
       
}  

print <<eof;                   

  <table cellspacing=1 cellpadding=1 border=0 bgcolor=white width=900 style='text-align:center;'>
    <tr bgcolor=#ffcc00>
      <td bgcolor=white></td>
      <td> FECHA </td>
      <td> Peso del <br> Filtro B </td>
      <td> Peso final <br> húmedo </td>
      <td> Peso final <br> seco </td>
      <td> \%Cs <br> final </td>
      <td> \%Remosión <br> agua </td>  
      <td width=300 bgcolor=eeeeee> observaciones </td>
               
  </tr>  
    <tr height=1 bgcolor=004080>     <td colspan=8></td>    </tr>
 
eof



                                                                                                                  my $consulta0 = "SELECT * FROM monitoreo_prensa
                                where (fecha >= '$top_aa-$top_mm-$top_dd 00:00:00'
                                and fecha <= '$top_aa2-$top_mm2-$top_dd2 23:59:59')
                                order by fecha"
;
                                                                                                                  $sth0 = $dbh->prepare($consulta0);
                  $sth0->execute or die "Unable to execute query: " . $dbh->err, "\n", $dbh->errstr;
                                                                                                                  $cnt=0;
                                                                                                           while (@row = $sth0->fetchrow_array){
                                                               $x=0;
                                                               foreach $c (@Campos) {
                                                                                                                 $$c = $row[$x] ;
                                                         
                                                                                                                 $x++;
                                                                                                               }

                           
                              $color="f0f0f0"; if ($cnt%2==0) { $color='white';}  
                              $cnt++;
                             
                                ($aa2, $mm2, $dd2) = split (/-/, $fecha);
                                ($dd2, $lahora)= split (/ /,$dd2);
                                $lahora= substr($lahora, 0 ,5);
                             
                                if ($imprimir) {
                                  &Lista;
                                  }else {
                                      if ($row_id && $Id == $row_id) {
                                          print "<form method=post style='margin:0;'> \n
                                          <input type=hidden name=Id value=$Id> \n"
;  
                                          &Entrada;
                                      } else { &Lista; }
                                }

                                                                                                           }                                   
                                                                                                               $x=0;
                                                               foreach $c (@Campos) {
                                                                 $$c = '';
                                                                                                                 $x++;
                                                                                                               }
                                                                                                               $eldia=''; $lahora='';
                                                                                                               $Id='';

print <<eof;

    <tr height=1 bgcolor=yellow>     <td colspan=23></td>    </tr>

    <form method=post style='margin:0;'>
      <input type=hidden name=nuevo value=1>    

eof
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


después está esta función:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub Entrada {

$etiq='nuevo';
if ($Id) {
  $etiq='aplicar';
} else {
  $aa2=$top_aa;
  $mm2=$top_mm;
  $dd2=$top_dd;
  $color='f0f0f0';
}


print <<eof;

<tr align=center bgcolor=$color>    

      <td>
          <input type=submit value=' $etiq ' style='cursor:pointer;'>
          <input type=hidden name=aplicar value=1>
      </td>
      <td >

eof


print "    <select name=dd2>";

            for $d (1.. 31) {
                $sel='';if ($dd2==$d) { $sel='selected';}
                 print "<option $sel value=$d>$d</option> \n";
                 }
                 print "</select> \n";

print "    <select name=mm2> <option></option>";

            for $m (1.. 12) {
                $sel=''; if ($m==$mm2) { $sel='selected';}
                print "<option $sel value=$m>$Mes[$m]</option> \n";
                }
                print "</select> \n";

print "     <select name=aa2>  \n";

            for $a (2004 ..$aa2){
                $sel='';if ($aa2==$a) { $sel=" selected ";}
                print "<option $sel value=$a>$a</option> \n";
                }
             print "</select> \n";


print <<eof;
     
      </td>
       
      <td > <input type=text size=2 name=peso_filtro value='$peso_filtro'></td>      
      <td > <input type=text size=2 name=peso_humedo value='$peso_humedo'></td>
      <td > <input type=text size=2 name=peso_seco value='$peso_seco'></td>
      <td> Cs_final </td>
      <td> Remosión </td>
      <td > <input type=text size=65 name=observaciones value='$observaciones'></td>          
  </tr>
    </form>
 
eof


}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En sí el único valor que me interesa es el de $sub; como puedes ver no hay un campo en el form que lo muestre, porque no necesito mostrarlo, pero sí necesito insertarlo en la base de datos.
tmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2009-03-09 11:46 @532

Notapor danimera » 2009-03-09 13:23 @599

¿En qué parte es dónde no te está mostrando el valor de $sub? pues no veo ningún problema ahí, ¿o no te inserta ningún valor en la tabla?
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 tmejia » 2009-03-09 13:38 @609

En efecto no me estaba insertando el valor, pero ya pude insertarlo, hice lo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@parametros = split(/&/, $ENV{'QUERY_STRING'});

$planta = $parametros[0];
$maq = $parametros[1];
$sub = $parametros[2];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y ya con eso me está insertando el valor en la base de datos, sólo que tendría una última duda: me está imprimiendo el valor así:

Código: Seleccionar todo
sub=prensa%201


supongo que tendría que hacerle un split() para que me quite esos caracteres, ¿no?, pero ¿cómo podría ponerle, algo así como:

$sub = split (/=, %20, sub) :?

para que solo me imprima prensa 1?

Gracias de antemano.
tmejia
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2009-03-09 11:46 @532

Notapor danimera » 2009-03-09 14:33 @648

Espera, utiliza mejor el módulo CGI:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use CGI;

$planta = param('planta'); # así llamas los parámetros que pasas por tu form donde el nombre del param es el nombre del campo,
$maq = param('maq');
$sub = param('sub');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahí ya no tienes que complicarte con la obtención de esos datos del query.
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


Volver a Intermedio

¿Quién está conectado?

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

cron