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

Multiplicação de dados na recuperação de dados do banco.


Vieirate

Pergunta

Vou procurar explicar o que esta acontecendo. Tenho o seguinte código:

<table>
<tr>
<th>Nome</th>
<th>Cidade</th>
<th>Data Rec. Venc.</th>
<th>Previsão</th>
<th>Marcado</th>
<th>Ed.</th>
<tr>
<?php
$sel_marcado = "SELECT * FROM tab_marcado";
$exec_sel_marcado = mysql_num_rows(mysql_query($sel_marcado));

if ($exec_sel_marcado <= 0) {

$reciclagens = "SELECT * FROM tab_reciclagem WHERE num_ativo = '1' AND num_marcado = '1'";

} else {

$reciclagens = "SELECT * FROM tab_reciclagem, tab_marcado WHERE num_ativo = '1' AND num_marcado = '1' ORDER BY dt_marcado_inicio ASC";

}

$exec_reciclagens = mysql_query($reciclagens);

while ($reciclagens = mysql_fetch_array($exec_reciclagens)) {

$id_reciclagem = $reciclagens['id_reciclagem'];
$num_cidade = $reciclagens['num_cidade'];
$cidade = "SELECT * FROM tab_cidade WHERE id_cidade = '$num_cidade'";
$exec_cidade = mysql_query($cidade);
$cidade = mysql_fetch_array($exec_cidade);

$dt_rec_venc = $reciclagens['dt_rec_venc'];
$dt_rec_venc_br = substr($dt_rec_venc,8,2) . "/" . substr($dt_rec_venc,5,2) . "/" . substr($dt_rec_venc,0,4);

$dt_rec_prev = $reciclagens['dt_rec_prev'];
$dt_rec_prev_br = substr($dt_rec_prev,5,2) . "/" . substr($dt_rec_prev,0,4);



?>
<tr>
<td><?php echo $reciclagens['str_nome']; ?></td>
<td><?php echo $cidade['str_cidade']; ?></td>
<td><?php echo $dt_rec_venc_br; ?></td>
<td><?php echo $dt_rec_prev_br; ?></td>
<td>
<?php
$marcado = "SELECT * FROM tab_marcado WHERE id_reciclagem_marc = '$id_reciclagem'";
$exec_marcado = mysql_query($marcado);
$marcado = mysql_fetch_array($exec_marcado);
if ($marcado == "") {
?>
<form action="reciclagem_marcada.php" method="POST">
<input type="text" name="dt_marcada_inicio" size="8" onkeypress="DataHora(event, this)" maxlength="10"> à
<input type="text" name="dt_marcada_fim" size="8" onkeypress="DataHora(event, this)" maxlength="10">
<input type="hidden" name="id_rec_marcada" value="<?php echo $id_reciclagem; ?>">
<input type="submit" value="ok">
</form>
<?php
} else {
$rec_dt_marcado_inicio = $marcado['dt_marcado_inicio'];
$rec_dt_marcado_inicio_br = substr($rec_dt_marcado_inicio,8,2) . "/" . substr($rec_dt_marcado_inicio,5,2) . "/" . substr($rec_dt_marcado_inicio,0,4);
$rec_dt_marcado_fim = $marcado['dt_marcado_fim'];
$rec_dt_marcado_fim_br = substr($rec_dt_marcado_fim,8,2) . "/" . substr($rec_dt_marcado_fim,5,2) . "/" . substr($rec_dt_marcado_fim,0,4);

echo $rec_dt_marcado_inicio_br . " à " . $rec_dt_marcado_fim_br;
}
?>
</td>
<td><a href="editar_reciclagem_marcada.php?id=<?php echo $reciclagens['id_reciclagem']; ?>&marcada=1"><img src="images/btn_editar.png" border="0" width="16" height="16"></a></td>
</tr>
<?php } ?>

</table>

Como podem notar no código $reciclagens = "SELECT * FROM tab_reciclagem, tab_marcado WHERE num_ativo = '1' AND num_marcado = '1' ORDER BY dt_marcado_inicio ASC"; eu pego informações de 2 tabelas com algumas condições e faço o loop com o while para aparecer todos os dados do select. O problema é que ele esta me retornando várias vezes um mesmo registro, por exemplo, se tem 6 registros na tab_marcado ele vai me retornar 6 vezes o mesmo dado da tab_reciclagem para depois ir para o próximo id.

Espero que eu possa ter me expressado bem. Alguém sabe aonde esta o erro?

Grato

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

toda sua consulta está dentro de um outro while..

Ele vai repetir a consulta e consequenetemente o resultado o número de vezes carregado no primeiro while.

Precisa reoorganizar seu código.

Evite abrir e fechar o php tantas vezes no mesmo código.

quando precisar inserir html dentro do codigo php utilize o comando echo.

ex.: <td>teste</td> = echo "<td>teste</td>";

Se precisar usar aspas coloque uma contra barra antes das aspas do html

ex.: <td><span style="titulo">teste</span></td>

fica assim:

echo "<td><span style=\"titulo\">teste</span></td>";

abrax

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,2k
    • Posts
      652k
×
×
  • Criar Novo...