Ir para conteúdo

POWERED BY:

Arquivado

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

juliano.ma

Agrupar strings de array

Recommended Posts

Olá amigos,

 

tenho uma tabela mysql com um dos campos assim:

 

 

id - sell //nome das colunas

1 - 10:20:30:40:50:60

2 - 20:60

3 - 10:50:30

4 - 200:300:40

 

 

eu preciso listar todos os itens da coluna "sell" mas de forma que as strings não se repitam.

 

olha o que eu tentei:

 

$item_array  = $linha["sell"];
$item_partes = explode(":", $item_array);

while (list($key, $val) = each($item_partes)) {

echo $val."<br />";
}

 

Dessa forma a cada loop ele lista todas as strings do array.

 

Teria como eu agrupar de forma que a string que ele mostrou em um loop fosse ignorada no outro? Algo como o GROUP do mysql.

 

gostaria que a saida fosse listada assim:

 

10

20

30

40

50

60

200

300

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for apenas pra exibir basta usar str_replace

 

exemplo

 

$val = '1:2:3:4';
echo str_replace( ':', '<br>', $val );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, o que realmente quero fazer é assim:

 

tabela1

 

id - sell //nome das colunas

1 - 10:20:30:40:50:60

2 - 20:60

3 - 10:50:30

4 - 200:300:40

 

tabela2

 

id - nome - tipo//nome das colunas

10 - João - 1

20 - Pedro - 2

30 - Marcos - 3

200- Roger - 6

 

Como eu faço para checar se o ID de "Marcos" (no caso 30) existe em qualquer uma das linhas da coluna "sell" na tabela1?

 

OBS: As colunas ID das duas tabelas não tem qualquer relação entre si. Apenas a coluna sell da tabela1 lista os IDs da tabela2.

 

Não sei se consegui ser claro no que preciso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi bem, os valores da coluna Sell são os IDs dos usuários

 

Pra selecionar os registros onde marcos de ID 30 esta na coluna Sell você faria uma consulta ssim:

 

SELECT * FROM MINHA_TABELA WHERE SELL LIKE '%:30:%'

 

MASSSS

 

tem um porém

 

você não pode deixar o começo e nem o final dos IDs sem o ":"

 

Pq se não, o 30 da linha "10:50:30" não seria achado

 

Todos os IDs devem estar entre ":" assim:

 

 

3 - :10:50:30:

 

Pq se não ele poderia achar 30 onde na verdade seria :300 ou 330: . . . . .

 

A consulta que eu fiz na verdade procura todos os registros que tem qualquer :30: entre seu conteudo ou seja

 

%:30:% -> qq texto :30: qq texto

%:30: -> qq texto :30: (:30: no final)

:30:% -> :30: qq texto (:30: no começo)

 

 

seria isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria isso sim WarLiKe, e eu já inseri os "dois pontos" antes e depois dos IDs pra filtrar melhor pelo LIKE.

 

aproveitando, eu preciso fazer uma busca da seguinte maneira:

 

 

Listar todos os nomes da tabela2 que constam na coluna "sell" da tabela1 sem repetir a cada loop e se acaso o ID de algum nomenão constar na tabela1, não listar ele. .

 

Exemplo:

 

 

SELECT id FROM tabela2 WHERE EXISTS (SELECT sell FROM tabela1 WHERE tabela2.id LIKE ??????? ) // aqui que eu não sei como fazer...

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.