• Publicidad

Desplegar los datos obtenidos de un fetchall_hashref()

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Desplegar los datos obtenidos de un fetchall_hashref()

Notapor danimera » 2009-09-30 14:59 @666

Necesito saber cómo leo por medio de un foreach() los datos que obtengo de la consulta...

Tengo problemas al hacerlo por medio de
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $sth = $self->dbh->prepare("SELECT id_localizacion, longitud, latitud, descripcion, tipo, propiedad, imagen FROM localizaciones WHERE tipo = ? AND propiedad = ?")
    or die("Couldn't prepare statement: " . $self->dbh->errstr);

    $sth->execute($datos->param('tipo'),$datos->param('propiedad')) or die("Couldn't execute statement: " . $sth->errstr);
    my  $puntos  = $sth->fetchall_hashref('id_localizacion');
    #my  $puntos  = $sth->fetchall_arrayref();
    my  $puntos2 = $sth->fetchall_arrayref;


    $sth->finish;
    $self->dbh->disconnect;

    #return $t->{longitud};
    #return "<pre>".Dumper($puntos);
    #return Dumper($t->{longitud});

    #return Dumper($puntos->{38}->{longitud});

    if ($puntos) {

        #foreach my $punto (keys %puntos){
        foreach my $punto ( %$puntos ) {

            $map->add_marker(
                noformat => "1",
                point => [$punto->{longitud}, $punto->{latitud} ],
                html  => "<img width=120 height=100 src='../clientes/uploads/$punto->{imagen}'><br><div style='width:120px;'>$punto->{descripcion} </div>",
                icon => "$punto->{propiedad}"
            );
        }
    }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


En el último foreach() es que tengo el problema. Decir $punto->{'imagen'} no sirve de nada.
Última edición por explorer el 2009-09-30 15:32 @689, editado 1 vez en total
Razón: Formateo y edición del código.
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

Publicidad

Re: Desplegar los datos obtenidos de un fetchall_hashref()

Notapor explorer » 2009-09-30 15:35 @691

Sería hacer un recorrido por todas las claves del hash devuelto...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for my $id_localizacion ( keys %$puntos ) {
    print $puntos->{$id_localizacion}->{imagen}, "\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Es decir... fetchall_hashref() devuelve todo el resultado de la consulta, indexado por el campo indicado (en este caso, id_localizacion).

Luego, entonces, debemos recorrer ese hash como recorremos cualquier otro hash. Y dentro de cada valor, es otra referencia a otro hash, que tiene el resto de los campos de cada registro.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Desplegar los datos obtenidos de un fetchall_hashref()

Notapor danimera » 2009-09-30 15:43 @697

Claro, ahí estaba la clave: no había tenido en cuenta que tenía que llamar el id al hash real... Gracias...
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 Avanzado

¿Quién está conectado?

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