Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luan_alves

looping for que traz resultado a mais

Recommended Posts

bom dia a todos, estou enfrentando o seguinte problema, eu fiz um select com left join para trazer alguns resultados do db, até aí tudo bem, bom eu utilizei o left join, porque se a tabela subatividade não estiver nenhum conteúdo então pelo menos o resultado da tabela atividade será mostrado, até aí tudo bem, porem o meu for, está trazendo um campo a mais no resultado, tipo eu tenho 3 subatividades vinculadas a minha atividade, então ira aparecer os 3 campos das subatividades porem um deles esta em branco, voces poderiam me ajudar?

obs, no meio do escript tem um if para verificar se existe o id da subatividade se não existir o scrip nem continua.

segue o meu scrip

 

$atividade = $QuerySQL->executeQuery("select atividades.id,atividades.titulo,atividades.exibir, subatividades.* from atividades left join subatividades on subatividades.id_atividade = atividades.id where atividades.id = $id");// faz o select buscando a atividades
$regAtividade = mysql_fetch_array($atividade);
$exibir = $regAtividade[2];// exibir da atividade
?>
<p id="<? echo$regAtividade[0]?>">Título: <? echo$regAtividade[1]?> </p>
<div id="button_titulo">
   <?
   if($exibir == "sim")
   {
       ?>
       <p>Exibir: <input type="checkbox" id="check_<? echo$regAtividade[0]?>" onclick="seleciona_Titulo_Sub(<? echo$regAtividade[0]?>)" checked/></p>
       <?
   }
   else
   {
       ?>
       <p>Exibir:<input type="checkbox" id="check_<? echo$regAtividade[0]?>" onclick="seleciona_Titulo_Sub(<? echo$regAtividade[0]?>)" /></p>
       <?
   }
   ?>
   <div class="centraliza">
       <div id="botao_<? echo$regAtividade[0]?>" class="esquerda"><input type="submit"  value="Editar" onclick="altera_Atividade(<? echo$regAtividade[0]?>);"></div><div class="direita"><input type="submit" value="Conteúdo" onclick="exibe_Cad_Titulo(<? echo $regAtividade[0] ?>)"/></div><div class="direita"><input type='submit' value='Excluir' onclick='excluir_Atividade(<? echo$regAtividade[0]?>);'></div>
   </div>
</div>
<br/>
<div id="conteudo_<? echo$regAtividade[0]?>" </div>
<?
$id_atividade = $regAtividade[4];
if (!$id_atividade == null)
{
   $linha = mysql_num_rows($atividade);
   if($linha>0)
   {
       for ($i=0; $i < $linha; $i++)
       {
           $reg = mysql_fetch_array($atividade);
           $exibir_Subatividade = $reg[7];
           ?>
           <!-- A partir daqui a subatividade começa a ser escrita -->
           <div id="conteudo_<? echo$reg[0]?>" class="conteudo_Sub_Titulo" >
               <div class="esquerda">
                   <div id='fotos'>
                       <img alt=""  src='atividades/fotos_atividades/<? echo $reg[3]?>.jpg'>
                   </div>
                   <br/>
                   <form action="atividades/model/upload_Atividades.php" id="form" name="form" method="post" enctype="multipart/form-data">
                       <p>Tamanho máximo de 2MB. JPEG.</p>
                       <input type="file" name="DfAnexo" /><br/>
                       <input name="submit" type="submit" value="Enviar"  />
                       <input type="hidden" name="id_atividade" id="id_atividade" value="<? echo $reg[3] ?>" />
                   </form>
               </div>
               <div id="button_titulo">
                   <p id="titulo_<? echo $reg[3]?>" >Título: <? echo $reg[5]?></p>
                   <?
                   if($exibir_Subatividade == "sim")
                   {
                       ?>
                       <p>Exibir: <input type="checkbox" id="check_<? echo$reg[3]?>" onclick="seleciona_Subtitulo(<? echo$reg[3]?>)" checked/></p>
                       <?
                   }
                   else
                   {
                       ?>
                       <p>Exibir:<input type="checkbox" id="check_<? echo$reg[3]?>" onclick="seleciona_Subtitulo(<? echo$reg[3]?>)" /></p>
                       <?
                   }
                   ?>
                   <p id="botao_<? echo $reg[3];?>" ><input type='submit' class='formbutton2' value='Editar' onclick='altera_Sub_Titulo(<?echo $reg[3]; ?>);'><input type='submit' value='Excluir' onclick='excluir_Subatividade(<?echo $reg[3]; ?>);'></p>
               </div>
               <br/>
               <p id="conteudo_<? echo $reg[3];?>">Conteudo: <? echo $reg[6]?></p>
           </div>
           <?
       }
   }
   }
   else
   {
       echo "Não tem Legendas Cadastradas!";
   }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o meu for, está trazendo um campo a mais no resultado, exemplo eu tenho 3 subatividades vinculadas a minha atividade, então ira aparecer os 3 campos das subatividades porem um deles esta em branco, sendo que era aparecer o conteudo não um campo em branco

Compartilhar este post


Link para o post
Compartilhar em outros sites

$atividade = $QuerySQL->executeQuery("select atividades.id,atividades.titulo,atividades.exibir, subatividades * from atividades left join subatividades on subatividades.id_atividade = atividades.id where atividades.id = $id");

 

tambem o mysql num rows vai pegar tudo que for retornado pela clausula .. tem certeza que presisa dele ai ?

 

você ta fazendo a contagem pra dar count no loop e exibir o resultado ?

 

tente o loop assim

 


<div id="conteudo_<? echo$regAtividade[0]?>" </div>
<?
$id_atividade = $regAtividade[4];
if (!$id_atividade == null)
{
   $linha = mysql_num_rows($atividade);
   if($linha>0)
   {
       for ($i=0; $i <= $linha; $i++)

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo eu estou fazendo a contagem das linhas para fazer o looping, porem antes de entrar no looping, eu verifico se tem alguma coisa na tabela subatividade, com o if

if (!$id_atividade == null)

, eu já havia feito isso o que voce informou e mesmo assim não funcionou

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este é uma query que traz o resultado nas duas tabelas

select atividades.id,atividades.titulo,atividades.exibir, subatividades.* from atividades left join subatividades on subatividades.id_atividade = atividades.id where atividades.id = 2

 

id titulo exibir id id_atividade subtitulo conteudo exibir data hora id_operador

2 werwqrwqer sdafasdfa 34242 sim 2 2 345345345 345353453 nao 2011-01-23 09:56:42 1

2 werwqrwqer sdafasdfa 34242 sim 3 2 dslkfjdlçfjçlk luan conteudo nao 2011-01-23 11:01:46 1

 

e aqui é a mesma query só que traz o resultado só do left join.

select atividades.id,atividades.titulo,atividades.exibir, subatividades.* from atividades left join subatividades on subatividades.id_atividade = atividades.id where atividades.id = 3

 

id titulo exibir id id_atividade subtitulo conteudo exibir data hora id_operador

3 bvcbccvbc nao

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é q quando você entra no loop aki

for ($i=0; $i < $linha; $i++)

você começa lendo a 2ª linha da sua query aki

$reg = mysql_fetch_array($atividade);

 

a 1ª linha da sua query está no array $regAtividade

 

$regAtividade = mysql_fetch_array($atividade);

Compartilhar este post


Link para o post
Compartilhar em outros sites

não é isso não, pois a linha

$regAtividade = mysql_fetch_array($atividade);

, não tinha e o problema já existia, esta linha só foi colocada para mim separar algumas informações

Compartilhar este post


Link para o post
Compartilhar em outros sites

cada vez q você chama a função mysql_fetch_array() uma linha é atribuida

 

experimenta ae, n testei

<?php
$atividade = $QuerySQL->executeQuery("select a.id,a.titulo, if( a.exibir = 'sim','checked', '') as exibir, s.* from atividades a left join subatividades s on s.id_atividade = a.id where a.id = $id");// faz o select buscando a atividades
$regAtividade = mysql_fetch_array($atividade) or die(mysql_error());

echo "<p id='{$regAtividade[0]}'>Título: {$regAtividade[1]} </p>
<div id='button_titulo'>
	<p>Exibir: <input type='checkbox' id='check_{$regAtividade['id']'} onclick='seleciona_Titulo_Sub({$regAtividade['id']})' {$regAtividade['exibir']}/></p>
	<div class='centraliza'>
		<div id='botao_{$regAtividade['id']}' class='esquerda'>
			<input type='submit' value='Editar' onclick='altera_Atividade({$regAtividade['id']})>
		</div>
		<div class='direita'>
			<input type='submit' value='Conteudo' onclick='exibe_Cad_Titulo({$regAtividade['id']})'/>
		</div>
		<div class='direita'>
			<input type='submit' value='Excluir' onclick='excluir_Atividade({$regAtividade['id']})'>
		</div>
	</div>
</div>
<br/>
<div id='conteudo_{$regAtividade['id']}'></div>"
if (!$regAtividade['id_atividade'] == null){
   echo "<div id='conteudo_{$regAtividade['id']}' class='conteudo_Sub_Titulo' >
           <div class='esquerda'>
               <div id='fotos'>
                   <img src='atividades/fotos_atividades/{$regAtividade[3]}.jpg'>
               </div>
               <br/>
               <form action='atividades/model/upload_Atividades.php' id='form' name='form' method='post' enctype='multipart/form-data'>
                   <p>Tamanho máximo de 2MB. JPEG.</p>
                   <input type='file' name='DfAnexo' /><br/>
                   <input name='submit' type='submit' value='Enviar'/>
                   <input type='hidden' name='id_atividade' id='id_atividade' value='{$regAtividade[3]}' />
               </form>
           </div>
           <div id='button_titulo'>
               <p id='titulo_{$regAtividade[3]}' >Título: {$regAtividade[5]}</p>";
               if($regAtividade[7] == 'sim')
                   echo "<p>Exibir:<input type='checkbox' id='check_{$regAtividade[3]}' onclick='seleciona_Subtitulo({$reg[3]})' checked/></p>";
               else
                   echo "<p>Exibir:<input type='checkbox' id='check_{$regAtividade[3]}' onclick='seleciona_Subtitulo({$regAtividade[3]})'/></p>";
			echo "<p id='botao_{$regAtividade[3]}'><input type='submit' class='formbutton2' value='Editar' onclick='altera_Sub_Titulo({$regAtividade[3]})'>
				<input type='submit' value='Excluir' onclick='excluir_Subatividade({$regAtividade[3]})'></p>
           </div>
           <br/>
           <p id='conteudo_{$regAtividade[3]}'>Conteudo: {$regAtividade[6]}</p>
       </div>";
    while($reg = mysql_fetch_array($atividade)){
           echo "<!-- A partir daqui a subatividade começa a ser escrita -->
			<div id='conteudo_{$reg[0]}' class='conteudo_Sub_Titulo' >
               <div class='esquerda'>
                   <div id='fotos'>
                       <img alt=''  src='atividades/fotos_atividades/{$reg[3]}.jpg'>
                   </div>
                   <br/>
                   <form action='atividades/model/upload_Atividades.php' id='form' name='form' method='post' enctype='multipart/form-data'>
                       <p>Tamanho máximo de 2MB. JPEG.</p>
                       <input type='file' name='DfAnexo' /><br/>
                       <input name='submit' type='submit' value='Enviar'  />
                       <input type='hidden' name='id_atividade' id='id_atividade' value='{$reg[3]}' />
                   </form>
               </div>
               <div id='button_titulo'>
                   <p id='titulo_{$reg[3]}' >Título: {$reg[5]}</p>";
                   if($reg[7] == 'sim')
                       echo "<p>Exibir: <input type='checkbox' id='check_{$reg[3]}' onclick='seleciona_Subtitulo({$reg[3]})' checked/></p>";
                   else
                       echo "<p>Exibir:<input type='checkbox' id='check_{$reg[3]}' onclick='seleciona_Subtitulo({$reg[3]})' /></p>";
                   echo "<p id='botao_{$reg[3]}' >
					<input type='submit' class='formbutton2' value='Editar' onclick='altera_Sub_Titulo({$reg[3]})'>
					<input type='submit' value='Excluir' onclick='excluir_Subatividade({$reg[3]})'></p>
				</div>
               <br/>
               <p id='conteudo_{$reg[3]}'>Conteudo: {$reg[6]}</p>
           </div>";            
       }
   }else   
       echo 'Não tem Legendas Cadastradas!';    
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.