MaziN Postado Março 12, 2010 Denunciar Share Postado Março 12, 2010 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 DADOSwhile($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 DADOwhile($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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Linneker Postado Março 12, 2010 Denunciar Share Postado Março 12, 2010 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Norivan Oliveira Postado Março 12, 2010 Denunciar Share Postado Março 12, 2010 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Linneker Postado Março 12, 2010 Denunciar Share Postado Março 12, 2010 Norivan deu uma excelente saida!Obrigado Norivan pela melhor reposta após a minha! Melhora o entendimento dos membros! =DProcura 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!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Toze Postado Março 14, 2010 Denunciar Share Postado Março 14, 2010 (editado) so explicando o que acontece nos whilesresultado 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 $resultadoquando entra pela segunda vez a segunda linha de resultado ir ser trasferida pra variavel $linha e removida da variavel $resultado esquecida liberando memoriae 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 Março 14, 2010 por Toze Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
MaziN
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:
Existe algum problema em usar esse session?
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.