Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

duas tabelas , implode ? foreach ?

25-01-2017 11:06

Bom dia.
Tenho duas tabelas onde uma gravo os dados tipo de um produto , sendo seu id e nome, outra onde gravo a categoria  com seus respectivos id - cat - produto, só que neste onde eu gravo o produto, é gravado o id da outra tabela, ficando assim :
 
tabela produto
id = 1 - 2 - 3 - 4 - 5
prod = aaa - bbb - ccc - ddd - eee
 
categoria
id = 1 - 2
cat = 111 - 222
prod = 1, 3, 5 - 2, 4
 
espero que se tenha entendido, o que eu preciso é exibir :
111 - aaa , ccc , eeee
222 - bbb , ddd
 
Como fazer ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: duas tabelas , implode ? foreach ?

25-01-2017 12:10

O que você precisa fazer é listar cada categoria e os produtos relacionados a cada uma dela, correto?

Tem como jogar aqui a sql das tabelas com alguns produtos?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Re: duas tabelas , implode ? foreach ?

25-01-2017 13:47

Na verdade eu preciso de duas situações, o sql abaixo funciona para update, acredito que serveria tb p listar, no entanto, mudar o mesmo para PDO como ficaria no caso do mysql_result ?

$up1 = mysql_query("SELECT * FROM curso WHERE id_cur='$id'") or die (mysql_error()); $val = mysql_result($up1,0,'matc'); $val1 = explode(', ',$val); $valores = mysql_query("SELECT * FROM materia ") or die (mysql_error()); while ($ex1 = mysql_fetch_array($valores)){ $idmat = $ex1['mat_id']; $val11 = explode(', ',$idmat); foreach ( $val11 as $tag ){ if(in_array($tag,$val1)){ echo "<input name='matc[]' type='checkbox' value=".$tag." checked='checked' >".$ex1['mat_mat']."<br>"; } else { echo "<input name='matc[]' type='checkbox' value=".$tag." >".$ex1['mat_mat']."<br>"; } } }

este retorna os checkbox preenchidos ou não.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: duas tabelas , implode ? foreach ?

25-01-2017 14:05

Para obter somente uma linha da consulta com PDO você pode usar esse exemplo http://www.codigosnaweb.com/forum/viewtopic.php?t=10092
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Re: duas tabelas , implode ? foreach ?

25-01-2017 17:45

Parte do problema ja havia resolvido com sus ajuda em 2014, conforme o tópico http://www.codigosnaweb.com/forum/viewtopic.php?t=8482
eu gostaria de listar eles ....

$up1=$pdo->prepare("SELECT * FROM curso WHERE id_cur=:id_cur"); $up1->bindParam(':id_cur', $row['id_cur'], PDO::PARAM_STR); $up1->execute(); $result=$up1->fetch(PDO::FETCH_ASSOC); $val1 = explode(',',$result['matc']); $valores=$pdo->query("SELECT * FROM materia ORDER BY mat_mat ASC"); while ($ex1 = $valores->fetch(PDO::FETCH_ASSOC)){ $idmat = $ex1['mat_id']; $val11 = explode(', ',$idmat); foreach ( $val11 as $tag ){ if(in_array($tag,$val1)){ echo $ex1['abrev_mat']; } } }

EDITANDO:
preciso colocar espaço entre os dados, a listagem vem normal
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: duas tabelas , implode ? foreach ?

25-01-2017 17:53

Se você fazer um print de como está a listagem vai ajudar a entender o problema.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Re: duas tabelas , implode ? foreach ?

25-01-2017 17:59

perdão, antes da sua resposta ja havia visto o erro, editei o post, preciso colocar é um espaço ou um - entre os dados ...

EDITANDO ...
Simples:
echo $ex1['abrev_mat'].' - ';
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: duas tabelas , implode ? foreach ?

25-01-2017 18:17

Eu suspeitei que era isso mesmo.

O ruim desse modo é que o último elemento sempre fica com o hífen.

Tem um modo de fazer com implode. Veja um exemplo

<?php $valores = Array(1,2,3,4); $va = Array(); foreach($valores as $v) { $va[] = $v; } echo implode("-", $va); ?>

Veja se dá certo ai assim

$up1=$pdo->prepare("SELECT * FROM curso WHERE id_cur=:id_cur"); $up1->bindParam(':id_cur', $row['id_cur'], PDO::PARAM_STR); $up1->execute(); $result=$up1->fetch(PDO::FETCH_ASSOC); $val1 = explode(',',$result['matc']); $valores=$pdo->query("SELECT * FROM materia ORDER BY mat_mat ASC"); $v = Array(); while ($ex1 = $valores->fetch(PDO::FETCH_ASSOC)){ $idmat = $ex1['mat_id']; $val11 = explode(', ',$idmat); foreach ( $val11 as $tag ){ if(in_array($tag,$val1)){ $v[] = $ex1['abrev_mat']; } } echo implode("-", $v); }

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 407
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Re: duas tabelas , implode ? foreach ?

26-01-2017 09:40

Não deu, desculpe, pela demora desta resposta.

ficou assim
ArtArtArtArt-EFArt-EF-FisArt-EF-FisArt-EF-FisArt-EF-Fis-InfArt-EF-Fis-InfArt-EF-Fis-InfArt-EF-Fis-InfArt-EF-Fis-InfArt-EF-Fis-InfArt-EF-Fis-InfArt-EF-Fis-Inf

quando deveria :
Art - EF - Fis - Inf -

tem uma forma d fazer , vou verificar nos meus backups e retorno
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: duas tabelas , implode ? foreach ?

26-01-2017 20:00

O que complica no seu script é aquele if. Se não fosse ele daria para contar quantos resultados há na consulta. E quando for o último não exibir o hífen.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado