Ir para conteúdo

POWERED BY:

Arquivado

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

LucianoAPF

[Resolvido] Call Stack

Recommended Posts

Boa tarde a todos,

 

Estou com um script onde seleciono 10 campos de id de autores na tabela livros em um único select, depois crio um laço para joga-los em tela. Dentro desse primeiro laço faço outro select onde seleciono os autores que contenham os ids do primeiro select. No Mysql dá certo porém no PHP não.

 

O primeiro select mostra:

 

livro	autor1	autor2	autor3	autor4	autor5	autor6	autor7	autor8	autor9	autor10
Teste1	13	                          14	     15	 	 	 	 	 	 	 
Teste3	13	 	 	 	 	 	 	 	 	 
Teste2	13

O segundo select mostra:

 

id_autor	id	nome	nomedestaque
14	        1	Lucas	Pereira

 

Isso no Mysql já no php dá erro:

 

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\sgc\Site\administrar.php on line 287

Call Stack

# Time Memory Function Location

1 0.0015 464912 {main}( ) ..\administrar.php:0

2 0.0079 523432 mysql_fetch_array ( ) ..\administrar.php:287

Segue abaixo o script:

 

<?php
 $select = mysql_query("SELECT DISTINCT l.livro, l.id_autor1 AS autor1, IF(l.id_autor2<>0,l.id_autor2,'') AS autor2, IF(l.id_autor3<>0,l.id_autor3,'') as autor3, IF(l.id_autor4<>0,l.id_autor4,'') as autor4, IF(l.id_autor5<>0,l.id_autor5,'') as autor5, IF(l.id_autor6<>0,l.id_autor6,'') as autor6, IF(l.id_autor7<>0,l.id_autor7,'') as autor7, IF(l.id_autor8<>0,l.id_autor8,'') as autor8, IF(l.id_autor9<>0,l.id_autor9,'') as autor9, IF(l.id_autor10<>0,l.id_autor10,'') as autor10
FROM livro l, autor a");
 while($busca = mysql_fetch_array($select))
 {
		$sel = mysql_query("SELECT * FROM autor WHERE id_autor = ".$busca['autor1']." OR id_autor = ".$busca['autor2']." OR id_autor = ".$busca['autor3']." OR id_autor = ".$busca['autor4']." OR id_autor = ".$busca['autor5']." OR id_autor = ".$busca['autor6']." OR id_autor = ".$busca['autor7']." OR id_autor = ".$busca['autor8']." OR id_autor = ".$busca['autor9']." OR id_autor = ".$busca['autor10']."");
		while($bus = mysql_fetch_array($sel))
		{
		echo"
		".$bus['nome']."".$bus['nomedestaque']."</div>
		";
		}

 } 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro, páre de utilizar as funções mysql_* pois logo, logo serão removidas do PHP. :thumbsup:

 

Até que faça tal modificação, sempre adicionei, ao final de tais funções:

 

 or die( mysql_error() );

Dessa forma poderá ver se alguma coisa saiu errada.

 

mysql_fetch_array(0 espera receber um recurso, mas mysql_query() só retorna um recurso se tudo correr bem com a query.

 

Se algo der errado, ela retorna FALSE e, por isso, o erro recebido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, vou colocar valores nas variáveis e assim o sql roda:

 

$autor1 = 0;

$autor2 = 15;

$autor3 = 14;

$autor4 = 13;

$sel = mysql_query("SELECT * FROM autor WHERE id_autor = $autor1 OR id_autor = $autor2 OR id_autor = $autor3 OR id_autor = $autor4");

while($bus = mysql_fetch_array($sel))

{

echo"

".$bus['nome']."".$bus['nomedestaque']."</div>

";

}

 

Deste modo roda. Agora se fizer assim:

 

$autor1 = $busca['autor1'];

$autor2 = $busca['autor2'];

$autor3 = $busca['autor3'];

$autor4 = $busca['autor4'];

$sel = mysql_query("SELECT * FROM autor WHERE id_autor = $autor1 OR id_autor = $autor2 OR id_autor = $autor3 OR id_autor = $autor4");

while($bus = mysql_fetch_array($sel))

{

echo"

".$bus['nome']."".$bus['nomedestaque']."</div>

";

}

 

Não roda! e os valores são os mesmos que inseri na variável no primeiro momento.

Já tentei usar o is_int() e nada. O php não lê.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera resolvido! (na treta)

Fiz as condições:

 

if($autor1 == "")

{

$autor1 = 0;

}

else

{

$autor1 = $busca['autor1'];

}

if($autor2 == "")

{

$autor2 = 0;

}

else

{

$autor2 = $busca['autor2'];

}

if($autor3 == "")

{

$autor3 = 0;

}

else

{

$autor3 = $busca['autor3'];

}

if($autor4 == "")

{

$autor4 = 0;

}

 

Assim ele retorna 0 e tava retornando vazio. :P

 

Att

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.