Ir para conteúdo

POWERED BY:

Arquivado

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

Luã Stradlin

[Resolvido] Consulta Sql - Funciona em casa, mas no server...

Recommended Posts

Seguinte, em casa funciona direitinho, mas quando botei no servidor da net da um erro numa linha...

É um site de bandas, dai no perfil da banda tem umas estrelinhas que o membro do site da para a banda, e com isso joga no bd a id da banda, a nota e a id do user.

dai chamo por um include os ids dos users que votaram naquela banda, e ficam numa area de fãs. isso tudo funciona em casa, mas na net da um erro na linha 17

e aparecem os fãs e o erro.

em casa pelo xammp tudo certo, sem erro. mas aki da isso.

http://www.rockpe.com.br/index.php?rockpe=view&id=72

 

<?
echo '<div id=fansspace>';
$id = intval($_GET[id]);
$total_resultsfans = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM rp_ratings WHERE banda_id='".$id."'"),0);
if ($total_resultsfans <= 0)
{
echo 'Ainda não existem fãs para esta banda!';
}
else
{
$id = intval($_GET['id']);
$sql = mysql_query("SELECT DISTINCT userfan FROM rp_ratings WHERE banda_id=".$id." ORDER BY rand() LIMIT 16");
while($row = mysql_fetch_array($sql))
{
$fandabanda = $row['userfan'];
$sql2 = mysql_query("SELECT * FROM rp_usuarios WHERE id=".$fandabanda."");
while($row2 = mysql_fetch_array($sql2)) // linha do erro =(
{


if (strlen($row2['username']) > 7) {
$username2 = substr($row2['username'], 0, 7)."";}
else {
$username2 = $row2['username'];
}
$foto =$row2["imagem2"];
if ($foto == "") {
$foto = "semfoto.jpg";
}
else{
$foto =$row2["imagem2"];
}

$url = 'index.php?rockpe=profile&id='.$row['userfan'].'';

echo '<div class="fans"><a href="'.$site_url.'/'.$url.'">'.$username2.'<img width="50" height="50" src="users/fotos/'.$foto.'"></a></div>';
}
}
}
echo '</div>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque essa linha:

$sql = mysql_query("SELECT DISTINCT userfan FROM rp_ratings WHERE banda_id=".$id." ORDER BY rand() LIMIT 16");
por:

$stringSql = "SELECT DISTINCT userfan FROM rp_ratings WHERE banda_id= {$id} ORDER BY rand() LIMIT 16";
echo $stringSql;
$sql = mysql_query($stringSql)or die(mysql_error());
Diga oque retornou do echo, se apareceu algum error

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT DISTINCT userfan FROM rp_ratings WHERE banda_id= 72 ORDER BY rand() LIMIT 16

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/rockpe/public_html/content/fansdbanda.php on line 19

 

Esse foi o erro que agora aparece no site. linha 19 sendo que é a mesma linha 17 de antes

 

while($row2 = mysql_fetch_array($sql2))

 

ainda continua sendo essa linha do erro, só aumentou o texto do erro. =(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste a estrutura da tua tabela.

Exporta ela no SQL, e cola aqui.

 

Eu havia mechido na linha errada.. roda isso aqui:

$stringSql = "SELECT DISTINCT userfan FROM rp_ratings WHERE banda_id= {$id} ORDER BY RAND() LIMIT 16";
	$sql = mysql_query($stringSql)or die(mysql_error());
	while($row = mysql_fetch_array($sql))
	{
		$fandabanda = $row['userfan'];
		$stringSql2 = "SELECT * FROM rp_usuarios WHERE id = {$fandabanda} ";
		$sql2 = mysql_query($stringSql2)or die(mysql_error());
		
		while($row2 = mysql_fetch_array($sql2))
		{
diga oque retorna.

Se não aparecerem erros, comente os echos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou testar agora.

 

 

A estrutura de ratting

 

CREATE TABLE IF NOT EXISTS `rp_ratings` (
  `banda_id` varchar(10) NOT NULL,
  `user_id` varchar(10) NOT NULL default '',
  `rating` char(1) NOT NULL default '',
  `userfan` varchar(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

o Erro que deu depois de por aquelas linhas foi...

 

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

 

nem apareceu nenhum fã, só esse erro. =\

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe um erro de sintaxe na sua query. Para identificar, imprima na tela a query antes de executar. Assim.

 

$stringSql2 = "SELECT * FROM rp_usuarios WHERE id = {$fandabanda} ";
		echo $stringSql2;
		$sql2 = mysql_query($stringSql2)or die(mysql_error());

Veja o que exibe. Deve ter alguma coisa errada.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Novamente apareceu um fão e isso...

 

 

SELECT * FROM rp_usuarios WHERE id = 45

SELECT * FROM rp_usuarios WHERE id = 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 '' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

a tabela rp_usuarios

 

 

CREATE TABLE IF NOT EXISTS `rp_usuarios` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(200) NOT NULL default '',
  `password` varchar(50) NOT NULL default '',
  `email` varchar(30) NOT NULL,
  `activate` char(1) NOT NULL default '',
  `cidade` varchar(50) NOT NULL,
  `bairro` varchar(50) NOT NULL,
  `msn` varchar(40) NOT NULL default '',
  `orkutp` varchar(200) NOT NULL,
  `nomecomp` varchar(50) NOT NULL,
  `datanasci` varchar(12) NOT NULL,
  `banda` varchar(50) NOT NULL,
  `urlbanda` varchar(200) NOT NULL,
  `admin` char(2) NOT NULL default '',
  `plays` varchar(20) NOT NULL default '0',
  `imagem2` varchar(255) default NULL,
  `sobremim` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=326;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique no teu banco... parece que tem um registro com id com valor nulo!!

Como eu não sei.. mas tô achando que é essa a causa.. atribua um valor nessa linha..

 

vai lá na tabela rp_ratings e veja os valores da coluna userfan

você pode fazer um teste, antes de mandar pra query.. como:

$fandabanda = $row['userfan'];
if( $fandabanda != '' )
{
		$stringSql2 = "SELECT * FROM rp_usuarios WHERE id = {$fandabanda} ";
		$sql2 = mysql_query($stringSql2)or die(mysql_error());
...
}//fecha o if bem depois do término desse laço
Não se esqueça de fechar esse if.

Mas primeiro confira os dados que nem eu disse.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A meu velho, será que é isso?

 

Antes só pegava a nota e a id da banda, dai eu botei pra pegar a id do user pra por os users que deram nota pra tal banda ali, e as notas antigas ficaram... vou lipar pra ver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.. pelo retorno das querys..

SELECT * FROM rp_usuarios WHERE id = 45

SELECT * FROM rp_usuarios WHERE id = 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 '' at line 1

vemos quase que 'claramente', q existem linhas na tabela rp_ratings com valores de userfan NULOS!

 

tentou fazer o IF como indiquei ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz outra tabela novinha sem dados ainda, testei com dois users e apareceram la sem problemas, comentei o echo das linhas que botei lá... muito obrigado matias e bruno... tenho outro problema mas não da pra resolver hoje... pode por resolvido aew =)

 

 

Grande abraço.

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.