Ir para conteúdo

POWERED BY:

Arquivado

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

alexfernandosilva

Consulta de Dados vindos do banco separados por virgula

Recommended Posts

Prezados,

 

Não sou precisamente da area de programação, nossa área é gráfica, mas temos um cliente na empresa que não podemos negar serviços, e como tinhamos um programador frelance, aceitamos fazer o site. Só que o programador que começou o processo simplesmente pegou sua grana e sumiu. Não temos ninguém no momento e não temos orçamento para contratação de outro. Como já fiz algumas coisas em prog. (muito poucas) resolvi assumir e terminar. Tudo estava muito bem, consegui corrigir algumas coisas e dar andamento ao projeto, mas surgiu um problema que até acredito quem conhece bem o asp classic nem se abalaria, mas eu estou sofrendo há cerca de uma semana. Já pesquisei em todos os sites possiveis e revirei o forum daqui, não encontrando nada similiar.

 

Teho um bando de dados de livros (mysql).

e precisamente uma tabela livro, onde existem algumas colunas: nome, sinopse, personagens principais, etc. Há uma coluna específica que vai captar várias informações, é a coluna assunto. Nela entrarão apenas os id's da tabela assunto. E alguns livros podem ter mais de um assunto, suspense e policial por exemplo. Esses dados estão gravados na tabela e separados por virgula. Consigo gravar normalmente no banco, mas na hora de ler na descrição total do livro, é onde acontecem os erros.

 

O certo seria o select ler todos os dados, o código ficou assim:

 

<%
Set RS2 = Server.CreateObject( "ADODB.Recordset" )
RS2.ActiveConnection = conn
RS2.open "SELECT * FROM tema WHERE id='" & rs("id_tema") & "'"

%>
<strong>Tema</strong><br />

<% if not rs4.eof then
while not rs4.eof %>

<%=rs2("nome")%><br><br>

<%rs2.Movenext
wend
end if%>

 

Como disse acima, não sou profissional de programação estou bem longe disso, mas acreditei que esse seria o codigo correto, ele deveria ler e printar na tela o nome de cada assunto. O que ele faz, mas apenas o id antes da virgula e ignora o restante.

 

Preciso fazer algo que lembre os marcadores dos blogs, com cada assunto podendo ser clicado em separado e gerando um link para todos os livros que contem esse assunto.

 

Prezados, preciso saber qualo tipo de comando devo usar para corrigir esse erro. Espero que possam me ajudar e se tiver um tópico com assunto semelhante, por favor me perdoem, pois realmente procurei bastante mas nada encontrei.

 

Att,

 

 

Alex

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

joga eles num array e depois usa o SLPIT para separar, tendo como caracter delimitador o ";"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado amigo Xanburzum,

 

Meu dilema agora é criar essa array, mas volto a procurar na internet. Ficará muito facil agora que sei o que devo procurar. Vou fazer os testes e posto o resultado ok?

Mais uma vez muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde,

 

Tentei criar uma array conforme li em alguns tópicos aqui.

Eis o código:

 

<%
sql = "select * from tema WHERE id='" & rs("id_tema") & "' order by id desc"
set listar = Conn.Execute(sql)


dim nomes

while not listar.eof

nomes = nomes & listar("nome") & ","
listar.movenext
wend




nomes = split(nomes, ",", -1, 1)

response.write nomes(0)


%>

 

Mas continuo com o mesmo problema, ele somente acha a primeira informação antes da virgula e ignora o restante.

 

Informações dentro da tabela: 2,1 (Esses são os id's dos assuntos: 2.Matemátima e 1.Didático)

Deveria parecer os dois nomes dos assuntos e somente aparece Matemática.

O que estou fazendo de errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Alex ele só aparece a primeira opção pois esta selecionando a primeira posição do teu array, neste caso a posição "0" (zero), se voce mudar para "1" ele irá pegar a segunda opção após a virgula e assim por diante neste trecho:

response.write nomes(0)
O "split" serve para transformar sua string em um array. Quando informamos um caractere separador (no exemplo foi a vírgula), o "split" transformará sua string em várias strings usando como delimitador este caractere, então a cada "vírgula" encontrada, será armazenado uma posição com o valor até ali.
Você pode usar outro caractere ou até um espaço em branco, mas o ideal é que seja um caractere que não esteja presente na string base para não conflitar. Para melhor entendimento um array seria isso:
["uva","pera","maçã","salada mista"]
E estas seriam as posições de cada item do array conforme o caractere separador:
0 = uva
1 = pera
2 = maçã
3 = salada mista
Depois você pode trabalhar essas informações de várias maneiras. No seu caso como são apenas dois valores (duas posições) e já sabemos a posição de cada valor, jogamos direto:
No asp : posição 0 igual ao primeiro valor do array nomes(0)
a explicação acima foi uma forma didática mais fácil que li sobre o assunto dada pelo membro public2004
Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá BiaKelly, o meu muito obrigada mesmo para você. De uma maneira super didática me explicou e ficou realmente entendido. Porem, meu problema permanecia. Mesmo tendo feito todas as alterações e seguindo a lógica que você passou não consegui fazer funcionar. Aí resolvi conversar pessoalmente com o cliente que ainda ciente da pilantragem do desenvolvedor. E ele vai esperar que nós arranjemos um novo web para fazer essa parte, já deixei o mais funcional possivel e o restante faremos quando tivermos alguém honesto e competente para realizar.

Tentei o máximo, mas não deu mesmo. Não estou feliz com isso, mas não vejo outra maneira.

Mas ainda assim, agradeço imensamente os seus esforços e do amigo Xanburzum.

 

Mais que obrigado pela ajuda, agradeço também a atenção.

 

Valeu a todos!

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.