rendered paste bodyFirstly my script
<?php
function DBLookupComboBox($name, $table, $keyfield, $displayfield)
{
$query = "SELECT $keyfield, $displayfield FROM $table ORDER BY $displayfield";
$result = pg_query($query);
if (!$result) {return 0;}
$ret_string = "<select name=$name>";
while($line = pg_fetch_array($result,null,PGSQL_ASSOC)) {
$ret_string .= "<option label='" . $line["$displayfield"] .
"' name='" . $line["$keyfield"] . "' />";
}
$ret_string .= "</select>";
return $ret_string;
}
function DisplayTable($configfile, $tablename)
{
$dspt_modify = "Изменить";
$dspt_delete = "Удалить";
if (file_exists($configfile)) {
$xml = simplexml_load_file($configfile);
} else {
return 0;
}
$table_settings = $xml->xpath("/tables/table[@name='$tablename']");
//Adding text fields
$sqltablename = $table_settings[0]["sqlname"];
$keyfield = $sqltablename . "." . $table_settings[0]["key"];
$fields[] = $keyfield;
$tables[] = $sqltablename;
foreach ($table_settings[0]->field as $field) {
if ($field["type"] == "text") {
$fieldname = $sqltablename . "." . $field["name"];
$labels[$fieldname] = $field->label;
$fields[] = $fieldname;
}
}
//Adding lookup fields
$lookupfields = $table_settings[0]->xpath("/field[@type='lookup']");
foreach($lookupfields as $lookupfield) {
$lookuptable = $lookupfield->lookup[0]["table"];
$displayfield = $lookupfield->lookup[0]["display"];
$lookupkeyfield = $lookupfield->lookup[0]["key"];
$fields[] = $lookuptable . "." . $displayfield;
$joins[$lookup[0]["table"]] =
$sqltablename . "." . $lookupfield["name"] . " = " .
$lookuptable . "." . $lookupkeyfield;
$labels[$displayfield] = $lookupfield->label;
}
//now building the query string
foreach($fields as $key => $field) {
$fields[$key] = "$field AS $field";
}
$query = "SELECT " . implode(',',$fields);
$query .= " FROM $sqltablename ";
//now adding joins if they are present
foreach($joins as $jointable => $joinexpression) {
$query .= " INNER JOIN $jointable ON $joinexpression";
}
echo $query;
$result = pg_query($query);
if (!$result) {return 0;}
//Generating table
$res_string = "<table>";
//Head
$res_string .= "<thead><tr>";
foreach($labels as $label) {
$res_string .= "<td>$label</td>";
}
$res_string .= "<td>$dspt_modify</td><td>$dspt_delete</td>";
$res_string .= "</tr></thead>";
while($line = pg_fetch_array($result,null,PGSQL_ASSOC)) {
$res_string .= "<tr>";
foreach($labels as $key => $value) {
$res_string .= "<td>$line[$key]</td>";
var_dump($line);
}
$res_string .= "<td><a href='?action=modify&id=" .
$line[$keyfield] . "'></a></td>";
$res_string .= "<td><a href='?action=delete&id=" .
$line[$keyfield] . "'></a></td>";
$res_string .= "</tr>";
}
$res_string = "</table>";
}
?>
Example xml-document<?xml version="1.0" encoding="windows-1251"?>
<tables>
<table name="locomotive_series" sqlname="locomotive_series" key="id">
<field name="name" type="text">
<label>123</label>
</field>
</table>
<table name="locomotives" sqlname="locomotives" key="id">
<field name="series_id" type="lookup">
<lookup table="locomotive_series" key="id" display="name"/>
<label>123</label>
</field>
</table>
</tables>
SQL string produced
SELECT locomotive_series.id AS locomotive_series.id,locomotive_series.name AS locomotive_series.name FROM locomotive_series
seems it's ok... but still does not work