PHP-Seleção de campos com SQL SERVER
17/01/2017
0
<?php ob_start(); session_start(); include("conexao/conectasql.php"); ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <title>Login - Fundação Educacional de Lavras - Tecnologia da Informação</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" /> <link href="css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" /> <link href="css/font-awesome.css" rel="stylesheet"> <link href="http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600" rel="stylesheet"> <link href="css/style.css" rel="stylesheet" type="text/css"> <link href="css/pages/signin.css" rel="stylesheet" type="text/css"> <link rel="shortcut icon" href="media/images/favicon.ico" type="image/x-icon"/> <link rel="apple-touch-icon" sizes="57x57" href="media/images/apple-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="media/images/apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="media/images/apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="media/images/apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="media/images/apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="media/images/apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="media/images/apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="media/images/apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="media/images/apple-icon-180x180.png"> <link rel="icon" type="image/png" sizes="192x192" href="media/images/android-icon-192x192.png"> <link rel="icon" type="image/png" sizes="32x32" href="media/images/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="96x96" href="media/images/favicon-96x96.png"> <link rel="icon" type="image/png" sizes="16x16" href="media/images/favicon-16x16.png"> <link rel="manifest" href="/manifest.json"> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="msapplication-TileImage" content="/ms-icon-144x144.png"> <meta name="theme-color" content="#ffffff" </head> <body> <div class="navbar" style="background-color:#177CAA"> <div class="navbar" style="background-color:#177CAA"> <div class="container" style="background-color:#177CAA"> <a class="brand" href="index.php"> Fundação Educacional de Lavras - Tecnologia da Informação </a> </div> <!-- /container --> </div> <!-- /navbar-inner --> </div> <!-- /navbar --> <div class="account-container"> <?php if(isset($_GET['acao'])){ if(!isset($_POST['logar'])){ $acao = $_GET['acao']; if($acao=='negado'){ echo '<div class="alert alert-danger"> <button type="button" class="close" data-dismiss="alert">×</button> <strong>Erro:</strong> Número de matrícula não existe ou está errado. </div>'; } } } if(isset($_POST['logar'])){ //RECUPERAR DADOS $usuario = trim(strip_tags($_POST['usuario'])); //SELECIONAR BANCO DE DADOS $select = " SELECT HAB.ABERTURA,HAB.FECHAMENTO,DATEDIFF(DAY,HAB.ABERTURA,HAB.FECHAMENTO) FROM HATENDIMENTOBASE HAB INNER JOIN HATENDENTE (NOLOCK) ON (HATENDENTE.CODCOLIGADA=HAB.CODCOLIGADA AND HATENDENTE.CODATENDENTE=HAB.CODATENDENTE) INNER JOIN PPESSOA ON HATENDENTE.CODPESSOA=PPESSOA.CODIGO INNER JOIN PFUNC ON PFUNC.CODPESSOA=PPESSOA.CODIGO WHERE CODSTATUS IN ('O','R','F','U') AND PFUNC.CHAPA=:usuario "; try{ $result = $conexaosql->prepare($select); $result->bindParam(':usuario',$usuario, PDO::PARAM_STR); $result->execute(); $contar = $result->fetch(); if($contar>0){ $usuario = $_POST['usuario']; $_SESSION['sessaousuario'] = $usuario; $getit = mysql_query( $select, $result ); while($row = mysql_fetch_array($getit, MYSQL_ASSOC)) { $dep="{$row['totaldep']}"; $man="{$row['totalmania']}"; $anx="{$row['totalanxiety']}"; $example_data = array( array('a',$dep,$man,$anx) ); //Include the code //Define the object $graph = new PHPlot(); $graph->SetPlotType("bars"); $legend = array(); $legend[] = "Depression"; $legend[] = "Mania"; $legend[] = "Anxiety"; $graph->SetDataValues($example_data); $graph->SetLegendPixels(1,5,false); $graph->SetLegend($legend); //Draw it $graph->DrawGraph(); header(""); }} else{ echo '<div class="alert alert-danger"> <button type="button" class="close" data-dismiss="alert">×</button> <strong>Erro:</strong>Não foi possível gerar gráfico </div>'; } }catch(PDOException $e) { echo $e; } } ?>
Chromusmaster
Post mais votado
18/01/2017
while($ver = mssql_fetch_array($select)) { $data[] = array($ver['ABERTURA'],$ver['FECHAMENTO'],$ver['Diferenca']); }
E remove estas duas linhas:
$result = $conexaosql->execute($select); $result->bindParam(':usuario',$usuario, PDO::PARAM_STR);
Tem um erro no seu SQL também
Dois "AND"
WHERE CODSTATUS IN ('O','R','F','U') AND AND PFUNC.CHAPA='000837'
Se estiver usando PDO, verifique esse link: PDO Query
O mssql_query() já faz a execução do SQL que você passou, logo após você está tentando passar o "resultado" para fazer uma execução via "execute". Acho que há uma mistura ai.
Notei que o seu parametro não está sendo atribuido a lugar algum (diferente o primeiro código que postou), então poderia remover as duas linhas que mencionei e testar a execução.
Se for usar PDO, use só o PDO, caso for usar mssq_* tente usar somente ele também. Tenta padronizar, fica mais fácil de compreender.
Use o var_dump() aqui:
$ver = mssql_fetch_array($result) var_dump($ver);
e posta o resultado.
Wilson Neto
Mais Posts
17/01/2017
Wilson Neto
while($row = mysql_fetch_array($getit, MYSQL_ASSOC)) { $dep="{$row['totaldep']}"; $man="{$row['totalmania']}"; $anx="{$row['totalanxiety']}"; $example_data = array( array('a',$dep,$man,$anx) ); //Include the code //Define the object $graph = new PHPlot(); $graph->SetPlotType("bars"); $legend = array(); $legend[] = "Depression"; $legend[] = "Mania"; $legend[] = "Anxiety"; $graph->SetDataValues($example_data); $graph->SetLegendPixels(1,5,false); $graph->SetLegend($legend); //Draw it $graph->DrawGraph(); header(""); }
Você está pegando o resultado e já pedindo para "desenhar" o gráfico a cada iteração. Experimenta passar os dados já prontos e mandar ele desenhar o gráfico ao final.
Não obteve nenhum erro em tela? Se der um var_dump() ou print_r() nos pontos que você espera resultado, o que você recebe?
17/01/2017
Wilson Neto
17/01/2017
Chromusmaster
17/01/2017
Wilson Neto
Tente isso aqui:
while($row = mysql_fetch_array($getit, MYSQL_ASSOC)) { $dep="{$row['totaldep']}"; $man="{$row['totalmania']}"; $anx="{$row['totalanxiety']}"; $example_data[] = array( array('a',$dep,$man,$anx) ); #montando o array $example_data } #fim do while //Include the code //Define the object $graph = new PHPlot(); $graph->SetPlotType("bars"); $legend = array(); $legend[] = "Depression"; $legend[] = "Mania"; $legend[] = "Anxiety"; $graph->SetDataValues($example_data); $graph->SetLegendPixels(1,5,false); $graph->SetLegend($legend); //Draw it $graph->DrawGraph(); header("");
Inicializa o $example_data antes. $example_data = array();
17/01/2017
Chromusmaster
17/01/2017
Wilson Neto
Veja se essa linha está habilitada no seu php.ini
display_errors = On
Outra, se você der um print_r($example_data); o que você vê?
(Só uma curiosidade, está trabalhando com dois bancos? Eu acho que para trabalhar com sql server a função correta seria mssql_* e não mysql_* .
Mas se seus erros não estiverem habilitados, vamos ficar no escuro...rs.
18/01/2017
Chromusmaster
Veja se essa linha está habilitada no seu php.ini
display_errors = On
Outra, se você der um print_r($example_data); o que você vê?
(Só uma curiosidade, está trabalhando com dois bancos? Eu acho que para trabalhar com sql server a função correta seria mssql_* e não mysql_* .
Mas se seus erros não estiverem habilitados, vamos ficar no escuro...rs.
Precisei refazer o php inteiro. Ficou agora assim
<?php ob_start(); session_start(); include("conexao/conectasql.php"); ?> <?php if(isset($_POST['logar'])){ //RECUPERAR DADOS $usuario = trim(strip_tags($_POST['usuario'])); //SELECIONAR BANCO DE DADOS $select = mssql_query(" SELECT HAB.ABERTURA,HAB.FECHAMENTO,DATEDIFF(DAY,HAB.ABERTURA,HAB.FECHAMENTO) AS [Diferenca] FROM HATENDIMENTOBASE HAB INNER JOIN HATENDENTE (NOLOCK) ON (HATENDENTE.CODCOLIGADA=HAB.CODCOLIGADA AND HATENDENTE.CODATENDENTE=HAB.CODATENDENTE) INNER JOIN PPESSOA ON HATENDENTE.CODPESSOA=PPESSOA.CODIGO INNER JOIN PFUNC ON PFUNC.CODPESSOA=PPESSOA.CODIGO WHERE CODSTATUS IN ('O','R','F','U') AND AND PFUNC.CHAPA='000837' "); try{ $result = $conexaosql->execute($select); $result->bindParam(':usuario',$usuario, PDO::PARAM_STR); $data = array(); while($ver = mssql_fetch_array($result)) { $data[] = array($ver['ABERTURA'],$ver['FECHAMENTO'],$ver['Diferenca']); } $graph = new PHPlot(600,200); $graph->SetDataValues($data); $graph->SetPlotType("pie"); $graph->SetImageBorderType('plain'); $graph->SetDataType('text-data-single'); $graph->DrawGraph(); header(""); }catch(PDOException $e) { echo $e; } } ?>
Pelo que notei ele não faz a consulta e por isso não apresenta erros no php. A conexão ele faz, mas apenas a consulta é que não esta realizando. Alguma sugestão ?
18/01/2017
Chromusmaster
while($ver = mssql_fetch_array($select)) { $data[] = array($ver['ABERTURA'],$ver['FECHAMENTO'],$ver['Diferenca']); }
E remove estas duas linhas:
$result = $conexaosql->execute($select); $result->bindParam(':usuario',$usuario, PDO::PARAM_STR);
Tem um erro no seu SQL também
Dois "AND"
WHERE CODSTATUS IN ('O','R','F','U') AND AND PFUNC.CHAPA='000837'
Se estiver usando PDO, verifique esse link: PDO Query
O mssql_query() já faz a execução do SQL que você passou, logo após você está tentando passar o "resultado" para fazer uma execução via "execute". Acho que há uma mistura ai.
Notei que o seu parametro não está sendo atribuido a lugar algum (diferente o primeiro código que postou), então poderia remover as duas linhas que mencionei e testar a execução.
Se for usar PDO, use só o PDO, caso for usar mssq_* tente usar somente ele também. Tenta padronizar, fica mais fácil de compreender.
Use o var_dump() aqui:
$ver = mssql_fetch_array($result) var_dump($ver);
e posta o resultado.
Bom vamos lá. As suas modificações judaram bastante. Agora porém aparece oseguinte erro "Cannot use object of type PDOStatement as array". E mais uma vez precise fazer modificações no código, porém dessa vez foram menores a smudanças e já estamos bem encaminhados:
<?php ob_start(); session_start(); include("conexao/conectasql.php"); require_once("phplot.php") ?> <?php //SELECIONAR BANCO DE DADOS $select =(" SELECT HAB.ABERTURA,HAB.FECHAMENTO,DATEDIFF(DAY,HAB.ABERTURA,HAB.FECHAMENTO) AS [Diferenca] FROM HATENDIMENTOBASE HAB (NOLOCK) INNER JOIN HATENDENTE (NOLOCK) ON (HATENDENTE.CODCOLIGADA=HAB.CODCOLIGADA AND HATENDENTE.CODATENDENTE=HAB.CODATENDENTE) INNER JOIN PPESSOA ON HATENDENTE.CODPESSOA=PPESSOA.CODIGO INNER JOIN PFUNC ON PFUNC.CODPESSOA=PPESSOA.CODIGO WHERE CODSTATUS IN ('O','R','F','U') AND PFUNC.CHAPA='000837' "); try{ $data = array(); while($result = $conexaosql->query($select)) { $data[] = array($result['ABERTURA'],$result['FECHAMENTO'],$result['Diferenca']); } $graph = new PHPlot(600,200); $graph->SetDataValues($data); $graph->SetPlotType("pie"); $graph->SetImageBorderType('plain'); $graph->SetDataType('text-data-single'); $graph->DrawGraph(); header(""); }catch(PDOException $e) { echo $e; } ?>
18/01/2017
Wilson Neto
$result->abertura, $result->fechamento, $result->diferenca
caso de algum erro de offset ou de acesso:
$result[0]->abertura, $result[0]->fechamento, $result[0]->diferenca
Caso fique na duvida do retorno, imprima o $result usando print_r() ou var_dump().
18/01/2017
Chromusmaster
Undefined property: PDOStatement::$fechamento
Undefined property: PDOStatement::$abertura
e uma de time limit exception
18/01/2017
Wilson Neto
Tira ele de dentro do while e posta o valor.
18/01/2017
Chromusmaster
18/01/2017
Wilson Neto
Esse $result tinha que ser um object. Verifique a sua conexão com o banco.
18/01/2017
Chromusmaster
foreach ($conexaosql->query($select) as $row) { print $row[''ABERTURA''] . "\\\\t"; print $row[''FECHAMENTO''] . "\\\\t"; print $row[''Diferenca''] . "\\\\n"; }
E o var_dump me trouxe todos os dados
Clique aqui para fazer login e interagir na Comunidade :)