Fórum PHP-Seleção de campos com SQL SERVER #573881
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
Curtir tópico
+ 0Post 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
Gostei + 1
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?
Gostei + 0
17/01/2017
Wilson Neto
Gostei + 0
17/01/2017
Chromusmaster
Gostei + 0
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();
Gostei + 0
17/01/2017
Chromusmaster
Gostei + 0
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.
Gostei + 0
18/01/2017
Chromusmaster
Gostei + 0
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 ?
Gostei + 0
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;
}
?>Gostei + 0
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().
Gostei + 0
18/01/2017
Chromusmaster
Undefined property: PDOStatement::$fechamento
Undefined property: PDOStatement::$abertura
e uma de time limit exception
Gostei + 0
18/01/2017
Wilson Neto
Tira ele de dentro do while e posta o valor.
Gostei + 0
18/01/2017
Chromusmaster
Gostei + 0
18/01/2017
Wilson Neto
Esse $result tinha que ser um object. Verifique a sua conexão com o banco.
Gostei + 0
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)