30 Recordsets?
#1
Posted 12/07/2006, 09:39
Estou com um probleminha de query SQL. Vou passar a explicar tudo.
Estou a montar um site de Clube de Vídeo. Então, tenho uma tabela em MySQL para os filmes todos ('tbl_filmes'), outra para o top30 ('top30'), onde estão apenas 30 id's de filmes que estão no top30 do clube de vídeo. Estas id's correspondem com as id's dos filmes na tabela 'tbl_filmes'.
A estrutura da tabela 'top30' é a seguinte:
Estes campos correspondem às colunas da tabela, ou seja, a coluna 1 corresponde à posição 1 no top 30.
Depois tenho de criar um query para ir buscar o nome do filme. Aí é que estou com uma dúvida: "Tenho de criar 30 Recordsets, ou query's???"
Pois é... Não me parece... Há-de haver outra forma de fazer isso... :-s penso eu...
Mas por enquanto estava tudo bem... os 30 recordsets apareciam todos...
mas agora arranjei um script que mostra os resultados em várias colunas e assim, tenho que fazer tudo com uma query apenas.
Qual a query que devo usar, ou qual a melhor forma de mostrar os resultados em 3 colunas sem ter de fazer 30 recordsets?
Cumprimentos,
microbyte
#2
Posted 12/07/2006, 09:51
procure também sobre páginação
T+
PALMEIRAS - Primeiro campeão do mundo em 1951
#3
Posted 12/07/2006, 09:52
acho que é isso que entendi ..
Mozilla/5.0 => Tema :Noia 2.0 (eXtreme) | Linux Mandriva
Linguagens :
PHP | ASP | VB | JavaScript | Dhtml |
Banco de dados :
ODBC | Mysql | SQL Server | Oracle 10g
To aprendendo :
Java | Ajax | Web 2.0
Ferramentas :
PL - SQL | Mysql Front | PHP editor | PhotoShop | Mysql Adminstrator
#4
Posted 12/07/2006, 10:01
Vou explicar como tava a fazer...
Top30 - posição 1:
"SELECT tbl_filmes.nome, top30.`1` FROM tbl_filmes, top30 WHERE tbl_filmes.id = top30.1"
E tinha um query para cada posição! mas eu quero fazer tudo automaticamente, ou seja, associar a id na coluna do top30 à id do filme na tabela principal (tbl_filmes)
#5
Posted 12/07/2006, 10:23
select top30.campo , tbl_filmes.nome from top30, tbl_filmes where top30.tipo = tbl_filmes.id order by top30.campo DESC
Brother, é algo mais ou menos assim, tenho certeza q a logica é essa... abs.. tem que so dar mais um where pra tirar o campo id da selecao, q alias nao sei pq esta nesta tabela, nem o campo id nem o campo mes... E colocar um limite de 30 tbm pra ele nao pegar as outras linhas q nao tem nada a ver...
Posta ai se for isso mesmo.. abs
Edição feita por: Milton Fernandes, 12/07/2006, 10:24.
#6
Posted 13/07/2006, 08:27
Muito mais simples seria se vc fizesse apenas assim a estrutura da tabela:
id----------nome----------cliques
Isso seria o básico da tabela talvez quem sabe colocar ali um campo data pra pegar o ultimo acesso à determinada coisa (não sei o que é).
Seguindo meu raciocinio dessa forma depois disso vc faria apenas um SELECT com um IF caso aquele nome já exista na tabela UPDATE na coluna CLIQUES caso o NOME ainda não exista INSERT na tabela e dessa forma vc iria formando seu TOP e pra saber os 30 primeiros vc teria apenas que ordenar em ordem decrescente de acordo com a COLUNA CLIQUES.
Bom, é a minha opinião. Se falei besteiras me desculpe.
Té mais
URL: www.batepapobrasil.com
----------------------------
Site desenvolvidos
URL: VitrineABC :: Alugue Litoral :: OrtodontiaLago
#7
Posted 13/07/2006, 10:09
A informação dos filmes tenho na tbl_filmes (nome, nome original, ano, ......)
Na tabela top30, apenas quero ter as ids dos filmes e associá-las às ids na tbl_filmes e aí ir buscar o resto da informação!
#8
Posted 13/07/2006, 12:04
Seguindo meu raciocinio dessa forma depois disso vc faria apenas um SELECT com um IF caso aquele nome já exista na tabela UPDATE na coluna CLIQUES caso o NOME ainda não exista INSERT na tabela e dessa forma vc iria formando seu TOP e pra saber os 30 primeiros vc teria apenas que ordenar em ordem decrescente de acordo com a COLUNA CLIQUES.
Vc leu mesmo???
EDITANDO
Normalmente o que faço é colocar uma coluna clique ou acessos ou seja lá o que for na mesma tabela que comtem os dados que no seu caso são filmes e depois vou dando UPDATE nessa coluna de acordo com que aquele FILME vai sendo exibido e depois apenas seleciono essa coluna fazendo com que seja exibida onde eu quero em ordem decrescente.
Acho muito mais fácil assim, porque dessa forma vc terá risco zero de ter dados duplicados.
Té mais
Edição feita por: gennf, 13/07/2006, 12:09.
URL: www.batepapobrasil.com
----------------------------
Site desenvolvidos
URL: VitrineABC :: Alugue Litoral :: OrtodontiaLago
#9
Posted 14/07/2006, 07:12
Para já, o site ainda não dá para alugar, assim tive de fazer uma página onde o admin mete os ids dos filmes em 30 campos, que fazem UPDATE à tabela 'top30'.
Eu preciso de acociar cada id na 'top30' ao id na 'tbl_filmes', mas sem ter de fazer 30 querys. Há-de haver maneira da fazer só num!
#10
Posted 14/07/2006, 09:26
Tabela Top:
mestop inteiro
filmetop inteiro
ordemtop inteiro
Quando você for fazer uma inserção nesta tabela, limpe-a antes
DELETE FROM top WHERE mestop=$mes
Depois faça a inserção via um formulário de cadstro
INSERT INTO top (mestop, filmetop, ordemtop) VALUES ($mes,$filme,$ordem)
Para consultar utilize esta query
SELECT top.mestop as mes, top.ordemtop as ordem, filmes.titulo as titulo FROM top, filmes WHERE top.filmetop = filmes.codigo AND top.mes=$mes ORDEM BY top.ordemtop
Bom...agora utilizando o mysql_fetch_array....vc pode acessar como $row['titulo']
Edição feita por: fly2k, 14/07/2006, 09:27.
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.
#11
Posted 14/07/2006, 14:13
Obrigado! Vou testar e depois digo algo!
Desculpa flood, mas não está dando certo! Está exibindo em colunas, mas está exibindo sempre o mesmo resultado.
veja como tenho o código:
o meu query sql:
<?php mysql_select_db($database_conn_fusao, $conn_fusao); $query_Recordset1 = "SELECT top30_2.order, tbl_filmes.nome, tbl_filmes.foto FROM top30_2, tbl_filmes WHERE top30_2.id = tbl_filmes.id ORDER BY top30_2.`order`"; $Recordset1 = mysql_query($query_Recordset1, $conn_fusao) or die(mysql_error()); $row_Recordset1 = mysql_fetch_assoc($Recordset1); $totalRows_Recordset1 = mysql_num_rows($Recordset1); ?>
meu código que mostra em colunas (seguindo tutorial de Balala):
<table width="500"> <tr> <?php for($i = 1; $i <= 30; $i++) { if(($i % 30) == 1) { print("<tr>"); } ?> <td width="100"><div align="center"><img width="75" height="100" src="images/filmes/<?php echo $row_Recordset1['foto']; ?>" /></div><br /><?php echo $row_Recordset1['nome']; ?></td> <?php if(($i % 5) == 0) { print("</tr>"); } } ?> </tr> </table>
mas ele está a mostrar sempre o mesmo resultado!
Porquê? Quais as alterações que tenho de fazer?
podem ajudar?
#12
Posted 14/07/2006, 15:29
http://www.php.net/m...fetch-array.php
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.
#13
Posted 16/07/2006, 08:12
#14
Posted 18/07/2006, 08:24
#15
Posted 18/07/2006, 09:16
Tutoriais, código colaborativo (pastebin), curso de PHP, artigos e etc.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)