Firstly my script "; while($line = pg_fetch_array($result,null,PGSQL_ASSOC)) { $ret_string .= ""; } $ret_string .= ""; 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 = "