Hi Jesse,

I checked my code and couldn't find anything wrong in it. I don't know why
the browser thinks it's and xml where as I am printing HTML all across the
script. I am attaching the script herewith as well. If you or anyone on this
list finds the bug, pls. let me know.

Thanks
Bal.


#################  SCRIPT  ##########################

package perfmonpvt;
use base 'CGI::Application';
use strict;
use Sybase::CTlib;

   sub setup {
        my $self = shift;
        $self->start_mode('mode1');
        $self->run_modes(
                'mode1' => 'showsrvrs',
                'mode2' => 'showdetails'
        );
   }

   sub teardown {
        my $self = shift;
   }

   sub showsrvrs {
        my $self = shift;
        # Get CGI query object
        my $q = $self->query();
        my $dbh = Sybase::CTlib->ct_connect('perfmon', 'perfmon_ps',
'SYB_NJ6'); ## Connect to the server.
        $dbh->ct_sql('use perfmondb');

        my $output = '';

   if($dbh eq undef)
   {
     $output .= $q->start_html();
     $output .= $q->blockquote("<h1>Connection to server failed. </h1>");
     $output .= $q->blockquote("This could be due to an invalid Login
Name,Password,Server Name.");
     $output .= $q->blockquote("If you feel all of these are correct, then
pls check of the server is running and your login is not locked.");
     $output .= $q->blockquote("Still if you can't connect, Pls check you
interfaces of sql.ini files.");
     $output .= $q->end_html();
     return $output;
     exit 0;
   }
        my @srvrs;
        my $app= $dbh->ct_sql('select Name from Servers');

foreach my $row (@$app) {
     foreach my $col (@$row) {
         push(@srvrs,$col);
     }
}


        $output .= $q->start_html(-title => 'Sysmon Details');
        $output .= $q->blockquote($q->strong("<h1>Check Sysmon
Details</h1>"));
        $output .= $q->start_form();
        {
          local($") = '';
        $output .= $q->blockquote("Select Server      : ",
$q->popup_menu(-name=> 'srv', -values =>\@srvrs));
        }
        {
          local($") = '';
        $output .= $q->blockquote("Select Item(s)     : ",
$q->checkbox_group(-name=> 'opt', -values =>['CPU
Busy','TPS','Deadlocks','IUD','Switches','Locks','Spinlock'],
        
-default => 'CPU Busy'
        
));
        }
        {
          local($") = '';
        $output .= $q->blockquote("Start Date         : ",
$q->textfield(-name=> 'sdt'),"   Format: mmm dd yyyy or mm/dd/yyyy");
        }
        {
          local($") = '';
        $output .= $q->blockquote("End Date           : ",
$q->textfield(-name=> 'edt'),"   Format: mmm dd yyyy or mm/dd/yyyy");
        }
        {
          local($") = '';
        $output .= $q->blockquote("Show Data Values   : ",
$q->radio_group(-name=> 'gv', -values =>['Yes','No'],
        
-default => 'Yes'
        
));
        }
        {
          local($") = '';
        $output .= $q->hidden(-name => 'rm', -value => 'mode2', -override=>1
);
        }
        {
          local($") = '';
        $output .= $q->submit("View Report");
        }
        $output .= $q->end_form();
        $output .= $q->end_html();
        return $output;
   }


sub showdetails {
        my $self = shift;
        #Get CGI query object
        my $q = $self->query();
        my $srv = $q->param("srv");
        my @opt = $q->param("opt");
        my $sdt = $q->param("sdt");
        my $edt = $q->param("edt");
        my $gv = $q->param("gv");
        my $block = "";

        my $output = '';

foreach my $o (@opt)
{
        $block = "$block"." '$o',";
}
        $block = substr($block, 0, length($block) - 1);

        my $cmde = "exec perfmondb..proc_sysmon_crosstab
'$srv','$sdt','$edt', $block " ;

        my $dbh = Sybase::CTlib->ct_connect('perfmon', 'perfmon_ps',
'SYB_NJ6'); ## Connect to the server.

        $output .= $q->start_html(-title => 'Sysmon Details');

        if($dbh eq undef)
        {
        $output .= $q->blockquote("<h1>Connection to server failed. </h1>");
        $output .= $q->blockquote("This could be due to an invalid Login
Name,Password,Server Name.");
        $output .= $q->blockquote("If you feel all of these are correct,
then pls check of the server is running and your login is not locked.");
        $output .= $q->blockquote("Still if you can't connect, Pls check you
interfaces of sql.ini files.");
        $output .= $q->end_html();
        return $output;
        exit 0;
        }
        $dbh->ct_sql("use perfmondb");

        my (@dr,$ret); 

        $dbh->ct_execute($cmde);

        $output .= $q->blockquote("<h1>Check Sysmon Details</h1>");
        $output .= $q->blockquote("Selected Server   : $srv");
        $output .= $q->blockquote("Selected Report   : $block");
        $output .= $q->start_form();
        $output .= $q->hidden(-name => 'rm', -value => 'mode1',
-override=>1);
        $output .= $q->submit("Next Report");
        $output .= $q->end_form();

        
        my (@dt,@cpu,@tps);

        $output .= "<TABLE cellSpacing=0 cellPadding=0 width='100%'
border=1> <TBODY> <TR>";

        while($dbh->ct_results($ret) == CS_SUCCEED) {
                next unless $dbh->ct_fetchable($ret);
                my @cols=$dbh->ct_col_names();

                foreach my $kv (@cols) {
                   $output .= "<TD> <P
align=center><STRONG>$kv</STRONG></P></TD>" unless($kv eq "COL\(1\)");
                }

                $output .= "</TR>";
                while(@dr = $dbh->ct_fetch) {
                push(@dt,@dr[1]);
                push(@cpu,@dr[3]);
                push(@tps,@dr[4]);
                 #   push(@data,$dr) unless($dr eq "0" && $dr == 0);
                       foreach (@dr) {
                         $output .= "<TD> <P align=center> $_ </P></TD>";
                       } 
                     $output .= "</TR>";
                }
                $output .= "</TR>";
        }


$output .= "</TR> </TBODY></TABLE>";

####################### START GRAPH HERE
#################################################

  use GD::Graph;
  use CGI qw(:standard);
  use GD::Graph::lines;

  my @gdata = ( 
    [ @dt ],
    [ @cpu ],
    [ @tps ]
  );


  my $graph = GD::Graph::lines->new(900, 500);

  my @leg = split("\,",$block);
  $graph->set_legend(@leg); 

  $graph->set_values_font('c:\winnt\fonts\arial.ttf',12);
  $graph->set_x_label_font('c:\winnt\fonts\arial.ttf',12);
  $graph->set_y_label_font('c:\winnt\fonts\arial.ttf',12);
  $graph->set_x_axis_font('c:\winnt\fonts\arial.ttf',12);
  $graph->set_y_axis_font('c:\winnt\fonts\arial.ttf',12);
  $graph->set_legend_font('c:\winnt\fonts\arial.ttf',12);

  $graph->set(show_values => @cpu) unless($gv eq "No");
  $graph->set(show_values => @tps) unless($gv eq "No");

  $graph->set( 
      x_label           => 'Sample Time',
      y_label           => 'Values',
      title             => '' ,
      x_label_position  => '.5',
      x_labels_vertical => '1',
      values_vertical   => '1'
  );


  my $gd = $graph->plot(\@gdata);

  open(IMG, '>c:/progra~1/apache~1/apache/htdocs/pvtgraph.png') or die $!;
  binmode IMG;
  print IMG $gd->png;
  close IMG;
  #...
  my $format = $graph->export_format;
  $output .= $q->header_props(-type =>"image/$format");
  $output .= $q->blockquote("");
  $output .= $q->blockquote("<Center><h2>Graph</h2></Center>");
  my ($usr, $stim, $cusr, $cstim) = times;
  $output .= "<Center><IMG
SRC=\"http://dbainet/pvtgraph.png?$stim?$usr?cusr?cstim\";></Center>";


###################### GRAPH END HERE
################################################

$output .= $q->end_html();
return $output;
}

1;

######################## END OF SCRIPT ####################################


-----Original Message-----
From: Jesse Erlbaum [mailto:[EMAIL PROTECTED]]
Sent: Monday, May 13, 2002 10:50 AM
To: [EMAIL PROTECTED]
Subject: RE: [cgiapp] CGI Error [Solved!!]


Hi Bal --

> Commenting out the following lines in the CGI.PM resolved the 
> error. I don't
> know if this is the correct way or not, if anyone has a 
> different way to
> solve this, pls. let me know.


I would definitely NOT comment arbitrary lines from another module without
understanding WHY doing so changes the situation.  I am 100% positive that
you have a bug in your code, and that there is no bug in CGI.pm which is
causing this to happen.

Before you go and comment out lines from CGI.pm, take a close look at the
situation and figure out why commenting those lines seem to fix your
problem.  I am certain that you will discover a bug in your own code.

-Jesse-

---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/cgiapp@lists.vm.com/
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/cgiapp@lists.vm.com/
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to