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: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

listar dados de 3 tabelas sendo 1 array

02-06-2014 14:34

to com um probleminha aqui que ta me cozinhando a cabeça ... tenho 3 tabelas que são :

tabela1 - idt1 - t1
tabela2 - idt2 - t2
tabela3 - idt3 - t13 - t23

tenho varios itens na tabela2 que podem ser relacionados na tabela3 como subcategorias da tabela1 , tipo :

tabela1 - 1 - aaa
tabela2 - 1 - bbb | 2 - ccc | 3 - ddd | 4 -eee
tabela3 - 1 - 1 - 1, 2, 4

Até ai tudo certo, até listo , só que só listo os id's .

$sql = "SELECT * FROM curmat";     $qry = mysql_query($sql); while ($res = mysql_fetch_array($qry)){ $cur = $res['curm']; $valor = $res['matcur'];  echo $cur; echo $valor; 

a listagem sai assim .... 1 - 1, 2, 4
onde precisava que fosse assim ..... aaa - bbb, ccc, eee

desde ja agradeço ajuda.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

listar dados de 3 tabelas sendo 1 array

02-06-2014 14:47

Está usando uma query para cada tabela?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

listar dados de 3 tabelas sendo 1 array

02-06-2014 14:55

não, no momento to parado nesta só, ja tentei relacionamentos e deu erro, to me perdendo nesta coluna onde tenho vários itens dentro da mesma, pois gravo só o id, como buscar os dados na outra tabela é que não estou sabendo.
obs: os dados vem de checkbox marcados e gravados no bd .
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

listar dados de 3 tabelas sendo 1 array

02-06-2014 15:05

Você poderia pegar a variável que armazena o nome ao invés de usar a variável do id no echo.

Também pode usar o left join. Nesse link tem um exemplo http://www.w3schools.com/sql/sql_join_left.asp
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

listar dados de 3 tabelas sendo 1 array

02-06-2014 15:23

O problema de pegar a variavel é em caso de alteração da tabela1 ou tabela2 , com left join , ja consigo ver os nomes, porém só me aparece o primeiro da coluna ..

$sql = "SELECT * FROM curmat LEFT JOIN materia ON curmat.matcur = materia.mat_id LEFT JOIN curso ON curmat.curm = curso.id_cur";     $qry = mysql_query($sql); while ($res = mysql_fetch_array($qry)){ $cur = $res['cur']; $valor = $res['mat_mat'];  

resultado :

aaa
bbb

onde deveria ser :
aaa
bbb, ccc, eee
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

listar dados de 3 tabelas sendo 1 array

02-06-2014 16:11

O que estar acontecendo, é que os outros itens não estejam relacionados noa mesma coluna. curm=id_cur

Tem várias funções para anexar tabelas, inner join, union, entre outros. http://www.w3schools.com/sql/sql_join_inner.asp

Nesse link é o inner join, nesse link tem as outras funções. Veja os links, e a que se adapta melhor ao que precisa.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

listar dados de 3 tabelas sendo 1 array

02-06-2014 18:57

Estou perto, ja consigo listar os valores dos ids .....

<?php $sql = "SELECT * FROM curmat INNER JOIN curso ON curmat.curm = curso.id_cur";     $qry = mysql_query($sql); while ($res = mysql_fetch_array($qry)){ $cur = $res['cur']; $valor = $res['matcur'];  $idv = $res['id_cm']; ?>                   <tr class="odd gradeX">                     <td><?php echo $cur; ?></td>                     <td> <?php                     $val = explode(', ',$valor);                     for($i = 0; $i < count($val); $i++){                                              $sql33 = mysql_query("SELECT * FROM materia WHERE mat_id = '".$val[$i]."'") or die (mysql_error());                             $res33 = mysql_fetch_assoc($sql33);                         $mat =  $res33['mat_mat'];                         echo $mat;                         }                      ?>

Só que estão juntos , agora tenho de separa-los ....

como esta ...
INFORMÁTICAINTRODUÇÃO A ECONOMIALÍNGUA PORTUGUESAMATEMÁTICA I

como tem q ficar :
INFORMÁTICA, INTRODUÇÃO A ECONOMIA, LÍNGUA PORTUGUESA, MATEMÁTICA I
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

listar dados de 3 tabelas sendo 1 array

02-06-2014 19:03


echo $mat.' - '; 

Resolveu .

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

listar dados de 3 tabelas sendo 1 array

03-06-2014 13:52

Vou manter este tópico pela linha de raciocínio.

meu problema agora é o update, lista os dados com os devidos checkbox marcados .. esta assim ..

$up1 = mysql_query("SELECT * FROM curmat WHERE curm='$id' AND peri_cm='$pe'") or die (mysql_error());                     $ex1 = mysql_fetch_array($up1);                     $valor = $ex1['matcur'];                     $val = explode(', ',$valor);                     foreach ( $val as $tag ){                                              $sql33 = mysql_query("SELECT * FROM materia ORDER BY mat_mat ASC") or die (mysql_error());                             while ($res33 = mysql_fetch_array($sql33)){                                                          echo "<input type='checkbox' name='mat[]' value=".$res33['mat_id']." ".( $res33['mat_id'] == $tag ? "checked":"")." >".$res33['mat_mat']." <br>";                         }                         } 

e retornado desta forma ( verificado pelo firebug ):

<div class="controls"> <input type="checkbox" name="mat[]" value="15" checked=""/> INFORMÁTICA <br/> <input type="checkbox" name="mat[]" value="8"/> INTRODUÇÃO A ECONOMIA <br/> <input type="checkbox" name="mat[]" value="19"/> LÍNGUA PORTUGUESA <br/> <input type="checkbox" name="mat[]" value="10"/> MATEMÁTICA I <br/> <input type="checkbox" name="mat[]" value="6"/> METODOLOGIA DO TRABALHO CIENTÍFICO <br/> <input type="checkbox" name="mat[]" value="7"/> TEORIA GERAL DA ADMINISTRAÇÃO I <br/> <input type="checkbox" name="mat[]" value="15"/> INFORMÁTICA <br/> <input type="checkbox" name="mat[]" value="8" checked=""/> INTRODUÇÃO A ECONOMIA <br/> <input type="checkbox" name="mat[]" value="19"/> LÍNGUA PORTUGUESA <br/> <input type="checkbox" name="mat[]" value="10"/> MATEMÁTICA I <br/> <input type="checkbox" name="mat[]" value="6"/> METODOLOGIA DO TRABALHO CIENTÍFICO <br/> <input type="checkbox" name="mat[]" value="7"/> TEORIA GERAL DA ADMINISTRAÇÃO I <br/> <input type="checkbox" name="mat[]" value="15"/> INFORMÁTICA <br/> <input type="checkbox" name="mat[]" value="8"/> INTRODUÇÃO A ECONOMIA <br/> <input type="checkbox" name="mat[]" value="19" checked=""/> LÍNGUA PORTUGUESA <br/> <input type="checkbox" name="mat[]" value="10"/> MATEMÁTICA I <br/> <input type="checkbox" name="mat[]" value="6"/> METODOLOGIA DO TRABALHO CIENTÍFICO <br/> <input type="checkbox" name="mat[]" value="7"/> TEORIA GERAL DA ADMINISTRAÇÃO I <br/> <input type="checkbox" name="mat[]" value="15"/> INFORMÁTICA <br/> <input type="checkbox" name="mat[]" value="8"/> INTRODUÇÃO A ECONOMIA <br/> <input type="checkbox" name="mat[]" value="19"/> LÍNGUA PORTUGUESA <br/> <input type="checkbox" name="mat[]" value="10" checked=""/> MATEMÁTICA I <br/> <input type="checkbox" name="mat[]" value="6"/> METODOLOGIA DO TRABALHO CIENTÍFICO <br/> <input type="checkbox" name="mat[]" value="7"/> TEORIA GERAL DA ADMINISTRAÇÃO I <br/> </div>

onde esta checked="" vem marcado e certo, no entanto esta repetindo os itens 4 vezes, conforme o número de itens na coluna matcur da tabela curmat.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

listar dados de 3 tabelas sendo 1 array

03-06-2014 14:19

Você tem que seguir a lógica, por exemplo:

$up1 = mysql_query("SELECT * FROM curmat WHERE curm='$id' AND peri_cm='$pe'") or die (mysql_error()); $val = mysql_result($up , 0, "matcur"); // PEGANDO O PRIMEIRO RESULTADO DA CONSULTA 

Observe acima que usei o mysql_result para encurtar o código. Essa linha do $val vai pegar o primeiro resultado da consulta acima.

Abaixo, você explode o valor pelo vírgula. Ou seja, cada laço do foreach vai repetir de acordo com a quebra. Por exemplo

a,b,c

$sql33 = mysql_query("SELECT * FROM materia ORDER BY mat_mat ASC") or die (mysql_error());  


Esse select vai repetir 3 vezes, repetindo também o resultado do while.

Eu entendi mais ou menos o que você quer fazer. Só que você deve fazer com array. Veja esse exemplo.

<?php // SIMULANDO O RESULTADO DA PRIMEIRA CONSULTA $val = "a,b,c,d"; $val1 = explode(",", $val); // SIMULANDO A CONSULTA $valores = Array("a","e","i","o","u"); foreach($valores AS $valor) { if(in_array($valor, $val1)) { echo "$valor - checked<br />"; } else { echo "$valor<br />"; } } ?>

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

listar dados de 3 tabelas sendo 1 array

03-06-2014 16:36

Seguindo a linha de raciocínio fico perfeito , muito obrigado aprendi muito !
:rock: :rock: :rock:
0

Quem está online

Usuários navegando neste fórum: Bing [Bot]