From a07cf91e5622f96b870d6990f358299094801cc2 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 19 Aug 2013 17:37:38 +0000 Subject: [PATCH] --- admin/js/estat_editor.js | 27 ++++++++++++++++++++++----- admin/php/metaestat_uploadshp_submit.php | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 79 insertions(+), 25 deletions(-) diff --git a/admin/js/estat_editor.js b/admin/js/estat_editor.js index e9f866f..aefd0c3 100644 --- a/admin/js/estat_editor.js +++ b/admin/js/estat_editor.js @@ -76,11 +76,12 @@ i3GEOadmin.editor = { }, tabela:{ onde: "i3GEOadminEditorTabela", + optionsTabela: "", lista: function(){ var callback = { success:function(o){ try { - var dados = YAHOO.lang.JSON.parse(o.responseText), + var opt,dados = YAHOO.lang.JSON.parse(o.responseText), temp = "
" + "

Crie uma tabela no banco contendo limites ou localidades que poderá ser utilizada para espacializar os dados estatísticos existentes em outras tabelas
" + "

" + @@ -95,7 +96,9 @@ i3GEOadmin.editor = { temp += "
" + "

Escolha uma tabela existente: " + "" + "

" + "" + @@ -441,9 +444,18 @@ i3GEOadmin.editor = { '

shp:

' + '

shx:

' + '

dbf:

' + - '

Nome da nova tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):

' + + '

Nome da tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):
' + + 'Ou escolha da lista: ' + + '

' + + '

Tipo de operação:

' + + '

' + '

Código da projeção (SRID) Assegure-se que o shapefile esteja na projeção geográfica se você for usar com o sistema de metadados estatísticos :

' + - '

' + '' + '' + @@ -457,6 +469,12 @@ i3GEOadmin.editor = { return ins; }, submit: function(){ + if($i("i3GEOtipoOperacao").value === "apagar"){ + var confirma = window.confirm("Apaga mesmo os registros? (nao pode ser revertido)"); + if(!confirma){ + return; + } + } if($i("tabelaDestino").value == ""){ alert("Digite o nome da tabela a ser criada"); return; @@ -488,7 +506,6 @@ i3GEOadmin.editor = { var ins = '

' + '

CSV (utilize ponto como separador de valores decimais ou a importação poderá não ocorrer):

' + '

Nome da nova tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):

' + - '

' + '' + '' + diff --git a/admin/php/metaestat_uploadshp_submit.php b/admin/php/metaestat_uploadshp_submit.php index f81dfb6..fdee9c9 100755 --- a/admin/php/metaestat_uploadshp_submit.php +++ b/admin/php/metaestat_uploadshp_submit.php @@ -77,7 +77,6 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ $colunas[] = $c; } } - echo "
Numshapes: ". $numshapes; $tipo = $shapefileObj->type; echo "
Tipo: ". $tipo; @@ -106,19 +105,61 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ echo "
Tipos das colunas:

";
 	var_dump($tipoColuna);
 	echo "
"; + + try { + $dbh = new PDO('pgsql:dbname='.$conexao["bancodedados"].';user='.$conexao["usuario"].';password='.$conexao["senha"].';host='.$conexao["host"].';port='.$conexao["porta"]); + } catch (PDOException $e) { + echo 'Connection failed: ' . $e->getMessage(); + exit; + } + //gera o script para criar a tabela + //verifica se a tabela ja existe + $sql = "SELECT table_name FROM information_schema.tables where table_schema = '".$_POST["i3GEOuploadesquema"]."' AND table_name = '".$_POST["tabelaDestino"]."'"; + $res = $dbh->query($sql,PDO::FETCH_ASSOC); + if(count($res->fetchAll())>0){ + $tabelaExiste = true; + } + else{ + $tabelaExiste = false; + } + //encoding do banco de dados + $sql = "SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = '".$conexao["bancodedados"]."'"; + $res = $dbh->query($sql,PDO::FETCH_ASSOC); + $encodingdb = $res->fetchAll()[0]["pg_encoding_to_char"]; + if($encodingdb == "UTF8"){ + $encodingdb = "UTF-8"; + } + if($encodingdb == "LATIN1"){ + $encodingdb = "ISO-8859-1"; + } + //a tabela nao existe e e do tipo create $sqltabela = array(); - $sql = "CREATE TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]."(gid integer, the_geom geometry"; - foreach($colunas as $coluna){ - $sql .= ",".strtolower($coluna)." ".$tipoColuna[$coluna]; - } - $sql .= ")WITH(OIDS=FALSE)"; - $sqltabela[] = $sql; - $sqltabela[] = "ALTER TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." OWNER TO ".$conexao["usuario"]; - $sqltabela[] = "CREATE INDEX ".$_POST["tabelaDestino"]."_indx_thegeom ON ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." USING gist (the_geom )"; - echo "
Sql tabela:
";
-	var_dump($sqltabela);
-	echo "
"; + if($tabelaExiste == false && $_POST["tipoOperacao"] == "criar"){ + $sql = "CREATE TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]."(gid integer, the_geom geometry"; + foreach($colunas as $coluna){ + $sql .= ",".strtolower($coluna)." ".$tipoColuna[$coluna]; + } + $sql .= ")WITH(OIDS=FALSE)"; + $sqltabela[] = $sql; + $sqltabela[] = "ALTER TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." OWNER TO ".$conexao["usuario"]; + $sqltabela[] = "CREATE INDEX ".$_POST["tabelaDestino"]."_indx_thegeom ON ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." USING gist (the_geom )"; + echo "
Sql tabela:
";
+		var_dump($sqltabela);
+		echo "
"; + } + if($tabelaExiste == true && $_POST["tipoOperacao"] == "criar"){ + echo "A tabela existe. Não pode ser criada."; + exit; + } + //se a tabela existe e e para remover os registros + if($tabelaExiste == true && $_POST["tipoOperacao"] == "apagar"){ + $sqltabela[] = "delete from ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]; + } + if($tabelaExiste == true && $_POST["tipoOperacao"] == "apagar" && $_POST["i3GEOuploadesquema"] != "i3geo_metaestat"){ + echo "Não é possível executar essa operação nesse esquema."; + exit; + } //gera o script para inserir os dados $linhas = array(); $insert = "INSERT INTO ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]."( gid,".strtolower(implode(",",$colunas)).",the_geom)"; @@ -128,7 +169,9 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ $vs[] = $i; foreach($colunas as $coluna){ if($tipoColuna[$coluna] == "varchar"){ - $vs[] = "'".$s->getValue($layer,$coluna)."'"; + $texto = $s->getValue($layer,$coluna); + //echo mb_detect_encoding($texto); + $vs[] = "'".mb_convert_encoding($texto,$encodingdb,mb_detect_encoding($texto))."'"; } else{ $vs[] = $s->getValue($layer,$coluna); @@ -138,12 +181,6 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ $linhas[] = $insert."VALUES(".implode(",",$vs).")"; } $layer->close(); - try { - $dbh = new PDO('pgsql:dbname='.$conexao["bancodedados"].';user='.$conexao["usuario"].';password='.$conexao["senha"].';host='.$conexao["host"].';port='.$conexao["porta"]); - } catch (PDOException $e) { - echo 'Connection failed: ' . $e->getMessage(); - } - foreach($sqltabela as $linha){ try { $dbh->query($linha); @@ -174,4 +211,4 @@ function verificaNome($nome,$ext){ } ?> - \ No newline at end of file + -- libgit2 0.21.2