iMasters Fóruns: [Resolvido] Relatório PHP + MySQL - iMasters Fóruns

Ir para

Página 1 de 1
  • Novo tópico
  • Responder

[Resolvido] Relatório PHP + MySQL os 15 ultimos registros.

#1 Membro offline   Ferreira Felipe Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 159
  • Cadastrado: 24-março 05
  • Sexo:Masculino
  • Localização:Rio de Janeiro

Postou 29 outubro 2009 - 13:04

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.

#2 Membro offline   William Bruno Ícone

  • Ícone
  • Grupo: Moderadores
  • Posts: 5681
  • Cadastrado: 08-janeiro 08
  • Sexo:Masculino
  • Localização:São Paulo - SP

Postou 29 outubro 2009 - 13:09

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.

#3 Membro offline   Ferreira Felipe Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 159
  • Cadastrado: 24-março 05
  • Sexo:Masculino
  • Localização:Rio de Janeiro

Postou 29 outubro 2009 - 13:16

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!

#4 Membro offline   mexicanox Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 217
  • Cadastrado: 27-maio 07

Postou 29 outubro 2009 - 13:17

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

#5 Membro offline   Welblade Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 5
  • Cadastrado: 27-outubro 09

Postou 29 outubro 2009 - 13:19

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']}";


#6 Membro offline   Ferreira Felipe Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 159
  • Cadastrado: 24-março 05
  • Sexo:Masculino
  • Localização:Rio de Janeiro

Postou 31 outubro 2009 - 06:52

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!

#7 Membro online   João Batista Neto Ícone

  • Verschränkung
  • Ícone
  • Grupo: Moderadores Trainee
  • Posts: 872
  • Cadastrado: 03-janeiro 09
  • Sexo:Masculino
  • Localização:Franca/SP

Postou 31 outubro 2009 - 07:04

Ver postFerreira Felipe, em 31 outubro 2009 - 06:52 , disse:

<?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";


#8 Membro offline   Ferreira Felipe Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 159
  • Cadastrado: 24-março 05
  • Sexo:Masculino
  • Localização:Rio de Janeiro

Postou 31 outubro 2009 - 07:14

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!!

#9 Membro online   João Batista Neto Ícone

  • Verschränkung
  • Ícone
  • Grupo: Moderadores Trainee
  • Posts: 872
  • Cadastrado: 03-janeiro 09
  • Sexo:Masculino
  • Localização:Franca/SP

Postou 31 outubro 2009 - 07:34

Ver postFerreira Felipe, em 31 outubro 2009 - 07:14 , disse:

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 );


#10 Membro offline   Ferreira Felipe Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 159
  • Cadastrado: 24-março 05
  • Sexo:Masculino
  • Localização:Rio de Janeiro

Postou 31 outubro 2009 - 08:06

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!

#11 Membro offline   Dee Ícone

  • Dee Souza =D
  • Ícone
  • Grupo: Membros
  • Posts: 610
  • Cadastrado: 20-junho 09
  • Sexo:Masculino
  • Localização:Piracicaba

Postou 31 outubro 2009 - 08:13

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.

#12 Membro online   João Batista Neto Ícone

  • Verschränkung
  • Ícone
  • Grupo: Moderadores Trainee
  • Posts: 872
  • Cadastrado: 03-janeiro 09
  • Sexo:Masculino
  • Localização:Franca/SP

Postou 31 outubro 2009 - 08:13

Ver postFerreira Felipe, em 31 outubro 2009 - 08:06 , disse:

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 );


#13 Membro offline   Ferreira Felipe Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 159
  • Cadastrado: 24-março 05
  • Sexo:Masculino
  • Localização:Rio de Janeiro

Postou 31 outubro 2009 - 08:24

Ver postJoão Batista Neto, em 31 outubro 2009 - 08:13 , disse:

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!

Página 1 de 1
  • Novo tópico
  • Responder

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)