Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ferreira Felipe

[Resolvido] Relatório PHP + MySQL

Recommended Posts

Amigos...

Agradeço muito ajuda se puderem revisar o código a seguir.

 

Não estou conseguindo visualizar os ultimos 15 registros do banco de dados.

 

relatorio.php

<?php
//Conectando com o banco de dados.
include ("conectar.php"); 

//Agora é realizar a query de busca no banco de dados
$sql = "SELECT ID_dados H_Atual D_Atual Resp Reg FROM dados ORDER BY ID_dados ASC";

$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

// Agora iremos "pegar" cada campo e organizar no HTML
while ($linha=mysql_fetch_array($resultado)) {

	$H_Atual = $H_Atual["H_Atual"];
	$D_Atual = $D_Atual["D_Atual"];
	$Resp = $Resp["Resp"];
	$Reg = $Reg["Reg"];

	echo "Autor: $Resp";
	echo "<br>";
	echo "Horário: $H_Atual";
	echo "<br>";
	echo "Data: $D_Atual";
	echo "<br>";
	echo "Registro: $Reg";
	echo "<br>";
	echo '<span style="font-size:10px"><b>Validado pelo Sistema:</b></span>';
	echo "<hr>";

}
?>

Sempre que entro na página me aparece o erro: Não foi possível realizar a consulta ao banco de dados

Não sei mais a onde estou errando!!!

Agradeço atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque:

$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");
por:

$resultado = mysql_query($sql)
or die (mysql_error());
nos diga oque retorna.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradecido pela resposta rápida caro William Bruno!

 

Erro que retornou foi:

Você tem um erro de sintaxe no seu SQL próximo a 'D_Atual Resp Reg FROM dados ORDER BY ID_dados ASC' na linha 1

 

Porem...

Não sei a onde esta o erro!

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui nessa parte

 

while ($linha=mysql_fetch_array($resultado))

A variavel "$linha" é o que indentifica o array com os resultados da sua consulta, o que voce precisa fazer é trocar

$H_Atual = $H_Atual["H_Atual"];
$D_Atual = $D_Atual["D_Atual"];
$Resp = $Resp["Resp"];
$Reg = $Reg["Reg"];

POR

$H_Atual = $linha["H_Atual"];
$D_Atual = $linha["D_Atual"];
$Resp = $linha["Resp"];
$Reg = $linha["Reg"];

ve se funciona.

fwls

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca as virgulas entre os campos

 

SELECT ID_dados, H_Atual, D_Atual, Resp, Reg FROM dados ORDER BY ID_dados ASC"

outra coisa, no lugar de fazer

 

$H_Atual = $linha["H_Atual"];
$D_Atual = $linha["D_Atual"];
$Resp = $linha["Resp"];
$Reg = $linha["Reg"];

por que não usa o valor direto

 

echo "Data: {$linha['D_Atual']}";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigos...

 

Fiz as alterações sugeridas....

 

Porem o erro continua!

Você tem um erro de sintaxe no seu SQL próximo a 'FROM dados ORDER BY ID_dados ASC' na linha 1

 

Vejam o código como esta agora.

 

relatorio.php

<?php
//Conectando com o banco de dados.
include ("conectar.php"); 

//Agora é realizar a query de busca no banco de dados
$sql = "SELECT ID_dados, H_Atual, D_Atual, Resp, Reg, FROM dados ORDER BY ID_dados ASC";

$resultado = mysql_query($sql)
or die (mysql_error());

// Agora iremos "pegar" cada campo e organizar no HTML
while ($linha=mysql_fetch_array($resultado)) {

	$H_Atual = $linha["H_Atual"];
	$D_Atual = $linha["D_Atual"];
	$Resp = $linha["Resp"];
	$Reg = $linha["Reg"];

	echo "Autor: {$linha['Resp']}";
	echo "<br>";
	echo "Horário: {$linha['H_Atual']}";
	echo "<br>";
	echo "Data: {$linha['D_Atual']}";
	echo "<br>";
	echo "Registro: {$linha['Reg']}";
	echo "<br>";
	echo '<span style="font-size:10px"><b>Validado pelo Sistema:</b></span>';
	echo "<hr>";

}
?>

Agradecido pela atenção de todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
//Agora é realizar a query de busca no banco de dados
$sql = "SELECT ID_dados, H_Atual, D_Atual, Resp, Reg, FROM dados ORDER BY ID_dados ASC";

Troque a linha acima por:

$sql = "SELECT ID_dados, H_Atual, D_Atual, Resp, Reg FROM dados ORDER BY ID_dados ASC";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos conseguir.....

 

Vejam o código.

$sql = "SELECT * FROM dados ORDER BY ID_dados DESC LIMIT 15";

Vcs podem perceber que somente 15 ultimos registros que foram adicionados no banco é que são exibidos...

Agora gostaria de saber como eu posso fazer um "link" para exibir os outros 15 e assim por diante!!

 

Agradeço atenção de todos!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora gostaria de saber como eu posso fazer um "link" para exibir os outros 15 e assim por diante!!

 

Para fazer a paginação você precisará de um identificador da posição atual, você pode partir por esse caminho:

 

$pagina =& $_GET[ 'pagina' ];
$total = 15;
$result = null;
$numrows = 0;

$sql = sprintf( 'SELECT * FROM dados ORDER BY ID_dados DESC LIMIT %d,%d' , $pagina , $total );

if ( $result = mysql_query( $sql ) ){
$numrows = mysql_num_rows( $result ); //Recuperamos o total de registros da consulta atual

//...

mysql_free_result( $result ); //Liberamos o resultado
}

/**
* Se o número de linhas for igual ao total estipulado então é provável que tenhamos uma próxima página
*/
if ( $numrows == $total )
printf( '<a href="%s?pagina=%d">Próximo</a>' , $_SERVER[ 'PHP_SELF' ] , $pagina + $total );

/**
* Se a página atual menos o total de registros for maior que 0 então temos uma página anterior
*/
if ( $pagina - $total >= 0 )
printf( '<a href="%s?pagina=%d">Anterior</a>' , $_SERVER[ 'PHP_SELF' ] , $pagina - $total );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu querido João.

 

Agradeço por esta ajuda!

Conseguir compreender um pouco o que vcs esta querendo passar! Mas não 100%.

 

Veja o código:

<?php
//Conectando com o banco de dados.
include ("conectar.php"); 


$pagina =& $_GET[ 'pagina' ];
$total = 15;
$result = null;
$numrows = 0;

$sql = sprintf( 'SELECT * FROM dados ORDER BY ID_dados DESC LIMIT %d,%d' , $pagina , $total );

if ( $result = mysql_query( $sql ) ){
 $numrows = mysql_num_rows( $result ); //Recuperamos o total de registros da consulta atual
 
 //...
 
 mysql_free_result( $result ); //Liberamos o resultado
}
while ($linha=mysql_fetch_array($result)) {
	echo "<b>Autor:</b> {$linha['Resp']}";
	echo "<br>";
	echo "<b>Horário:</b> {$linha['H_Atual']}";
	echo "<br>";
	echo "<b>Data:</b> {$linha['D_Atual']}";
	echo "<br>";
	echo "<b>Registro:</b> {$linha['Reg']}";
	echo "<br>";
	echo '<span style="font-size:10px"><b>Validado pelo Sistema:</b></span>';
	echo "<hr>";
}
/**
 * Se o número de linhas for igual ao total estipulado então é provável que tenhamos uma próxima página
 */
if ( $numrows == $total )
 printf( '<a href="%s?pagina=%d">Próximo</a>' , $_SERVER[ 'PHP_SELF' ] , $pagina + $total );

/**
 * Se a página atual menos o total de registros for maior que 0 então temos uma página anterior
 */
if ( $pagina - $total >= 0 )
 printf( '<a href="%s?pagina=%d">Anterior</a>' , $_SERVER[ 'PHP_SELF' ] , $pagina - $total );
 
?>

Desta forma apresenta um erro na linha 28:(Warning: mysql_fetch_array(): 5 is not a valid MySQL result resource in C:\Arquivos de programas\EasyPHP5.3.0\www\1\relatorios.php on line 28)

while ($linha=mysql_fetch_array($result)) {

Eu sei que fiz algo de errado, so não sei o que!!!

Muito obrigado pela resposta rápida !!

Bom dia!

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo "<b>Autor:</b> {$linha['Resp']}";
        echo "<br>";
        echo "<b>Horário:</b> {$linha['H_Atual']}";
        echo "<br>";
        echo "<b>Data:</b> {$linha['D_Atual']}";
        echo "<br>";
        echo "<b>Registro:</b> {$linha['Reg']}";
        echo "<br>";
        echo '<span style="font-size:10px"><b>Validado pelo Sistema:</b></span>';
        echo "<hr>";

Essas variaveis, Por exemplo $linha['H_Atual'] das que estao dentro do While

Nao tem aspas simples dentro do colchetes. Ela só sao necessarias quando estao fora de uma aspas duplas. No caso ae, no echo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conseguir compreender um pouco o que vcs esta querendo passar! Mas não 100%.

Eu sei que fiz algo de errado, so não sei o que!!!

 

Você colocou o while depois de ter liberado a consulta, o while deve estar dentro do if que verifica se a consulta é válida, substituindo o //...

 

<?php
//Conectando com o banco de dados.
include ( "conectar.php" );

$pagina = & $_GET[ 'pagina' ];
$total = 15;
$result = null;
$numrows = 0;

$sql = sprintf( 'SELECT * FROM dados ORDER BY ID_dados DESC LIMIT %d,%d' , $pagina , $total );

if ( $result = mysql_query( $sql ) ){
$numrows = mysql_num_rows( $result ); //Recuperamos o total de registros da consulta atual

while ( $linha = mysql_fetch_array( $result ) ){
echo '<b>Autor:</b>',$linha['Resp'],PHP_EOL;
echo '<b>Horário:</b>',$linha['H_Atual'],PHP_EOL;
echo '<b>Data:</b>',$linha['D_Atual'],PHP_EOL;
echo '<b>Registro:</b>',$linha['Reg'],PHP_EOL;
echo '<span style="font-size:10px"><b>Validado pelo Sistema:</b></span>',PHP_EOL;
echo '<hr>';
}

mysql_free_result( $result ); //Liberamos o resultado
}

/**
* Se o número de linhas for igual ao total estipulado então é provável que tenhamos uma próxima página
*/
if ( $numrows == $total )
printf( '<a href="%s?pagina=%d">Próximo</a>' , $_SERVER[ 'PHP_SELF' ] , $pagina + $total );

/**
* Se a página atual menos o total de registros for maior que 0 então temos uma página anterior
*/
if ( $pagina - $total >= 0 )
printf( '<a href="%s?pagina=%d">Anterior</a>' , $_SERVER[ 'PHP_SELF' ] , $pagina - $total );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você colocou o while depois de ter liberado a consulta, o while deve estar dentro do if que verifica se a consulta é válida, substituindo o //...

 

Vossa Eminência,

 

Agradeço pela explicação magnifica que o Sr. passou nesse tópico.

 

Agradeço a todos (mexicanox,Welblade, Dee) pela grande ajuda que tenham me dado. São pessoas como vcs que fazem que o forum fique cada vez mais agradevél de se participar.

 

Parabêns!!!

Obrigado mais uma vez!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.