Ir para conteúdo

POWERED BY:

Arquivado

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

egbmix

[Resolvido] top 10

Recommended Posts

bom dia á todos

fiz um script para selecionar os 10 artigos mais vistos no site, sendo que está dando erro na hora de extrair os dados da tabela e não sei o que fazer.

 

erro:

PHP Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in E:\home\wibox\Web\Top\index.php on line 95

 

 

script:

$sql10 = mysql_query ("SELECT TOP 10 * FROM clip  ORDER BY view DESC LIMIT 10"); 
$posicao = 0; 
while($linha10 = mysql_fetch_assoc($sql10)) {//erro está nessa linha aqui
$cod3  = $linha10['id'];
$pp3 = $linha10['pp'];
$nome3 = $linha10['nome'];
$img3 = $linha10['img'];
$tempo3 = $linha10['tempo'];
$view3 = $linha10['view'];

 

linha de erro :

while($linha10 = mysql_fetch_assoc($sql10)) {

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, retire a variável $sql10 de dentro do mysql_fetch_assoc() e veja se da certo.

 

 

 

Não funcionou está dando mesmo erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu não me engano, "TOP" não existe no MySQL.

Veja que erro SQL está sendo exibido. Faça isso:

$sql10 = mysql_query ("SELECT TOP 10 * FROM clip  ORDER BY view DESC LIMIT 10") or exit(mysql_error());
Poste oque imprimir na tela.

E tente retirar o TOP. Controle apenas com ASC, DESC e LIMIT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o erro:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '10 * FROM clip ORDER BY view DESC LIMIT 10' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim, aqui funciona bacana!

 

$sql = "SELECT * FROM [b]BANCODEDADOS[/b] ORDER BY [b]COLUNA[/b] DESC LIMIT 0,10";

 

Eu uso for pra poder gerar umas tabelas com os vídeos cadastrados no DB.

 

No lugar de:

 

while($linha10 = mysql_fetch_assoc($sql10))

 

coloque:

while($linha10 = mysql_fetch_array($sql10))

 

Eu tenho um parecido, veja se isso funciona, até mais!

 

Até!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você retirou o TOP e o erro persistiu?

O que você espera deste "TOP"?

 

 

eu esperava fazer uma consulta dos 10 artigos mais visto no site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

post a estrutura da tabela

 

 

Já postei no primeiro tópico

 

Tente assim, aqui funciona bacana!

 

$sql = "SELECT * FROM [b]BANCODEDADOS[/b] ORDER BY [b]COLUNA[/b] DESC LIMIT 0,10";

 

Eu uso for pra poder gerar umas tabelas com os vídeos cadastrados no DB.

 

No lugar de:

 

while($linha10 = mysql_fetch_assoc($sql10))

 

coloque:

while($linha10 = mysql_fetch_array($sql10))

 

Eu tenho um parecido, veja se isso funciona, até mais!

 

Até!

 

 

 

não funcionou ele retorna a resposta que o banco está vazio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu esperava fazer uma consulta dos 10 artigos mais visto no site.

Você ja tentou tirar o TOP? Ele deve estar ocasionando o erro.

Para fazer isso, você só vai precisar do LIMIT e order by mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

correto fiz o que você falou só que agora voltou a dar aquele lá no laço while, o que devo fazer ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz isso :

$sql10 = mysql_query ("SELECT * FROM clip ORDER BY view LIMIT 10");

ele não está mostrando os artigos no ordem e nem mostrando os mais vistos, está mostrando aleatóriamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim

 

$sql10 = mysql_query ("SELECT  * FROM clip ORDER BY view DESC,nome ASC,id DESC LIMIT 10 ") or die (mysql_error());
$posicao = 0; 

while ($linha10 = mysql_fetch_array($sql10) or die (mysql_error())) {

echo $cod3  = $linha10['id'];
echo $pp3 = $linha10['pp'];
echo $nome3 = $linha10['nome'];
echo $img3 = $linha10['img'];
echo $tempo3 = $linha10['tempo'];
echo $view3 = $linha10['view'];
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu problema é na montagem da query. Vou mover para o fórum de MySQL.

 

Tópico Movido

PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif MySQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o campo view na tabela for onde você verifica os 10 mais vistos você faz assim.....

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

$sql10 = mysql_query ("SELECT * FROM clip where view LIMIT 10");

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.