// 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%s \n", $fmt, is_string($col) ? $col : $fld->name);
}
function showvalue($col, $fmt = "", $def = "?")
{
$v = $this->valueof($col);
printf( "\t%s \n", $fmt, $v == "" ? $def : $v);
}
function display()
{
if( !$this->valid() ) return;
printf( "\n");
printf( "\n");
for( $c = 0; $c < $this->cols; $c++ ) {
$this->showheader($c);
}
printf( " \n");
$this->first();
while( !$this->eof() ) {
printf( "\n");
for( $c = 0; $c < $this->cols; $c++ ) {
$this->showvalue($c);
}
printf( " \n");
$this->next();
}
printf( "
\n");
}
};
?>