colname = $name;
$this->isArray = $isArray;
$this->converter = $converter;
}
function printTD( $row, $nrows, $colData ) {
if ( !$this->isArray && 0 < $row ) {
/* do nothing */
} else if ( 0 == $row && !$this->isArray ) {
$td = call_user_func( $this->converter, $colData );
echo "$td | ";
} else {
$td = call_user_func( $this->converter,
$this->nth_elem( $colData, $row ) );
echo "$td | ";
}
}
function nth_elem( $arr, $nn ) {
$arr = explode(',', trim($arr, '{}'));
return $arr[$nn];
}
} /* class Column */
function identity( $str ) {
return $str;
}
function int_to_lang( $str ) {
$lang = "unknown";
switch ( $str ) {
case 1: $lang = "English"; break;
case 2: $lang = "French"; break;
case 3: $lang = "German"; break;
case 4: $lang = "Turkish"; break;
case 5: $lang = "Arabic"; break;
case 6: $lang = "Spanish"; break;
case 7: $lang = "Swedish"; break;
case 8: $lang = "Polish"; break;
case 9: $lang = "Danish"; break;
case 10: $lang = "Italian"; break;
case 11: $lang = "Dutch"; break;
case 12: $lang = "Catalan"; break;
case 13: $lang = "Portuguese"; break;
case 15: $lang = "Russian"; break;
case 17: $lang = "Czech"; break;
case 18: $lang = "Greek"; break;
case 19: $lang = "Slovak"; break;
}
return $lang;
}
function ip_to_host($ip) {
if ( 0 < strlen( $ip ) ) {
$ip = gethostbyaddr($ip);
}
return $ip;
}
function strip_quotes($str) {
return trim( $str, '"');
}
$cols = array( new Column("dead", "identity", false ),
new Column("room", "identity", false ),
new Column("lang", "int_to_lang", false ),
new Column("ntotal", "identity", false ),
new Column("nperdevice", "identity", true ),
new Column("ack", "identity", true ),
new Column("nsent", "identity", false ),
new Column("addrs", "ip_to_host", true ),
new Column("mtimes", "strip_quotes", true ),
);
$colnames = array();
foreach ( $cols as $index => $col ) {
$colnames[] = $col->colname;
}
$sql = "SELECT " . join( ",", $colnames ) .
", array_upper(nperdevice,1)" .
" FROM games" .
" WHERE NOT -NTOTAL = sum_array(nperdevice) LIMIT 200;";
echo "$sql
";
echo "\n\n";
echo "";
/* index has no header */
echo " | ";
foreach ( $cols as $index => $col ) {
echo "$col->colname | ";
}
echo "
\n";
$db = pg_connect("host=localhost dbname=xwgames user=postgres password=$pwd");
if (!$db) {
die( "Error in connection: " . pg_last_error() );
}
// execute query
$result = pg_query( $db, $sql );
if ( !$result ) {
die( "Error in SQL query: " . pg_last_error() );
}
// iterate over result set
// print each row
$count = 0;
$countIndex = count($cols);
// error_log( "countIndex = " . $countIndex );
while ( $row = pg_fetch_array($result) ) {
$nrows = $row[$countIndex];
for ( $devIndex = 0; $devIndex < $nrows; ++$devIndex ) {
echo "";
if ( 0 == $devIndex ) {
echo "$count | ";
}
foreach ( $cols as $index => $col ) {
$col->printTD( $devIndex, $nrows, $row[$index] );
}
echo "
\n";
}
++$count;
}
/* cleanup */
pg_free_result( $result );
pg_close( $db );
echo "
\n";
?>