• Publicidad

Búsqueda con Ajax y CGI

Todo lo relacionado con lenguajes de programación distintos de Perl: PHP, Java, C++, Ruby, Python, etc.

Búsqueda con Ajax y CGI

Notapor piero66 » 2009-06-30 14:04 @628

Buenas...

Resulta que vi un ejemplo de búsqueda (autocompletar) pero está en PHP y MySQL... quizá pasar esa funcionalidad a Perl con SQL Server pero no me genera el funcionamiento.

En PHP - crean un XML, el cual realizo en Perl (cgi) y todo lo demás lo dejo igual... porque es JavaScript...

A ver si me pueden echar una mano de cómo es... lo que veo en PHP trato de hacerlo en Perl... lo único que me falta de uno contra el otro es declarar las cabeceras XML... yo la declaro así...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print header(Content-type => 'text/xml');
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Mi código es este:

express1.cgi

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$sth = $dbh->prepare("SELECT top 10 A.express AS express,A.nomfno AS nombre, A.tipfno AS tipo, B.descripcion AS descrip FROM  USR_DTS.COLONIAS_AS400 A LEFT  JOIN USR_DTS.TIPFNO B ON(A.tipfno=B.tipo) WHERE A.tipfno != 508 and A.tipfno !=509 and A.nomfno LIKE '$nombrex%' order by A.nomfno asc" )
$sth->execute or MiError($DBI::errstr);

  print "<?xml version='1.0' encoding='iso-8859-15' ?>";
  print "<content>";
   $label.="<labels>";
    while ($sth->fetch){
        $sth->bind_col(2,\$nombre);
        $sth->bind_col(4,\$Coles);

        $label.="\n<label>$nombre</label>\n";

    }
       $label.="</labels>";
     print "$label</content>";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


La librería Ajax (js)... que es la que autocompleta, vi estas declaraciones iniciales:

Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
var Conexion=false;  // Variable que manipula la conexion.
var Servidor="\/cgi-bin\/eflow\/admin\/express1.cgi";  // Determina la pagina donde buscar
var Palabra=""; //Determina la ultima palabra buscada.
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La variable servidor es la única que modifiqué pero al parecer no lo carga pues manda el siguiente error...

Código: Seleccionar todo
500-Internal Server Error


No sé si sea por la declaración de la cabecera de XML.

¡¡ Espero me haya explicado !!
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Publicidad

Notapor explorer » 2009-06-30 16:21 @723

El fallo 500 puede ser debido a un montón de cosas.

Usa el módulo CGI::Carp, como puedes ver en mi CGI mínimo, y luego llama al CGI directamente desde el web, para ver si da algún error en pantalla.

No te olvides tampoco de mirar los ficheros log de actividad del servidor web.
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 piero66 » 2009-07-01 08:53 @412

ya cale el archivo minimo.pl , lo ejecute desde el shell (sin envio de parametros) y funciono bien , lo ejecute desde el navegador IE y me envio el siguiente error

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

e igual calo con envio de parametros y pues nada.......

en los archivos log extrañamente no me habla de ese error, no lo registra!

que sera... !! por que ya en este servidor he ejecutado archivos .cgi y todos han funcionado bien... solo este ejemplo en el cual quiero implementar esta funcionalidad de ajax...
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Notapor monoswim » 2009-07-02 07:53 @370

la primera línea de respuesta en tu scrpt debería de enviar un

content-type:text/xml\n\n

para que le diga al navegador web que el contenido es texto...si no colocas esa línea el navegador muestra ese error...

También puede ser por no haberle dado permisos de ejecución chmod 755

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Re: Búsqueda con Ajax y CGI

Notapor piero66 » 2009-07-02 17:34 @774

perfecto monoswim mil gracias, ahora la busqueda la realiza perfecto en navegador poniendo la liga y un parametro de busqueda ahora un cuestion que sucede , no se si te ha pasado es que hago una consulta por 10 concidencias de ese parametro pero solo me arroja 9 , el primer renglon no me lo muestra por que ya cale la consulta en un visualizador sql server y si me da bien los registro, pienso que tengo un detalle ahi con las funciones con el DBI que utilizo
mi codigo es el siguiente haber si por ahi es donde este el detalle

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use DBI;

use CGI       qw(:standard      );
use CGI::Carp qw(fatalsToBrowser);

$query= new CGI;

$nombrex= $query->param('input');

$dbh = DBI->connect('dbi:Sybase:server=192.1.1.8:1433','usr_dts','usr_dts') or MiError($DBI::errstr);
$sth = $dbh->do("use colonias") or MiError($DBI::errstr);
$sth = $dbh->prepare("SELECT top 11 A.express AS express,A.nomfno AS nombre, A.tipfno AS tipo, B.descripcion AS descrip FROM  USR_DTS.COLONIAS_AS400 A LEFT JOIN USR_DTS.TIPFNO B ON(A.tipfno=B.tipo) WHERE A.tipfno != 508 and A.tipfno !=509 and A.nomfno LIKE '$nombrex%' order by A.nomfno asc");

$sth->execute or MiError($DBI::errstr);

    print "content-type: text/xml\n\n";
    print "<?xml version='1.0' encoding='iso-8859-15' ?>";
    print "<content>";
    $label.="<labels>";
$i =0;
     while ($sth->fetch){
       $i++;
       $sth->bind_col(2,\$nombre);
       $label.="\n<label>$i.- $nombre</label>\n";
    }
       $label.="</labels>";

     print "$label</content>";
}
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


y me arroja el siguiente resultado y no me aparece dato alguno en el registro 1:

<?xml version="1.0" encoding="iso-8859-15" ?>
- <content>
- <labels>
<label>1.-</label>
<label>2.-LOMAS DE ARBIDE</label>
<label>3.-LOMAS DE COMANJILLA</label>
<label>4.-LOMAS DE CHAPULTEPEC, MEXICO</label>
<label>5.-LOMAS DE ECHEVESTE</label>
<label>6.-LOMAS DE GRAN JARDIN</label>
<label>7.-LOMAS DE GUADALUPE</label>
<label>8.-LOMAS DE IBARRILLA</label>
<label>9.-LOMAS DE JEREZ</label>
<label>10.-LOMAS DE LA PISCINA</label>
</labels>
</content>

espero me puedan ayudar, explorer , monoswim. gracias !!
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Re: Búsqueda con Ajax y CGI

Notapor netsoul » 2009-07-02 17:58 @790

Yo particularmente, si tuviera ese problema, recurriría al método ensayo/error. Probando variable por variable, de esta forma depurándolo, hasta encontrar el problema. ;)
With Perl
Imagination is more important than knowledge. Albert Einstein.
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091

Re: Búsqueda con Ajax y CGI

Notapor piero66 » 2009-07-02 18:19 @805

no entendi muy bien netsoul,, como esta eso de prueba y error en este caso !!?? buscar otras funciones? otra forma de aplicar el while , de acceder a los datos ??

gracias.....
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Re: Búsqueda con Ajax y CGI

Notapor netsoul » 2009-07-03 16:35 @732

Fijate en la línea 23, quita el $i++; y ponlo por debajo de la línea 25.
With Perl
Imagination is more important than knowledge. Albert Einstein.
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091

Re: Búsqueda con Ajax y CGI

Notapor piero66 » 2009-07-03 16:43 @738

si gracias netsoul se soluciono de la siguiente manera....

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "content-type: text/xml\n\n";
    print "<?xml version=&#39;1.0&#39; encoding=&#39;iso-8859-15&#39; ?>";
    print "<content>";
    $label.="<labels>";
           $sth->bind_col&#40;2,\$id&#41;;       # agregando esta lineas del primer registro
           $sth->bind_col&#40;3,\$nombre&#41;; # agregando esta lineas del primer registro
    while &#40;$sth->fetch&#41;{
        $label.="<id>$id</id><label>$nombre</label>\n";  # imprimo el primer registro y continua el while
        $sth->bind_col&#40;2,\$id&#41;;
        $sth->bind_col&#40;3,\$nombre&#41;;
    }
    $label.="</labels>";
    print "$label</content>";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
piero66
Perlero nuevo
Perlero nuevo
 
Mensajes: 95
Registrado: 2008-05-22 12:00 @541

Re: Búsqueda con Ajax y CGI

Notapor teco000 » 2009-07-03 17:11 @758

el bind tiene que ir afuera del while, ejemplo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$sth->bind_columns&#40;\$name, \$email&#41;;
        while &#40;$sth->fetch&#40;&#41;&#41; {
                print "$name <$email>\n";
        }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala


Volver a Programación en general

¿Quién está conectado?

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