Jump to content


Photo

Sistema Colunistas...


  • Faça o login para participar
9 replies to this topic

#1 finish

finish

    12 Horas

  • Usuários
  • 144 posts
  • Sexo:Não informado

Posted 05/04/2005, 16:52

Olá galera!

Estou desenvolvendo um sistema e neste sistema tem uma parte de colunistas! Até aí tudo bem, montei a estrutura da seguinte forma:

Tabela membros -> Dados dos colunistas, id, foto, nome, etc...
Tabela colunas -> Colunas em si e um campo "parent" que contém a id do cara que fez a coluna!

Até aí tudo OK, mostro as colunas, porém ele sempre mostra a mesma foto, no caso de eu exibir 5 colunas na página inicial ele me mostra as 5 colunas e as 5 colunas do cara X.

Ja fiz de tudo que podia, estava a usar a seguinte lógica:

1º - Fazia um select da tabela colunas e selecionava o parent, com este parent seleciona id = $parent na tabela membros... e refazia um select da tabela colunas e exibia usando tudo que selecionei!

$sql = mysql_query("Select * from colunas");
while($p = mysql_fetch_array($sql)) {
 $parent = $p["parent"];
}

$sql = mysql_query("SELECT * FROM membros where id = '$parent'"); 
while($p = mysql_fetch_array($sql)) {
 $idmembro = $p["id"];
 $foto = $p["foto"];
 $nomemembro = $p["nome"];
}

$sql = mysql_query("Select * from colunas"); 
while($l = mysql_fetch_array($sql)) { 
echo "   $l[nomedacoluna] - $foto - $nomemembro";
}
Limpei totalmente meu código para simplificar para vocês(tirei limite, variaveis, etc)... caso tenha algum erro de script(q aparece na tela) ignorem =)

Sacam, vai SEMPRE mostrar o mesmo nome e a mesma foto, qual seria a estrutura correta ?

Valeu
Abraço

Edição feita por: finish, 05/04/2005, 16:54.


#2 mestreteia

mestreteia

    Normal

  • Usuários
  • 60 posts
  • Sexo:Não informado

Posted 05/04/2005, 17:02

Você já tentou dessa forma:

SELECT *, COUNT(*) FROM membros WHERE id= '$parent'

Tem q tomar cuidado com o grau de relação entre elas, se é de 1 pra N ou N pra N. Isso é importante para saber se vai precisar de uma tabela intermediária.
php rules!!!

#3 finish

finish

    12 Horas

  • Usuários
  • 144 posts
  • Sexo:Não informado

Posted 05/04/2005, 17:12

ñ entendi mto bem mestreteia, usando o COUNT/Group by eu ñ vou juntar os dados e me dar qnto dados X cada um tem ?

em que isso pode me ajudar ?

desculpa ae, mas hj to meio avoado aqui heheheh

abraço

#4 gregorytg

gregorytg

    Mestre

  • Usuários
  • 632 posts
  • Sexo:Não informado

Posted 05/04/2005, 18:44

$sql = mysql_query("Select * from colunas");
while($p = mysql_fetch_array($sql)) {
$parent = $p["parent"];
}

$sql = mysql_query("SELECT * FROM membros where id = '$parent'"); 
while($p = mysql_fetch_array($sql)) {
$idmembro = $p["id"];
$foto = $p["foto"];
$nomemembro = $p["nome"];
}

$sql = mysql_query("Select * from colunas"); 
while($l = mysql_fetch_array($sql)) { 
echo "   $l[nomedacoluna] - $foto - $nomemembro";
}

$sql = mysql_query("Select * from colunas");

O que há de um pouco estranho é o seguinte:
Nesta parte esta faltando um pouco de lógica.
Seja mais especifico em qual coluna você quer:


$colunas = $_POST["coluna"];

$sql = mysql_query("Select * from $colunas");


Tente para ver se dar certo! ;)
"Porque o Senhor será a tua confiança, e guardará os teus pés de serem presos". \o/

#5 finish

finish

    12 Horas

  • Usuários
  • 144 posts
  • Sexo:Não informado

Posted 05/04/2005, 19:07

colunas é o nome da tabela ;)

estou selecionando todos os campos "*" da tabela colunas...

será que fazendo por table.campo, table2.campo from table, table2 where ... blablabla... daria certo ?

#6 gregorytg

gregorytg

    Mestre

  • Usuários
  • 632 posts
  • Sexo:Não informado

Posted 05/04/2005, 19:12

Selecione um compo da tabela colunas.
Se ele tiver ID

Select FROM colunas WHERE id = $id
"Porque o Senhor será a tua confiança, e guardará os teus pés de serem presos". \o/

#7 finish

finish

    12 Horas

  • Usuários
  • 144 posts
  • Sexo:Não informado

Posted 05/04/2005, 19:15

gregory, meu problema ñ é conseguir realizar o select, é usar DOIS selects em tables distintas e juntar os dados de duas tabelas para exibir como se fosse só um ITEM... e ele ta usando o 1º item de uma tabela para completar todos os itens da outra... seria um while de limit 1...

axo que vou usar o group by de alguma forma q o mestreteia indicou, estive lendo + e entendi algumas coisas, se alguém souber alguma forma prática por favor me fale...

valeu ae pela ajuda mas ta complicado e é algo tão simplessss hehehe

abraço

#8 recycled

recycled

    Turista

  • Usuários
  • 50 posts
  • Sexo:Não informado
  • Localidade:Florianópolis/SC
  • Interesses:Aprender e ensinar o pouco que sei :)

Posted 06/04/2005, 03:11

hm. Que tal usar Join?

tenta algo assim:

SELECT colunas.*,membros.* FROM colunas LEFT JOIN membros ON (colunas.parent = membros.id)

Ali em cima ele vai associar cada id ao seu 'membro'. Note que eu nao usei 'alias'.
Foi um exemplo de uso, pois nao sei exatamente os campos do seu BD.

Espero ter ajudado (y)
| will - d.sign&c..odes
| www.neuronio.org
| fotolog.net/recycled

é isso aí :D

#9 finish

finish

    12 Horas

  • Usuários
  • 144 posts
  • Sexo:Não informado

Posted 06/04/2005, 13:29

Perfeito recycled... tenho que dar uma lida no manual do mysql pra relembrar os comandos, esqueci de tudo ehhehe... VALEU mesmo... para mim ficou da seguinte forma:

$tabela = "colunas";
$tabela2 = "membros";
$sql = mysql_query("Select $tabela.*,$tabela2.* from $tabela LEFT JOIN $tabela2 ON($tabela.parent = $tabela2.id) ORDER by $tabela.$ordenado $ordem LIMIT $inicio, $limite")

Mais uma dúvida rapidinha... e no caso de 2 campos iguais nas tabelas... por exemplo... nome, eu tenho nas duas tabelas...

Edição feita por: finish, 06/04/2005, 13:59.


#10 mestreteia

mestreteia

    Normal

  • Usuários
  • 60 posts
  • Sexo:Não informado

Posted 06/04/2005, 16:29

Existe uma forma melhor de relacionar dados das tabelas:

"SELECT $tabela.*,$tabela2.* FROM $tabela, $tabela2 WHERE $tabela.parent = $tabela2.id ORDER by $tabela.$ordenado $ordem LIMIT $inicio, $limite"

Dessa mesma forma acima é possível escolher dois dados, mesmo que tenham o mesmo nome. O que vai diferenciá-los é o "$tabela." e "$tabela2."

Valeu?

Edição feita por: mestreteia, 06/04/2005, 16:30.

php rules!!!




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq