Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/06/2007, 08:08
Avatar de argalpalo
argalpalo
 
Fecha de Ingreso: noviembre-2006
Mensajes: 35
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: HTML::Template (etiquetas)

Muchas gracias, queria tenerlo bien en claro esto, ahora, alguna idea para hacer un SELECT en unabase de datos, con AJAX? Osea la cosa es asi, tengo un sub mostrar_cosas que lo que hago dentro de este es hacer un SELECT y pasar los valosres a un TMPL.

Código:
sub Mostrar_Form {


my $db="probar";
my $host="localhost";
my $port="-";
my $userid="-t";
my $passwd="-";
my $connectionInfo="DBI:mysql:database=$db;$host:$port";


my $dbh = DBI->connect($connectionInfo,$userid,$passwd) or die print "No hay conexion con la base<br>";

my $t = HTML::Template->new(filename => 'listarautos.tmpl');

my $table_data = $dbh->prepare('SELECT descripcion,idAuto FROM rubros WHERE marca="0"');
$table_data->execute;

my $arrayref = $table_data->fetchall_arrayref({});
$t->param(ROWS => $arrayref);

$dbh->disconnect;

my $html = $t->output; 
return $html;
};
Lo mando a este TMPL

Código:
<TMPL_LOOP ROWS>
<form>
<p>
<input type="hidden" id="item" size="6">
<input type="hidden" id="namedItem" size="6">
<input type="hidden" id="mirar" size="6" value=<TMPL_VAR NAME=idRubro>>
<a href="#" onclick='jsFunc(formDump(),["out"]);return false' > <TMPL_VAR NAME=Nombre> </a></p>
</form>
</TMPL_LOOP ROWS>
<div id="out">
</div>
lo que hace esto es tirame la lista del SELECT que hice anteriormente, y tranformarme los datos que saque en botones para despues hacer con AJAX esto:

Código:
my $pjx = CGI::Ajax->new( 'jsFunc' => \&buscando);
print $pjx->build_html($q, \&Mostrar_Form, {-type=> 'text/html'});
Código:
sub buscando {

my $buffer = $ENV{'QUERY_STRING'};

my @pairs = split(/&/, $buffer);

foreach my $pair (@pairs) {

my ($name, $value) = split(/=/, $pair);


$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$Variables{$name} = $value;

}

my $indice = "$Variables{'marca'}"; 
my $db="clasificados";
my $host="localhost";
my $port="3306";
my $userid="root";
my $passwd="zxcvbn";
my $connectionInfo="DBI:mysql:database=$db;$host:$port";
my $columna="*";
my $query = "SELECT Nombre FROM rubros WHERE parent='$indice'";

my $cgi = CGI->new;
my $dbh = DBI->connect($connectionInfo,$userid,$passwd) or die print "No hay conexion con la base<br>";

my $t = HTML::Template->new(filename => 'db.tmpl');

$t->param(ROWS => $dbh->selectall_arrayref($query, { Slice => {} }));

$dbh->disconnect;

my $html = $t->output; 
return $html;
my $t = HTML::Template->new(filename => 'db.tmpl'); en esta linea comunico con el db.tmpl e imrpmimo en el <div id="out">
</div>


El problema es que si tengo mas de 1 seleccionado no funcionan estas sentencias, pero si tengo solamente una seleccionado, funciona bien y me muestra todos los autos, de la marca que quiero. Como soluciono esto?? en donde esta el problema??