采用json方法处理postgresql数组
This commit is contained in:
parent
34616beca3
commit
b930363955
|
@ -25,9 +25,9 @@ class Doi extends Zend_Controller_Plugin_Abstract
|
||||||
}
|
}
|
||||||
if(empty($uid))
|
if(empty($uid))
|
||||||
{
|
{
|
||||||
$sql = "SELECT * FROM ".$this->tbl_doi." d where ".$wheresql."ORDER BY d.ts_published desc,d.ts_submitted desc,d.ts_created DESC";
|
$sql = "SELECT *,array_to_json(organization_en) as orgen_json FROM ".$this->tbl_doi." d where ".$wheresql."ORDER BY d.ts_published desc,d.ts_submitted desc,d.ts_created DESC";
|
||||||
}else{
|
}else{
|
||||||
$sql = "SELECT d.* FROM ".$this->tbl_doi." d
|
$sql = "SELECT d.*,array_to_json(d.organization_en) as orgen_json FROM ".$this->tbl_doi." d
|
||||||
LEFT JOIN mdauthor a ON d.uuid=a.uuid
|
LEFT JOIN mdauthor a ON d.uuid=a.uuid
|
||||||
WHERE a.userid=".$uid." AND a.status>0 and ".$wheresql."
|
WHERE a.userid=".$uid." AND a.status>0 and ".$wheresql."
|
||||||
ORDER BY d.ts_published desc,d.ts_submitted desc,d.ts_created DESC
|
ORDER BY d.ts_published desc,d.ts_submitted desc,d.ts_created DESC
|
||||||
|
@ -39,12 +39,11 @@ class Doi extends Zend_Controller_Plugin_Abstract
|
||||||
}
|
}
|
||||||
|
|
||||||
function add($data){
|
function add($data){
|
||||||
include_once("helper/dbh.php");
|
|
||||||
$dbh = new dbh($this->db);
|
|
||||||
$this->data_process_in($data);
|
$this->data_process_in($data);
|
||||||
//include_once("helper/view.php");
|
$sql="insert into ".$this->tbl_doi." (doi,uuid,url,title_en,publisher_en,author_en,organization_en) values('".
|
||||||
//view::Dump($data);
|
$data['doi']."','".$data['uuid']."','".$data['url']."','".$data['title_en']."','".$data['publisher_en']."','".$data['author_en'].
|
||||||
return $dbh->insert($this->tbl_doi,$data);
|
"',array[".$data['organization_en']."])";
|
||||||
|
return $this->db->exec($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
function update($data,$uuid,$uid=0){
|
function update($data,$uuid,$uid=0){
|
||||||
|
@ -63,8 +62,6 @@ class Doi extends Zend_Controller_Plugin_Abstract
|
||||||
return $this->add($data);
|
return $this->add($data);
|
||||||
}else {
|
}else {
|
||||||
$this->data_process_in($data);
|
$this->data_process_in($data);
|
||||||
//include_once("helper/view.php");
|
|
||||||
//view::Dump($data);
|
|
||||||
include_once("helper/dbh.php");
|
include_once("helper/dbh.php");
|
||||||
$dbh = new dbh($this->db);
|
$dbh = new dbh($this->db);
|
||||||
if(is_numeric($uuid))
|
if(is_numeric($uuid))
|
||||||
|
@ -73,7 +70,10 @@ class Doi extends Zend_Controller_Plugin_Abstract
|
||||||
}else{
|
}else{
|
||||||
$condition = " uuid='$uuid' ";
|
$condition = " uuid='$uuid' ";
|
||||||
}
|
}
|
||||||
$state = $dbh->update($this->tbl_doi,$data,$condition,true);
|
$sql="update $this->tbl_doi set doi='".$data['doi']."',uuid='".$data['uuid']."',
|
||||||
|
url='".$data['url']."',title_en='".$data['title_en']."',publisher_en='".$data['publisher_en']
|
||||||
|
."',author_en='".$data['author_en']."',organization_en=array[".$data['organization_en']."] where ".$condition;
|
||||||
|
$state=$this->db->exec($sql);
|
||||||
|
|
||||||
if( $state == true)
|
if( $state == true)
|
||||||
{
|
{
|
||||||
|
@ -100,8 +100,6 @@ class Doi extends Zend_Controller_Plugin_Abstract
|
||||||
return $this->add($data);
|
return $this->add($data);
|
||||||
}else {
|
}else {
|
||||||
$this->data_process_in($data);
|
$this->data_process_in($data);
|
||||||
//include_once("helper/view.php");
|
|
||||||
//view::Dump($data);
|
|
||||||
include_once("helper/dbh.php");
|
include_once("helper/dbh.php");
|
||||||
$dbh = new dbh($this->db);
|
$dbh = new dbh($this->db);
|
||||||
if(is_numeric($uuid))
|
if(is_numeric($uuid))
|
||||||
|
@ -113,7 +111,10 @@ class Doi extends Zend_Controller_Plugin_Abstract
|
||||||
$data['publisher']='';
|
$data['publisher']='';
|
||||||
$data['title_en']=$data['title'];
|
$data['title_en']=$data['title'];
|
||||||
$data['title']='';
|
$data['title']='';
|
||||||
$state = $dbh->update($this->tbl_doi,$data,$condition,true);
|
$sql="update $this->tbl_doi set doi='".$data['doi']."',uuid='".$data['uuid']."',
|
||||||
|
url='".$data['url']."',title_en='".$data['title_en']."',publisher_en='".$data['publisher_en']
|
||||||
|
."',author_en='".$data['author_en']."',organization_en=array[".$data['organization_en']."] where ".$condition;
|
||||||
|
$state=$this->db->exec($sql);
|
||||||
|
|
||||||
if( $state == true)
|
if( $state == true)
|
||||||
{
|
{
|
||||||
|
@ -131,15 +132,13 @@ class Doi extends Zend_Controller_Plugin_Abstract
|
||||||
$orgs_en = array();
|
$orgs_en = array();
|
||||||
foreach($data['info'] as $k=>$v)
|
foreach($data['info'] as $k=>$v)
|
||||||
{
|
{
|
||||||
$authors_en[(int)$v['order']] = str_replace(",","||||",$v['author_en']);
|
$authors_en[(int)$v['order']] = $v['author_en'];
|
||||||
$orgs_en[(int)$v['order']] = str_replace(",","||||",$v['organization_en']);
|
$orgs_en[(int)$v['order']] = $v['organization_en'];
|
||||||
}
|
}
|
||||||
ksort($authors_en);
|
ksort($authors_en);
|
||||||
ksort($orgs_en);
|
ksort($orgs_en);
|
||||||
//$authors = "{".join(",",$authors)."}";
|
|
||||||
//$orgs = "{".join(",",$orgs)."}";
|
|
||||||
$authors_en = "{".join(",",$authors_en)."}";
|
$authors_en = "{".join(",",$authors_en)."}";
|
||||||
$orgs_en = "{".join(",",$orgs_en)."}";
|
$orgs_en = "'".join("','",$orgs_en)."'";
|
||||||
$data['authors'] = '{}';
|
$data['authors'] = '{}';
|
||||||
$data['organization'] = '{}';
|
$data['organization'] = '{}';
|
||||||
$data['author_en'] = $authors_en;
|
$data['author_en'] = $authors_en;
|
||||||
|
@ -149,51 +148,30 @@ class Doi extends Zend_Controller_Plugin_Abstract
|
||||||
|
|
||||||
function data_process_out(&$data){
|
function data_process_out(&$data){
|
||||||
$authors_en = $this->array_split($data['author_en']);
|
$authors_en = $this->array_split($data['author_en']);
|
||||||
$orgs_en = $this->array_split($data['organization_en']);
|
$orgs_en = json_decode($data['orgen_json']);
|
||||||
$info = array();
|
$info = array();
|
||||||
foreach($authors_en as $k=>$v)
|
foreach($authors_en as $k=>$v)
|
||||||
{
|
{
|
||||||
$info[$k] = array(
|
$info[$k] = array(
|
||||||
'author_en'=>str_replace("||||",",",str_replace("\"","",$authors_en[$k])),
|
'author_en'=>str_replace("\"","",$authors_en[$k]),
|
||||||
'organization_en'=>str_replace("||||",",",str_replace("\"","",$orgs_en[$k])),
|
'organization_en'=>str_replace("\"","",$orgs_en[$k]),
|
||||||
'order'=> count($authors_en)+($k-1)
|
'order'=> count($authors)+$k
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
//include_once("helper/view.php");
|
|
||||||
//view::Dump($info);
|
|
||||||
return $info;
|
return $info;
|
||||||
}
|
}
|
||||||
|
|
||||||
function array_split($a){
|
function array_split($a){
|
||||||
/*$a = str_replace("{",'',$a);
|
return explode(',',substr($a,1,-1));
|
||||||
$a = str_replace("}",'',$a);
|
|
||||||
$a = explode(",",$a); */
|
|
||||||
//return explode(',',substr($a,1,-1));
|
|
||||||
$regx1 = '/^{(.*)}$/';
|
|
||||||
$regx2 = "/\"((\\\\\\\\|\\\\\"|[^\"])+)\"|[^,]+/";
|
|
||||||
$regx3 = '/^[^"].*$|^"(.*)"$/';
|
|
||||||
$match = null;
|
|
||||||
preg_match( $regx1,$a,$match);
|
|
||||||
$str = $match[1];
|
|
||||||
preg_match_all($regx2, $str,$match);
|
|
||||||
$items = $match[0];
|
|
||||||
$array = array();
|
|
||||||
$count = count($items);
|
|
||||||
for($index = 0; $index < $count;++$index)
|
|
||||||
{
|
|
||||||
preg_match($regx3, $items[$index],$match);
|
|
||||||
$array[$index]=end($match);
|
|
||||||
}
|
|
||||||
return $array;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function view($id)
|
function view($id)
|
||||||
{
|
{
|
||||||
if(is_numeric($id))
|
if(is_numeric($id))
|
||||||
{
|
{
|
||||||
$sql = "SELECT * FROM ".$this->tbl_doi." WHERE id=$id";
|
$sql = "SELECT *,array_to_json(organization_en) as orgen_json FROM ".$this->tbl_doi." WHERE id=$id";
|
||||||
}else{
|
}else{
|
||||||
$sql = "SELECT * FROM ".$this->tbl_doi." WHERE uuid='$id'";
|
$sql = "SELECT *,array_to_json(organization_en) as orgen_json FROM ".$this->tbl_doi." WHERE uuid='$id'";
|
||||||
}
|
}
|
||||||
$rs = $this->db->query($sql);
|
$rs = $this->db->query($sql);
|
||||||
$row = $rs->fetch();
|
$row = $rs->fetch();
|
||||||
|
|
Loading…
Reference in New Issue