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

loop dentro de loop


natbe

Pergunta

Pessoal,

Tenho um faq no banco onde cadastro a pergunta e a resposta. Tem algumas respostas muito compridas que estão divididas em 2 ou 3 registros no banco.

Queria listar na página a primeira pergunta e tenha um loop para juntar as respostas da mesma pergunta e só depois passe para a próxima pergunta.

Fiz assim:

<%

Set rstemp = Server.CreateObject("ADODB.Recordset")

Set rstemp.ActiveConnection = con

str="SELECT * FROM site WHERE item='dúvidas' order by pergunta"

rstemp.Open str

registro=0

perg = rstemp("pergunta")

While Not rstemp.EOF

Set rstemp1 = Server.CreateObject("ADODB.Recordset")

Set rstemp1.ActiveConnection = con

str1="SELECT * FROM site WHERE pergunta='"&perg&"' order by id"

rstemp1.Open str1

Response.write "<dt><p>" & rstemp("pergunta") & "</p></dt>"

Response.write "<dd>"

do while not rstemp1.eof

Response.write rstemp1("texto")

rstemp1.MoveNext

loop

rstemp1.close

set rstemp1 = nothing

Response.write "</dd>"

registro = registro +1

rstemp.MoveNext

Wend

%>

O problema é que ele está imprimindo 3 vezes a primeira pergunta e todas as demais perguntas com a resposta da primeira pergunta, ou seja, no primeiro loop ele consegue ir para o próximo registro, mas, no loop interno ele não vai, ele fica empacado...

Alguma sugestão de como implementar isso?

Grata!

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

6 respostass a esta questão

Posts Recomendados

  • 0

<%

Set rstemp = Server.CreateObject("ADODB.Recordset")

Set rstemp.ActiveConnection = con

str="SELECT * FROM site WHERE item='dúvidas' order by pergunta"

rstemp.Open str

registro=0

perg = rstemp("pergunta") 'AQUI ELE DEVERIA PEGAR ID se sua tabela pergunta tem relacionamento com a tabela respostas

While Not rstemp.EOF

Set rstemp1 = Server.CreateObject("ADODB.Recordset")

Set rstemp1.ActiveConnection = con

str1="SELECT * FROM site WHERE pergunta='"&perg&"' order by id"

rstemp1.Open str1

Response.write "<dt><p>" & rstemp("pergunta") & "</p></dt>"

Response.write "<dd>"

do while not rstemp1.eof

Response.write rstemp1("texto")

rstemp1.MoveNext

loop

rstemp1.close

set rstemp1 = nothing

Response.write "</dd>"

registro = registro +1

rstemp.MoveNext

Wend

%>

Link para o comentário
Compartilhar em outros sites

  • 0

Na realidade acabei de resolver!!

Foi só tirar a variável perg e colocar o rstemp("pergunta") no código...

Mesmo assim agradeço as respostas!!!

While Not rstemp.EOF

Set rstemp1 = Server.CreateObject("ADODB.Recordset")

Set rstemp1.ActiveConnection = con

str1="SELECT * FROM site_portugues WHERE titulo='conta margem' and pergunta='"&rstemp("pergunta")&"' order by id"

rstemp1.Open str1

Response.write "<dt><p>" & rstemp("pergunta") & "</p></dt>"

Response.write "<dd>"

do while not rstemp1.eof

Response.write rstemp1("texto")

rstemp1.MoveNext

loop

rstemp1.close

set rstemp1 = nothing

Response.write "</dd>"

registro = registro +1

rstemp.MoveNext

Wend

Link para o comentário
Compartilhar em outros sites

  • 0

meu problema agora é que se tem no banco duas perguntas iguais, ele imprime as duas perguntas. Inseri o loop dentro de outro para concatenar as respostas.

Como faço para ele imprimir apenas uma ocorrência? Alguma idéia?

Link para o comentário
Compartilhar em outros sites

  • 0

Não, é assim:

Tenho um faq.

Nesse faq tenho várias perguntas e respostas que estão guardadas no BD.

Tem pergunta que a resposta está dividida em alguns registros.

O que fiz no código acima foi imprimir tudo. O segundo loop junta as respostas de uma mesma pergunta.

O problema é que, suponha que a mesma pergunta tenha 3 registros de respostas. Eu estou imprimindo as respostas via loop, aí aparece na tela 3x a mesma pergunta com a resposta completa. Dessa forma, queria imprimir somente uma ocorrência.

Grata!

como assim apenas uma?

digamos que a pergunta tenha 4 respostas tu quer mostrar somente a primeira?

Att

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