Ir para conteúdo
Fórum Script Brasil
  • 0

Erro ao exibir dados


MaziN

Pergunta

Vejam os destaques em vermelho. Existe alguma explicacao para um while funcionar e outro não?

Na verdade não aparece nenhum erro, simplesmente não mostra os dados....

<HTML>

<BODY>

<form>

<?php

$con = mysql_connect("localhost", "root", "");

if($con){

echo("conexão efetuada com sucesso"."<br>"."<br>"."<br>");

}else{

echo("Erro na conexão com o banco de dados");

}

if (mysql_select_db("index_site",$con)){

$resultado = mysql_query("select * from noticias");

}else{

echo("O banco de dados não pode ser selecionado.");

}

// ESTE WHILE FUNCIONA! MOSTRA TODOS OS DADOS

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

echo($linha["id"]." - ".$linha["titulo"]." - ".$linha["noticia"]." - ".$linha["data"]." - ".$linha["hora"]."<br>");

}

?>

<br>

<br>

Text

<br>

<br>

<?php

// ESTE WHILE não FUNCIONA! não MOSTRA NENHUM DADO

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

echo($linha["id]." - ".$linha["titulo"]." - ".$linha["noticia"]." - ".$linha["data"]." - ".$linha["hora"]."<br>");

}

?>

</form>

</BODY>

Pesquisando eu encontrei algo não sei se é a solucao... O uso do SESSION.

Testando um outro codigo funcionou:

<html>
<body>

<?php
session_start();
$_SESSION['VAR'] = 1;
echo "VARIAVEL = ". $_SESSION['VAR'];
?>
<br>
<br>
<br>
<?php
echo "VARIAVEL = ". $_SESSION['VAR'];
?>

</body>
</html>

Existe algum problema em usar esse session?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Não exite nenhum problema em usar o Session.

Mas o estranho é que não precisaria do mesmo, os scripts para listagem estao exatamente iguais, não entendi porque não esta funcionando o segundo!

Session é usado mais para paineis para determinar se as sessoes foram abertas e fechadas, melhorando a segurança! ^^

Se falei alguma merda aqui podem me corrigir! =D

Link para o comentário
Compartilhar em outros sites

  • 0

aparente não existe problema, mas seria gambiarra o correto seria encontrar o motivo do porquer o segundo loop naos está imprimindo, se eu fosse você debugaria a varriável $resultado

Link para o comentário
Compartilhar em outros sites

  • 0

Norivan deu uma excelente saida!

Obrigado Norivan pela melhor reposta após a minha! Melhora o entendimento dos membros! =D

Procura repitir tudo e etc, essa sua classe de conexão também, está meio medieval! ^^

começa a usar essa aqui:

<?php
/************************************************************************************
**        CLASSE EM PHP, QUE FAZ A CONEXÃO COM O BANCO DE DADOS MySQL
**        
**        DESENVOLVIDO POR: LINNEKER ROQUE
*************************************************************************************/

abstract class Conexao{
    
    protected $host, $user, $pass, $dba, $conn, $sql, $qr, $data, $status, $totalFields, $error;
    
    public function __construct(){
        $this->host = "localhost";      // Local do Servidor MySQL
        $this->user = "root";      // Usuário de Acesso
                    $this->pass = "";      // Senha do Usuário
        $this->dba = "script_brasil";      // Nome da DB, no caso definida como 'script_brasil'
        self::connect();    
    }
    
    protected function connect(){
        $this->conn = @mysql_connect($this->host, $this->user, $this->pass) or die 
                                                    ("<b><center>Erro ao acessar o banco de dados </b></center><br />".mysql_error());
        $this->dba = @mysql_select_db($this->dba) or die 
                                                ("<b><center>Erro ao selecionar o banco de dados: </b></center><br />".mysql_error());
    }
    
    protected function execSQL($sql){
        $this->qr = @mysql_query($sql) or die ("<b><center>Erro ao Executar a Query: $sql - </b></center><br />".mysql_error());
        return $this->qr;
    }
    
    protected function listQr($qr){
        $this->data = @mysql_fetch_assoc($qr);
        return $this->data;
    }
    
    protected function countData($qr){
        $this->totalFields = @mysql_num_rows($qr);
        return $this->totalFields;
    }
}
?>

Tu cria uma página só com essa classe, com um nome qualquer, exemplo "conexao.php", e é só instanciar ela nas outras páginas!

ai tu já sabe: require_once ou include_once.

Abraço!!!

Link para o comentário
Compartilhar em outros sites

  • 0

so explicando o que acontece nos whiles

resultado do select esta na variavel $resultado.

assim que entra no primeiro while pela primeira vez,

a primeira linha de resultado sera trasferida pra variavel $linha e sera removida da variavel $resultado

quando entra pela segunda vez a segunda linha de resultado ir ser trasferida pra variavel $linha e removida da variavel $resultado esquecida liberando memoria

e assim sucessivamente, ate descarregar todo resultado da query ou seja, no fim do while a variavel $resultado é simplismente null, nem entrando no segundo while.

não pensei em uma solucao logica agora,

mais uma gambiarra simples é voce colocar antes do primeiro while

$resultado2 = $resultado;
e no segundo while voce colocar
while($linha = mysql_fetch_array($resultado2)){

espero ter ajudado

Editado por Toze
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...