"; return $j; } } $error = "dbtable_get_field_index: Invalid fieldname \"$fieldname\"."; return -1; } // Create a table for editing a database table entry // $tablear - array that defines table (see tables.php) // $valuesar - array of current values // $action - URL to post form to (or "" for display-only) // $actionlabel - Value to put on submit form ("Save", etc.) // $hidden - array of hidden form variables (name1,value1,name2,value2,...) function dbtable_to_html ( $tablear, $valuesar, $action="", $formname="", $actionlabel="", $hidden="" ) { global $CELLBG; $ret = "
" .
"
|
" .
"
|
\n";
$res = dbi_query ( $sql );
if ( $res ) {
if ( $row = dbi_fetch_row ( $res ) ) {
$ret = array ();
for ( $i = 0; $i < count ( $tablear ); $i++ ) {
$ret[$i] = $row[$i];
}
} else {
$ret = false; // not found
}
dbi_free_result ( $res );
} else {
echo translate("Database error") . ": " . dbi_error (); exit;
}
return $ret;
}
// Delete a single row of a db table
// $tablear - db table (defined in tables.php)
// $tablename - db table name
// $keys - array of db key fields (field tagged with "iskey" => 1)
function dbtable_delete ( $tablear, $tablename, $keys ) {
$ret = false;
if ( ! is_array ( $tablear ) ) {
echo "Error: dbtable_delete parameter 1 is not an array!\n
\n";
exit;
}
if ( ! is_array ( $keys ) ) {
echo "Error: dbtable_delete parameter 3 is not an array!\n
\n";
exit;
}
$sql = "DELETE FROM $tablename WHERE ";
$first = 1;
for ( $i = 0; $i < count ( $tablear ); $i++ ) {
if ( ! empty ( $tablear[$i]["iskey"] ) ) {
if ( empty ( $keys[$tablear[$i]["name"]] ) ) {
//echo "Error: key value for " . $tablear[$i]["name"] . " not set.\n";
//exit;
continue;
} else {
if ( $first )
$first = 0;
else
$sql .= " AND ";
$sql .= $tablear[$i]["name"] . " = " ;
if ( $tablear[$i]["type"] == "int" ||
$tablear[$i]["type"] == "float" || $tablear[$i]["type"] == "date" )
$sql .= $keys[$tablear[$i]["name"]];
else
$sql .= "'" . $keys[$tablear[$i]["name"]] . "'";
}
}
}
//echo "SQL: $sql
\n";
if ( ! dbi_query ( $sql ) ) {
echo translate("Database error") . ": " . dbi_error (); exit;
}
return $ret;
}
// Add a row into a table (SQL insert)
// $tablear - db table (defined in tables.php)
// $tablename - db table name
// $valuesar - array of values
function dbtable_add ( $tablear, $tablename, $valuesar ) {
global $error;
$ret = false;
$sql = "INSERT INTO " . $tablename . " (";
if ( ! is_array ( $tablear ) ) {
echo "Error: dbtable_add parameter 1 is not an array!\n
\n";
exit;
}
if ( ! is_array ( $valuesar ) ) {
echo "Error: dbtable_add parameter 3 is not an array!\n
\n";
exit;
}
$first = 1;
for ( $i = 0; $i < count ( $tablear ); $i++ ) {
if ( $first )
$first = 0;
else
$sql .= ", ";
if ( empty ( $tablear[$i]["name"] ) ) {
echo "Error: dbtable_load $tablename field $i does not define name.\n";
exit;
}
$sql .= $tablear[$i]["name"];
}
$sql .= " ) VALUES (";
$first = 1;
for ( $i = 0; $i < count ( $tablear ); $i++ ) {
if ( $first )
$first = 0;
else
$sql .= ", ";
if ( empty ( $valuesar[$i] ) )
$sql .= "NULL";
else if ( $tablear[$i]["type"] == "date" ||
$tablear[$i]["type"] == "int" )
$sql .= $valuesar[$i];
else
$sql .= "'" . $valuesar[$i] . "'";
}
$sql .= " )";
//echo "SQL: $sql
\n";
if ( ! dbi_query ( $sql ) ) {
// Shouldn't happen... complain if it does.
$error = translate("Database error") . ": " . dbi_error ();
return false;
}
return true;
}
// Update a row in a table (SQL update)
// $tablear - db table (defined in tables.php)
// $tablename - db table name
// $valuesar - array of values
function dbtable_update ( $tablear, $tablename, $valuesar ) {
global $error;
$sql = "UPDATE " . $tablename . " SET";
if ( ! is_array ( $tablear ) ) {
echo "Error: dbtable_update parameter 1 is not an array!\n
\n";
exit;
}
if ( ! is_array ( $valuesar ) ) {
echo "Error: dbtable_update parameter 3 is not an array!\n
\n";
exit;
}
$first = 1;
for ( $i = 0; $i < count ( $tablear ); $i++ ) {
if ( ! empty ( $tablear[$i]["iskey"] ) )
continue;
if ( $first )
$first = 0;
else
$sql .= ", ";
if ( empty ( $tablear[$i]["name"] ) ) {
echo "Error: dbtable_update $tablename field $i does not define name.\n";
exit;
}
$sql .= " " . $tablear[$i]["name"] . " = ";
if ( empty ( $valuesar[$i] ) ) {
$sql .= "NULL";
} else if ( $tablear[$i]["type"] == "int" ||
$tablear[$i]["type"] == "date" ) {
$sql .= $valuesar[$i];
} else
$sql .= "'" . $valuesar[$i] . "'";
}
$sql .= " WHERE";
$first = 1;
for ( $i = 0; $i < count ( $tablear ); $i++ ) {
if ( empty ( $tablear[$i]["iskey"] ) )
continue;
if ( $first )
$first = 0;
else
$sql .= " AND";
if ( empty ( $valuesar[$i] ) ) {
echo "Error: you must set field $i (" . $tablear[$i]["name"] .
") by hand. Cannot be empty.";
exit;
}
$sql .= " " . $tablear[$i]["name"] . " = '" . $valuesar[$i] . "'";
}
//echo "SQL: $sql
\n"; if ( ! dbi_query ( $sql ) ) { // Shouldn't happen... complain if it does. $error = translate("Database error") . ": " . dbi_error (); return false; } return true; } // Generate a new ID function dbtable_genid ( $tablename, $field ) { $ret = 1; $sql = "SELECT MAX(" . $field . ") FROM " . $tablename; $res = dbi_query ( $sql ); if ( $res ) { if ( $row = dbi_fetch_row ( $res ) ) { $ret = $row[0] + 1; } dbi_free_result ( $res ); } return $ret; } // Convert an array of db values (with index values 0,1,2,... into // an associative array (with index values of table column names). // $tablear - db table (defined in tables.php) // $valuesar - array of values function dbtable_build_name_index ( $tablear, $valuesar ) { $ret = array (); for ( $i = 0; $i < count ( $tablear ); $i++ ) { $ret[$tablear[$i]["name"]] = $valuesar[$i]; } return $ret; } ?>