Lun Sep 04, 2006 1:55 pm
|
 |
romerodg
Perlero Nuevo

|
Registrado: 31 Ago 2006
Mensajes: 5
|
|
| problema con contador a DB |
|
|
Hola
hice esto en Perl::
| Perl: | 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; |
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 |
|
|
|

Lun Sep 04, 2006 2:26 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
|
|
|
|
|
El carácter '=' designa una asignación, no una comparación.
Cambia '=' por 'eq' si estás comparando cadenas de caracteres.
Ultima edición por explorer el Lun Sep 04, 2006 3:49 pm, editado 1 vez |
|

Mar Sep 05, 2006 8:22 am
|
 |
romerodg
Perlero Nuevo

|
Registrado: 31 Ago 2006
Mensajes: 5
|
|
| No me funciona |
|
|
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 |
|
Mar Sep 05, 2006 8:39 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|