• Publicidad

problema con contador a DB

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

problema con contador a DB

Notapor romerodg » 2006-09-04 14:55 @663

Hola

hice esto en Perl::

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use DBI;
use Oraperl;
$ENV{"ORACLE_HOME"} = "/opt/oracle/product/9.2.0";

$dbh = DBI-> connect("dbi:Oracle:host=algunhost;sid=algunSID", "esquema", "secreto");
DBI-> errstr;

my $ipuser =$ENV{"REMOTE_ADDR"};

$user_exists = "select ip from hit_cri where ip = '$ipuser'";
$sth = $dbh->prepare($user_exists);
$rv = $sth->execute;
my $userip = $sth->fetchrow_array;
$sth->finish;
if ($userip =  $ipuser) {
    $value = "select main from hit_cri where ip = '$ipuser'";
    $stha = $dbh->prepare($value);
    $rva = $stha->execute;
    my $value_keep = $stha->fetchrow_array();
    $stha->finish;

    $increase = "update hit_cri set main = $value_keep + 1 where ip = '$ipuser'";
    $sthb = $dbh->prepare($increase);
    $rvb = $sthb->execute;
    $sthb->finish;
}
else {
    $new = "insert into hit_cri values(seq_visitor.nextval, '$ipuser', 1, 0, 0, 0, 0, 0, 1)";
    $sthc = $dbh->prepare($new);
    $rvc = $sthc->execute;
    $sthc->finish;
}
$dbh->disconnect;
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


El problema que tengo es que no funciona.

Si cambio el valor de $ipuser por un valor "normal" (tipo "algo"), funciona el if. Pero si lo uso con un browser no anda. No hace nada.

Probé de todo, pero no me sale.
Por favor, ayudenme.
Gracias
romerodg
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-08-31 15:33 @690

Publicidad

Notapor explorer » 2006-09-04 15:26 @685

El carácter '=' designa una asignación, no una comparación.

Cambia '=' por 'eq' si estás comparando cadenas de caracteres.
Última edición por explorer el 2006-09-04 16:49 @742, editado 1 vez en total
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 explorer » 2006-09-04 16:46 @740

Otra cosa... el fetchrow_array...

Esta función devuelve una lista de valores, cada una de ellos es cada una de las filas del resultado del SELECT. Al asignar su valor de retorno a una variable escalar ($userip), realmente lo que estás haciendo es guardando el $userip el último valor de esa lista.

Digamos que es completamente legal lo que estás haciendo, si sabes lo que estás haciendo. Pero es poco oscuro para el resto de la gente...

Un poco más claro hubiera sido:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $userip = ($sth->fetchrow_array)[0];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
que es decir que nos quedamos con el primer valor de la lista de valores devueltos.
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

No me funciona

Notapor romerodg » 2006-09-05 09:22 @432

He seguido tu sugerencia, explorer. Pero no he obtenido buenos resultados.
El tema es que cuando reemplazo $ENV("REMOTE_ADDR") por un cadena del tipo "169.168.184.102", funciona perfectamente.
La verdad es que la lógica parece ser la correcta, no es así?

Saludos
romerodg
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-08-31 15:33 @690

Notapor explorer » 2006-09-05 09:39 @443

Coloca

use warnings;
use strict;

al principio del programa.

Dejando aparte que tanto $ENV{REMOTE_ADDR} como $ENV{"REMOTE_ADDR"} deberían funcionar (atención, llaves en vez de paréntesis), otra explicación es que %ENV no contiene ese valor.
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


Volver a Web

¿Quién está conectado?

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