lote14 0 Denunciar post Postado Julho 10, 2011 Oi galera, legal? Bom, é o seguinte: Tenho este "WHILE" que lista dados de uma determinada categoria, o que seleciona a categoria é o códido que vem através de um link de outra página. <a href="piadas.php?id_categoria=<?php echo $rs['id_categorias'];?>"><?php echo $rs['nome_categorias'];?> (<?php echo $rs['conta'];?>)</a> e o WHILE que está em outra página: <div id="content_conteudo_piadas"> <?php $id_categoria=$_GET['id_categoria']; echo $id_categoria; $sql = mysql_query("SELECT * FROM piadas,categorias,usuarios WHERE piadas.id_categorias=categorias.id_categorias AND piadas.id_usuarios=usuarios.id_usuarios AND piadas.id_categorias=".$id_categoria." ;") or die(mysql_error()); $rs = mysql_fetch_array($sql);?> <h3>Piadas de <?php echo $rs['nome_categorias'];?></h3> <?php while ($rs = mysql_fetch_array($sql)) { ?> <ul> <li class="foto">foto</li> <li class="piada"><a href="detalhe_piadas.php?id_piada=<?php echo $rs['id_piadas'];?>"><?php echo $rs['titulo_piadas'];?></a><br /> <span class="subtitulo">Piada enviada por <?php echo $rs['apelido_usuarios'];?> em 12/12/2011, recebeu 93 votos</span> </li> </ul> <?php } ?> </div><!--content piadas--> </div><!--content conteudo piadas--> Qual é o problema deste WHILE, ele não exibe todos selecionados pelo "$id_categoria", não dá erro apenas não exibe todos. Ex: o id_categoria=7 tem 5 registros mas apenas mostra 2 registros. o id_categoria=8 tem 1 registros mas não mostra nenhum registro. Será que estou comentendo algum erro de sintaxe que não estou percebendo, me ajudem! aguardo... P.S: Esqueci de dizer. Quando eu retiro o "while ($rs = mysql_fetch_array($sql))" ele exibe normalmente, mas apenas o primeiro registro de cada categoria, sem a repetição do WHILE. Compartilhar este post Link para o post Compartilhar em outros sites
foxlife 0 Denunciar post Postado Julho 10, 2011 amigo você está usando dois array ali n pode *-* Compartilhar este post Link para o post Compartilhar em outros sites
Tribb 0 Denunciar post Postado Julho 10, 2011 http://php.net/manual/pt_BR/function.mysql-fetch-array.php Utilização correta. Porque não usa o mysql_fetch_row. Compartilhar este post Link para o post Compartilhar em outros sites
lote14 0 Denunciar post Postado Julho 10, 2011 Beleza! retirei o primeiro "$rs = mysql_fetch_array($sql);" mas como exibo registro do banco fora deste "WHILE". Ex: <h3>Piadas de <?php echo $rs['nome_categorias'];?></h3> Compartilhar este post Link para o post Compartilhar em outros sites
Shison 0 Denunciar post Postado Julho 10, 2011 hehe tem de rever isso aí. Cada vez q você chama o "mysql_fetch_array" um registro da sua lista de resultado vai pro brejo, ou seja, ele retorna um vetor com os dados e move o ponteiro na lista de resultados. Quando você usa $rs = mysql_fetch_array($sql);?> <h3>Piadas de <?php echo $rs['nome_categorias'];?></h3> você já pegou um registro, então invés de mostrar os outros dados/campos do registro, você inicia um loop requisitando novo vetor de resultado.. while ($rs = mysql_fetch_array($sql)) Neste ponto você já está perdendo pelo menos um registro.. Coloque tudo dentro do mesmo loop, ou então faça uma consulta anterior para retornar somente os dados da categoria, uma vez que é a mesma para todos os registros do loop e não precisa replicar os dados através do join. Compartilhar este post Link para o post Compartilhar em outros sites
lote14 0 Denunciar post Postado Julho 10, 2011 Se eu colocar o "<h3>Piadas de <?php echo $rs['nome_categorias'];?></h3>" dentro do loop o nome da categoria irá se repetir em todos os registros. Realmente terei que fazer outro SELECT? Não dá para aproveitar este mesmo select, fora do while. Depois disto: $rs = mysql_fetch_array($sql);?> <h3>Piadas de <?php echo $rs['nome_categorias'];?></h3> O cursor do recordset vai para o último registro, certo? Tem como eu após este código e antes do WHILE posicionar o cursor novamente para o início do recordset e ai sim fazer o WHILE rodar em todos os registros do banco novamente? No Asp basta apenas fazer isto: set rs = Conn.Execute("Select bla bla bla") response.write rs.Fields("nome_categoria")'pego o nome da categoria while not rs.EOF %> E aqui colocar os registros que quero que repita <% rs.MoveNext wend rs.Close set rs = Nothing No PHP não consigo fazer algo parecido? Compartilhar este post Link para o post Compartilhar em outros sites
rafael bandeira 0 Denunciar post Postado Setembro 12, 2014 está acontecendo algo parecido e não consigo resolver alguém pode me ajudar? veja isso. if($relatorio==true){ for($contador = 0; $contador < $totalRows_relatorio; $contador++){ $linha = mysql_fetch_array($relatorio); $myArr=array($linha['nome'],$linha['hora_logon'],$linha['hora_logout'],$linha['pausa_entrada'], $linha['pausa_saida'],$linha['tipo_pausa'], $linha['duracao_pausa'], $linha['desc']); $excel->writeLine($myArr); está perdendo um registro. Compartilhar este post Link para o post Compartilhar em outros sites
rafael bandeira 0 Denunciar post Postado Setembro 12, 2014 bom pessoal consegui resolver esse problema usado o do: if($relatorio==true){ do { $myArr=array($row_relatorio['nome'],$row_relatorio['hora_logon'],$row_relatorio['hora_logout'],$row_relatorio['pausa_entrada'], $row_relatorio['pausa_saida'],$row_relatorio['tipo_pausa'], $row_relatorio['duracao_pausa'], $row_relatorio['desc']); $excel->writeLine($myArr); }while ($row_relatorio = mysql_fetch_assoc($relatorio)); Compartilhar este post Link para o post Compartilhar em outros sites