Ir para conteúdo

POWERED BY:

Arquivado

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

Marcos Vinícius

Pegar várias linhas de tabela

Recommended Posts

Olá,

 

Estou tentando pegar várias linhas de uma tabela e gravá-las em outra, sendo que cada linha da tabela é separada de outra por vírgula e espaço.

 

Estou fazendo assim:

 

$consulta1 = mysql_query("Select * from categ_temp where user = '$user' "); while ( $dados1 = mysql_fetch_array($consulta1)){$subcateg = $dados1["subcateg"].","." ";}mysql_query ("UPDATE new_users SET subcategoria = '$subcateg' WHERE username = '$user'");

Se eu dou em echo do $subcateg aparece como eu quero:

 

subcateg1, subcateg2, subcateg3,

 

Mas qdo grava na tabela new_users, só grava a primeira, assim:

 

subcateg1,& nbsp

 

O campo que tá gravando na tab new_users é do tipo text

 

Também tentei com o "implode", mas não soube fazer.

 

O que será que tá errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o insert, não esta dentro do for.mas eu aconselho você a criar um insert, separando os "VALUES" ´por virgula(dentro do for), e no final do loop, você insere a string gerada no banco !Sacou!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Void,

 

Coloquei dentro tb mas não funcionou.

 

$consulta1 = mysql_query("Select * from categ_temp where user = '$user' "); while ( $dados1 = mysql_fetch_array($consulta1)){$subcateg = $dados1["subcateg"].","." ";mysql_query ("UPDATE new_users SET subcategoria = '$subcateg' WHERE username = '$user'");}

A idéia é a seguinte:

 

O usuário faz o cadastro e escolhe até 5 categorias e subcategorias. Essas categorias são gravadas numa tabela categ_temp

 

+----+-------+-------+------+---+

| id | nome | categ | subcateg |

+----+-------+-------+------+----+

| 1 | User1 | categ1 | subcateg1 |

+----+-------+-------+------+----+

| 2 | User1 | categ2 | subcateg2 |

+----+-------+-------+------+----+

| 3 | User1 | categ3 | subcateg3 |

+----+-------+-------+------+----+

.....

 

Depois do cadastro concluído, eu tenho que pegar essas categorias e subcateg e juntar em um só campo cada:

 

tabela Users

 

+----+---------+---------------------------+--------------------------------------+

| id | nome | categ | subcateg |

+----+-------+-----------------------------+---------------------------------------+

| 1 | User1 | categ1, categ2, categ3 | subcateg1, subcateg2, subcateg3 |

+----+---------+---------------------------+---------------------------------------+

 

Isso pq eu preciso fazer uma busca do tipo boolean nesses dois campos (categ e subcateg).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá tmferreira,A tabela new_user é criada qdo o user faz seu cadastro inicial. Após este cadastro ele é redirecinado pra outra página onde escolhe as categorias e subcategorias, até um limite que defini como 5.Ao fazer as escolhas, elas vão sendo cadastradas numa tabela categ_temp. Após este cadastro, essas categorias deveriam ser transferidas para o new_user, como descrevi abaixo e não estou conseguindo.Inicialmente eu pensava em fazer uma busca do tipo:"SELECT * FROM users WHERE MATCH(subcateg) AGAINST ($palavra' IN BOOLEAN MODE)";deste retorno eu selecionaria o user.Talvez tua opinião seja mais fácil, mesmo.Vou testar. ObrigadoMarcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

users somente dados inerentes ao usuário| id_user | nome | endereco |categorias| id_categ | descricao |users_categorias aqui será feito o relacionamento entre o usuários e suas categorias| id_user | id_categ |sub_categorias| id_sub_categ | id_categ | descricao |

Bom, pensando em perfomance, e não em armazenamento, eu acho desnecessário a entidade users_categorias. Sendo que, todos os usuários tem uma categoria, poderíamos então ter um campo na entidade users chamado id_categoria. Mas isso é bem relativo, temos que ver quais são as regras de negócio, ter um modelo conceitual e lógico da parada para analisarmos melhor ... []'s fui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tmferreira,Não entendi por que você fez essa observação.

Void :, os usuários podem ter até 5 categorias.

Tem algum problema naquela estrutura que o Void sugeriu?acho que mudaria aqui:users_categorias aqui será feito o relacionamento entre o usuários e suas categoriasde:| id_user | id_categ |para:| id_user | id_sub_categ |

Compartilhar este post


Link para o post
Compartilhar em outros sites

a tah. ai sim, pensando dessa forma a entidade esta correta ... realmente depende muito da regra de negócio da parada.

Agora que eu vi no post dele que o usuário pode ter até 5 categorias!

 

----edit----

 

 

Então, se realmente, o usuário possui 5 categorias, como foi descrito por você no tópico, neste caso a entidade associativa users_categoria esta correta ... pq se ela não existesse você teria ocorrencias duplicadas em sua entidade users

Compartilhar este post


Link para o post
Compartilhar em outros sites

É assim:categoria1 >> subcateg 1, 3, 6, 10categoria2 >> subcateg 2, 5, 7categoria3 >> subcateg 4, 8, 11Aí user escolhe num combobox a categoria. Abre as subcateg dessa categoria e ele escolhe a subcategEntão a subcategoria é associada a categoria, mas o user é associado a subcateg.user1 >> categ1 >>subcateg 3, 10user1 >> categ2 >> subcateg 5qdo vou fazer a busca interessa tanto categ qto subcateg, pois posso ter subcateg "outros" para mais de uma categoria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A busca não vai ficar mais complicada, assim?Ela deve ser assim:Quem vai buscar vai na página 'categoria', que abre página "sucategorias" daquela categoria.Seleciona a subcategoria que quer e busca, ou empresas ou produtos.Se empresas, então vai ter que fazer uma busca em subcategoria, outra busca em categoria, e aí retornar o user, da user_sub_categoria?Por isso eu tava colocando tudo no user. Achei que seria mais fácil

Compartilhar este post


Link para o post
Compartilhar em outros sites

na maioria das vezes, o mais fácil não é o mais correto, pense nisso!Isso é normalização de banco, a modelagem do thiago esta correta!Isso da uma discussão legal, um outro modo tb, menos interessante, e raramente utilizado é tornar os campos da tabela Users_categoria:| id_user | id_categ |em uma Pk composta, e uma FK em sub_categorias ... mas não aconselho!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso da uma discussão legal

É, já deu uma discussão legal. Pra mudar tudo que eu tava pensando em fazer e tudo que eu já tinha feito. Legal a ajuda de vcs. Vou fazer pra ver no que vai dar. Minha maior preocupação, tá na hora de buscar os usuários/produtos, mas acho que vai dar legal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não velho, isso é o de menos, seria preocupante construir os selects da forma que o banco estava modelado antes.Mas consultas com joins não tem segredo ... qq coisa é só postar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara... essa consulta tá pegando também.

 

Olha só como fiz:

 

include ("conexao.php");$re = mysql_query("SELECT categoria.categ_desc, subcateg.subcateg_descFROM (subcateg INNER JOIN users_subcateg ON subcateg.subcateg_id = users_subcateg.subcateg_id)INNER JOIN categ ON categoria.categ_id = subcateg.subcateg_categ_idINNER JOIN users_categ ON users_categ.categ_id = categoria.categ_id WHERE new_users.username = 'Login'");while ($i = mysql_fetch_array($re))$subcateg = $i["subcateg_desc"];$categ = $i["categ"];echo $categ ." ". $subcateg;
Claro que tem alguma coisa errada, pois tá dando erro na linha do while.

 

Editado

 

Essas são as tabelas

 

new_users

| users_id | nome | endereco |

 

categoria

| categ_id | categ_desc |

 

users_categ

| userid | categ_id |

 

subcateg

| subcateg_id | subcateg_id_categ | subcateg_desc |

 

users_subcateg

| users_id | subcateg_id |

Compartilhar este post


Link para o post
Compartilhar em outros sites

SE O ERRO FOR APENA NO WHILE É SO OS PARENTESESwhile ($i = mysql_fetch_array($re)){$subcateg = $i["subcateg_desc"];echo $categ ." ". $subcateg;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT categoria.categ_desc,INNER JOIN categ ON categoria.categ_id // onde esta esta tabela categ não seria categoria tambem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT categoria.categ_desc,INNER JOIN categ ON categoria.categ_id // onde esta esta tabela categ não seria categoria tambem.

você tem razão. Mas ainda não resolveu. Continua dando o erro na linha do while.Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

dando um up...

 

A questão é qto a fazer consulta com JOIN, tendo três tabelas. Tá retornando erro na linha do while:

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/noatacad/public_html/aula/teste.php on line 9

 

include ("conexao.php");$re = mysql_query("SELECT categoria.categ_desc, subcateg.subcateg_descFROM (subcateg INNER JOIN users_subcateg ON subcateg.subcateg_id = users_subcateg.subcateg_id)INNER JOIN categ ON categoria.categ_id = subcateg.subcateg_categ_idINNER JOIN users_categ ON users_categ.categ_id = categoria.categ_id WHERE new_users.username = 'Login'");while ($i = mysql_fetch_array($re)){$subcateg = $i["subcateg_desc"];$categ = $i["categ"];echo $categ ." ". $subcateg;}

Essas são as tabelas

 

new_users

| users_id | username | endereco |

 

categoria

| categ_id | categ_desc |

 

users_categ

| userid | categ_id |

 

subcateg

| subcateg_id | subcateg_id_categ | subcateg_desc |

 

users_subcateg

| users_id | subcateg_id |

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa a dica... Tinha um campo que tava com o nome errado.

 

Fiz umas mudanças e agora tá retornando tudo que tem nas tabelas e não tá selecionando pelo username.

 

O que pode ser?

 

<?phpinclude ("Connections/conexao.php");$re = mysql_query("SELECT categoria.categ_desc, subcateg.subcateg_desc, new_users.users_idFROM (new_users INNER JOIN subcateg INNER JOIN users_subcateg ON subcateg.subcateg_id = users_subcateg.subcateg_id)INNER JOIN categoria ON categoria.categ_id = subcateg.subcateg_id_categINNER JOIN users_categ ON users_categ.categ_id = categoria.categ_id WHERE new_users.username = 'Login2'")or die("erro: ".mysql_error());while ($i = mysql_fetch_array($re)){$subcateg = $i["subcateg_desc"];$categ = $i["categ_desc"];echo $categ ." ". $subcateg;}?>

Eu imagino que o problema esteja em:

 

new_users INNER JOIN subcateg INNER JOIN .... logo na segunda linha da query. Tentei de todas as formas mudar isto mas não consegui. Desta forma foi a única que retornou dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

da onde vem a variavel Login2new_users.username = 'Login2'")or die("erro: ".mysql_error());e note que ta errado na query new_users.username = '$Login2'")or die("erro: ".mysql_error());

Essa variável é criada qdo o usuário faz seu cadastro. Ela é gravada numa tabela chamada "new_users" e, pra pegar nessa página, gravo numa SESSION, passando pra variável $user. Como eu tô testando, em vez de preencher o cadastro toda vez, eu já deixei esse Login2 cadastrado como username e tirei a variável, cadastrando categorias e subcategorias pra esse username.

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.