• Publicidad

Ayuda con Perl, CGI y MySQL

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Ayuda con Perl, CGI y MySQL

Notapor john » 2006-07-22 04:07 @213

TENGO EL SIGUIENTE CODIGO Y NECESITO CONECTARME A LA BASE DE DATOS PERO ME PRODUCE UN ERROR... NO SE QUE ESTA MAL...
Código: Seleccionar todo
#!/usr/bin/perl -d
use DBI;
use CGI;
$dbh=DBI->connect('DBI:mysql:host=208.232.83.166:database=SistemaEscolar',root,SD2);
$co=new CGI;

$cgicontrol=$co->param("control");
$cgipassword=$co->param("password");

$control.="";
$control.=$cgicontrol;
$control.="";

$password.="";
$password.=$cgipassword;
$password.="";


$sth=$dbh->prepare("select * from alumnos where control=$control and password=$password");
$sth->execute;


if(($control,$nombre,$password)=$sth->fetchrow())
{$bandera=1;
 print $co->center($co->h1('Numero de Control:'));
 print $control;
 print $co->center($co->h1('Nombre:'));
 print $nombre;
}
$sth->finish;
$dbh->disconnect;

print $co->header,
$co->start_html
(
title=>'Envio de datos al y desde el servidor utilizando CGI'
),
$co->center
(
$co->h1('Resultados de Log in')
),
$co->hr;

if(!$bandera)
{ print $co->center($co->h1('No se encontro ningun usuario con esos datos'));
}

$dbh->disconnect;
print $co->end_html;


Y AL EJECUTARLO CON LA OPCION DE DEBBUGER ME DICE LO SIGUIENTE

Código: Seleccionar todo
doceguera@paxuco:~$ perl /usr/lib/cgi-bin/doceguera.cgi

Loading DB routines from perl5db.pl version 1.28
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main:: (/usr/lib/cgi-bin/doceguera.cgi:4):
4:      $dbh=DBI->connect('DBI:mysql:host=208.232.83.166;database=SistemaEscolar',root,SD2);


QUE PUEDE SER YA INTENTE MUCHAS COSAS PERO PSS NO ME SALE.. ALGUIEN ME PODRIA AYUDAR MUCHAS GRACAIS!!!!!!!
john
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2006-07-22 03:57 @206

Publicidad

Notapor creating021 » 2006-07-22 10:13 @467

Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2006-07-22 15:47 @699

¿Por qué empieza el script con -d? ¿Eso no hace que entre directamente en modo debug?

Yo lo quitaría antes de nada...

Y después de ejecutarlo con debugger... yo no veo ningún error en pantalla...
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

Notapor explorer » 2006-07-22 15:59 @708

Pon
Código: Seleccionar todo
use warnings;

después de las líneas 'use'. Verás los errores que hay en el programa...

De momento ya veo uno: No está definido por ningún sitio el objeto SD2.
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

Notapor john » 2006-07-22 17:40 @777

ok.. ya quite el -d y puse "use warnings"... en ninguna parte me mostro warnings y al ejecutarlo con perl -d xxxxxx me aparece solamente esto....
main::(/usr/lib/cgi-bin/daniel.cgi:6):
6: $dbh=DBI->connect('DBI:mysql:host=208.232.83.166:database=SistemaEscolar','alumno','sd2');
john
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2006-07-22 03:57 @206

Notapor explorer » 2006-07-23 03:37 @192

Vamos a ver.... si no sale warnings es que el código, 'aparentemente' está bien.

Y lo que haces al ejecutarlo con -d es entrar en modo debug. En ese modo, Perl se PARA en la primera instrucción esperando tus próximas órdenes, y eso es justo lo que nos muestras. Pero no se vé ningún error.

No entres en modo debug A NO SER que quieras ejecutar el programa paso a paso, con puntos de ruptura o ver el contenido de las variables.

Mirando el programa con más calma, veo que hay un error también en lo siguiente: pintas el resultado de la consulta a pantalla (mejor dicho, a la página web) ANTES de haber impreso el header y el inicio de la página html.

Prueba con esta versión:
Código: Seleccionar todo
#!/usr/bin/perl
use DBI;
use CGI ':standard';
use warnings;

$dbh=DBI->connect('DBI:mysql:host=208.232.83.166:database=SistemaEscolar','root','sd2');
$co=new CGI;

$cgicontrol=$co->param("control");
$cgipassword=$co->param("password");

$control.="";
$control.=$cgicontrol;
$control.="";

$password.="";
$password.=$cgipassword;
$password.="";

print $co->header,
$co->start_html
(
title=>'Envio de datos al y desde el servidor utilizando CGI'
),
$co->center
(
$co->h1('Resultados de Log in')
),
$co->hr;

$sth=$dbh->prepare("select * from alumnos where control=$control and password=$password");
$sth->execute;

if(($control,$nombre,$password)=$sth->fetchrow())
{
 $bandera=1;
 print $co->center($co->h1('Numero de Control:'));
 print $control;
 print $co->center($co->h1('Nombre:'));
 print $nombre;
}
$sth->finish;
$dbh->disconnect;

if(!$bandera)
{ print $co->center($co->h1('No se encontro ningun usuario con esos datos'));
}

print $co->end_html;

Y NO HACE FALTA QUE CHILLES

Actualización: Faltaba una 'd' en 'standard'. Cosas del spanglish :)
Actualización: Cambiado SD2 a 'sd2'
Última edición por explorer el 2006-07-23 15:47 @699, editado 2 veces en total
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

Notapor john » 2006-07-23 13:10 @590

ya cambie lo que me dijsite.. si entiendo ejecutarlo condebbuger de hecho asi lo hago para ver paso a paso y sigue marcando un error al tratar de conectarse al servidor estoy empezando a sospechar que no esta bien instalado el mysql en el servidor debian o que no estoy empleando la forma correcta para conectarme o necesito hacer algomas para una conexion exitosa...cambie el print como me dijiste pero aun nada gracias!!!
john
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2006-07-22 03:57 @206

Notapor creating021 » 2006-07-23 13:50 @618

Yo creo que el servidor esta muerto, chequea que el ip sea el corecto.
Crea otro programa que solo lea la BD, asi te figas si se esta conectando, si no, porque lo esta haciendo.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor john » 2006-07-23 14:07 @630

no seeee, porque yo desde aki me conecto desde linea de comandos al servidor y acceso al mysql y modifico la base de datos y todo muy bien pero ps ya en el programa perl no quiere conectarse
john
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2006-07-22 03:57 @206

Notapor explorer » 2006-07-23 14:24 @641

1.- Si lo estás ejecutando como un CGI, añade
Código: Seleccionar todo
use CGI::Carp qw(fatalsToBrowser);

a la lista de módulos.
2.- Cambia la línea
Código: Seleccionar todo
$dbh=DBI->connect('DBI:mysql:host=208.232.83.166:database=SistemaEscolar',root,'sd2');
por
Código: Seleccionar todo
$dbh=DBI->connect('DBI:mysql:database=SistemaEscolar;host=208.232.83.166','root','sd2')
    or die $DBI::errstr;

y pruebas, a ver qué error sale...

¿Seguro que funcionan los CGI?
Usa mi CGI mínimo para comprobarlo.

Actualización: Cambiado el orden del DSN.
Actualización: Cambiado root por 'root'.
Última edición por explorer el 2006-07-23 15:15 @677, 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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron