PX : code

SyBASE Classes by Razvan Stanescu
Download this code


<?php

// 
//    Author:  Razvan  STANESCU  <pappy@gecad.ro> 
//
//    You may use this code as long as you leave this note
//

//
//    Usage example
//
//    require("sybase.php3");
//
//    $sybdb = new CSybDb("SYBASE", "http_user", "http_pass", "http_db");
//    $sybrs = new CSybRs("select * from http_log", $sybdb);
//
//    $sybrs->display();    //    ... or do anything else
//
//    $sybrs->destroy();
//    $sybdb->destroy();
//

class CSybDb
{
    var        
$sybdb;

    function 
CSybDb($server$user$pass$dbname "")
    {
        
$this->sybdb sybase_connect($server$user$pass);
        if( 
$this->valid() && $dbname != "" ) {
            if( !
sybase_select_db($dbname$this->sybdb) ) {
                
destroy();
                }
            }
    }
    function 
destroy()
    {
        if( 
$this->valid() ) {
            
sybase_close($this->sybdb);
            }
        
$this->sybdb 0;
    }
    function 
valid()
    {
        return 
$this->sybdb != 0;
    }
};

class 
CSybRs
{
    var        
$recs;
    var        
$rows;
    var        
$cols;
    var        
$crow;
    var        
$rarr;
    var        
$fail;

    function 
CSybRs($query$sybdb)
    {
        
$this->recs 0;
        
$this->rows 0;
        
$this->cols 0;
        
$this->fail 1;
        
$this->crow 0;

        if( !
$sybdb->valid() ) return;

        
$this->recs sybase_query($query$sybdb->sybdb);
        if( !
$this->recs ) return;

        
$this->rows sybase_num_rows($this->recs);
        
$this->cols sybase_num_fields($this->recs);

        
$this->fail 0;
    }

    function 
destroy()
    {
        if( !
$this->recs ) return;
        
// sybase_freeresult($this->recs);
        
$this->recs 0;
    }

    function 
valid()
    {
        return !
$this->fail && $this->recs != 0;
    }

    function 
seek($nrow)
    {
        if( !
$this->valid() ) return 0;
        if( 
$this->bof() && $this->eof() ) return 0;

        if( 
sybase_data_seek($this->recs$nrow) ) {
            
$this->crow $nrow;
            
$this->rarr sybase_fetch_array($this->recs);
            if( 
$this->rarr ) {
                return 
1;
                }
            }
        
$this->fail 1;
        return 
0;
    }

    function 
eof()
    {
        return 
$this->crow == $this->rows;
    }

    function 
bof()
    {
        return 
$this->crow 0;
    }

    function 
first()
    {
        
$this->crow 0;
        if( !
$this->seek($this->crow) ) {
            
// mark as bof
            
$this->crow = -1;
            }
    }

    function 
prev()
    {
        if( 
$this->bof() ) return;
        
$this->crow--;
        if( 
$this->bof() ) return;

        if( !
$this->seek($this->crow) ) {
            
// mark as bof
            
$this->crow = -1;
            }
    }


    function 
next()
    {
        if( 
$this->eof() ) return;
        
$this->crow++;
        if( 
$this->eof() ) return;

        
$this->rarr sybase_fetch_array($this->recs);
        if( !
$this->rarr ) {
            
// mark as eof
            
$this->crow $this->rows;
            }
    }

    function 
last()
    {
        
$this->crow $this->rows 1;
        if( !
$this->seek($this->crow) ) {
            
// mark as eof
            
$this->crow $this->rows;
            }
    }

    function 
valueof($col)
    {
        if( !
$this->valid() ) return;
        return 
$this->rarr[$col];
    }

    function 
showheader($col$fmt "")
    {
        
$fld sybase_fetch_field($this->recs$col);
        
printf("\t<th %s>%s</th>\n"$fmtis_string($col) ? $col $fld->name);
    }

    function 
showvalue($col$fmt ""$def "&nbsp;")
    {
        
$v $this->valueof($col);
        
printf("\t<td %s>%s</td>\n"$fmt$v == "" $def $v);
    }

    function 
display()
    {
        if( !
$this->valid() ) return;

        
printf("<table cellspacing=1 cellpadding=1 border=1>\n");

        
printf("<tr>\n");
        for( 
$c 0$c $this->cols$c++ ) {
            
$this->showheader($c);
            }
        
printf("</tr>\n");

        
$this->first();
        while( !
$this->eof() ) {
            
printf("<tr>\n");
            for( 
$c 0$c $this->cols$c++ ) {
                
$this->showvalue($c);
                }

            
printf("</tr>\n");
            
$this->next();
            }
        
printf("</table>\n");
    }
};

?>

Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.