• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Romanovs

Erro com o mySQL

23 mensagens neste tópico

Boas ando a desenvolver um sistema de notícias básico e deparei-me com estes dois erros numa página em que é suposto aparecer a lista completa das notícias:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource

É suposto apresentar os registos a cinco por página e no fundo ligação para a pagina seguinte e anterior se existirem

Alguém me sabe dizer o que se passa de errado?

As zonas que dão erro são:

  $numero_de_registos=mysql_num_rows($resultado);

e... 

  while ($registo=mysql_fetch_row($resultado)){

O código inteiro vem abaixo

<HTML>
<HEAD>
<TITLE>Documento PHP</TITLE>
</HEAD>
<BODY>
<?
    $ligacao=mysql_connect("fdb1.awardspace.com","travianpt_romao","juaorumao") or die ("Impossível ligar à Base de Dados.");
  mysql_select_db("travianpt_romao",$ligacao);

  
  $registos_por_pagina=5;
  $sql="select * from noticias order by dia asc";
  $sql1=$sql." limit $pag,$registos_por_pagina";
  $resultado=mysql_query($sql1, $ligacao);
  $numero_de_registos=mysql_num_rows($resultado);
print "ERRO :".mysql_error();
print "<table border=\"1\">";
print "<tr><td>Notícias Existentes</td></tr>";
  while ($registo=mysql_fetch_row($resultado)){
$id=$registo["id_n"];
$titulo=$registo["titulo"];
$autor=$registo["nome"];
$data=$registo["dia"];
/*Tabela com links*/
print"<tr><td><a href=\"ver_noticia.php?id_n=$id\" title=\"Escrito por $autor em $data\">$titulo</a></td></tr>";
}
/*Barra de navegação entre páginas*/
if(!$pag){$pag=1;}
$pagina_anterior=$pag-1;  /*Define a página anterior (página actual - 1)*/
$pagina_seguinte=$pag+1;  /*Define a página seguinte (página actual + 1)*/
$numero_de_paginas=$numero_de_registos/$registos_por_pagina+1;
if($pag<=1 && $pag<$numero_de_paginas) { /*Se não houver pagina anterior*/
                  print"<tr>
                  <td align=\"left\">Página $pag de $numero_de_paginas</td>
                  <td align=\"right\">Anterior---<a href=\"vertodas.php?pag=$pagina_seguinte\">Seguinte</a></td>
                  </tr>";}
           elseif ($pag<=1 && $pag==$numero_de_paginas) {   /*Se não houver pagina anterior ou seguinte*/
                  print"<tr>
                  <td align=\"left\">Página $pag de $numero_de_paginas</td>
                  <td align=\"right\">Anterior---Seguinte</td>
                  </tr>";}
           elseif ($pag>=1 && $pag==$numero_de_paginas) { /*Se não houver pagina seguinte*/
                  print"<tr>
                  <td align=\"left\">Página $pag de $numero_de_paginas</td>
                  <td align=\"right\"><a href=\"vertodas.php?pag=$pagina_anterior\">Anterior</a>---Seguinte</td>
                  </tr>";}
           elseif ($pag>=1 && $pag<=$numero_de_paginas) { /*Se houver pagina seguinte e anterior*/
                  print"<tr>
                  <td align=\"left\">Página $pag de $numero_de_paginas</td>
                  <td align=\"right\"><a href=\"vertodas.php?pag=$pagina_anterior\">Anterior</a>---<a href=\"vertodas.php?pag=$pagina_seguinte\">Seguinte</a></td>
                  </tr>";}
print "</table>";

?>
</BODY>
</HTML>

Desde já agradecido  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens um erro a chamar a variável $rep_pag pois não esta definida, penso que seja a variável $registos_por_pagina.

<?
  $registos_por_pagina=5;
  $sql="select * from noticias order by dia asc";
  $sql1=$sql." limit $pag,$registos_por_pagina";
  $resultado=mysql_query($sql1, $ligacao);
  $numero_de_registos=mysql_num_rows($resultado);

Assim já deve dar!  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok e extremamente estupido eu nao ter reparado nisso :eek:

Mas continua a dar erro ;)

(vou ali suicidar-me e ja volto)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e como faria isso? desculpa a noobice :S

nao percebi bem aquilo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

 
/*O codigo que falta*/
$numero_de_registos=mysql_num_rows($resultado);
echo "ERRO :" mysql_error();
/*O resto do codigo*/

Tenta assim.

Depois posta o erro que aparece.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

dá-me erro na linha em que meto esse código...

coloca a mensagem de erro. de outra forma ninguem te pode ajudar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/www/romanovs.awardspace.com/noticias/vertodas.php on line 16

Metendo la dentro das aspas também nao da

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

vê lá se se meteres assim resolve:

echo "ERRO :".mysql_error();

Se não tenta postar o código como está, indicando a linha em que dá o erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim já dá :confused:

aparece:

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 '5' at line 1

Deve ter a ver com esta parte afinal é o unico sitio onde tenho um 5:

  $registos_por_pagina=5;
  $sql="select * from noticias order by dia asc";
  $sql1=$sql." limit $pag,$registos_por_pagina";
  $resultado=mysql_query($sql1, $ligacao);
  $numero_de_registos=mysql_num_rows($resultado);

P.S. O código da pagina completa este logo la em cima na primeira mensagem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

substitui isto aí e diz qual é o output:

  $registos_por_pagina=5;
  $sql="select * from noticias order by dia asc";
  $sql1=$sql." limit $pag,$registos_por_pagina";
  echo $sql1;
  $resultado=mysql_query($sql1, $ligacao);
  $numero_de_registos=mysql_num_rows($resultado);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

select * from noticias order by dia asc limit ,5

É suposto tar ali a a virgula?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

era suposto era a variável $pag retornar um valor, mas pelos vistos não é o que está a acontecer.

edit: pelos vistos nem tens a variável definida antes da query... :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é suposto ser definida no link por isso e que tenho la em cima

p.e.: vertodas.php?pag=1

if(!$pag){$pag=1;}

LuRsT fiz como disseste, os erros desapareceram todos :confused:

mas... nao me aparecem registos embora tenha la um

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só se tiveres as variáveis globais activas é que isso funciona, pelos vistos não é o que acontece... :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como assim? desculpe a falta de jeito mas e a primeira vez que tou a aprender qualquer coisa de programação

ja agora obrigado a todos os que têm ajudado:D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta por esta linha no principio da página:

$pag = addslashes($_GET['pag']);

Cumps :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta por esta linha no principio da página:

$pag = addslashes($_GET['pag']);

Cumps :confused:

O addslashes não tá aí a fazer nada, mais vale usar o mysql_real_string_escape() :D
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora