Array
(
)

Visualização não da certo

PHP
Marcio Araujo
   - 02 set 2012

boa tarde a todos:
estou utilizando o seguinte codigo
#Código


<html>
    <head>
        <title></title>
        <style type="text/css">
            @import url("css/main.css");           
        </style>
    </head>
    <body>
        <?php
        include("conexao.php");

            if(isset($_GET["id"])){
                if(is_numeric($_GET["id"])){
                    $SQL = "SELECT news.*, autor.nome FROM news INNER JOIN autor on autor.id = news.autor WHERE news.id = ".$_GET["id"];
                    $query = mysql_query($SQL);
                    $exibir = mysql_fetch_array($query);
        
            if(mysql_num_rows($query) > 0){
                    echo "<div id='news' style='background-color:#FFF'>"; 
                    echo "-> <b>".$exibir["titulo"]."</b>";
                    echo " - Por <b>".$exibir["nome"]."</b>";
                    echo " - postada em: <b>".$exibir["data"]."</b>";
                    echo "</div>";
            }else {
                    echo "<br>Erro no sistema, news incorreta!</b>";
            }
        }        
    }
?>
    </body>
</html>


porem, depois de executalo, verifiquei no browser, em exibir(codigo fonte), apareceu o esse:
#Código

<html>
    <head>
        <title></title>
        <style type="text/css">
            @import url("css/main.css");           
        </style>
    </head>
    <body>
        <br>Erro no sistema, news incorreta!</b>    </body>
</html>



sendo que o correto seria:
#Código

<html>
    <head>
        <title></title>
        <style type="text/css">
            @import url("css/main.css");           
        </style>
    </head>
    <body>
        <div id='news'>Conheca os recursos do HTML 5</div> </body>
</html>


Eduardo Gonçalves
   - 02 set 2012

Marcio, está ocorrendo o problema porque esse IF está resultando em FALSE:

#Código

if(mysql_num_rows($query) > 0){ 


Os motivos podem ser vários: problema de conexão, problema na query, tabela vazia, etc. Daí você tem que investigar cada possível problema e descobrir o que está acontecendo de fato.

Varallo
   - 02 set 2012

Manda o que tem de código no conexao.php...

Marcio Araujo
   - 02 set 2012

Eduardo, vou verificar esses possiveis problemas, obrigado!!!

Varallo, o codigo do conexao.php é:

#Código


<?php

    //Dados Conexão MySql
    $server = "localhost";
    $user = "root";
    $pw = "";
    $dbname = "dbdevmedia";
    $conn = mysql_connect($server, $user, $pw);
    $db = mysql_select_db($dbname, $conn);

?>

Samuel Diogo
   - 03 set 2012



Marcio, Concordo com o Eduardo, existe algum problema ai na sua query...

bom, mostrar uma outra forma de retornar conteúdo, eu faço assim:

#Primeiro, chamo na pagina o método ConsultaRegistro com parâmetro ($id_conteudo) da classe $objConteudoDAO:

#Código

class conteudo{
	 function consultaRegistro($id){
			$query = "SELECT news.*, autor.nome FROM news INNER JOIN autor on autor.id = news.autor WHERE news.id = ".$_GET["id"];
		$resultado = mssql_query($query);
		return $resultado;
	}				
}			
$objConteudoDAO = new conteudo();


#na página teste_marcio.php eu tenho o seguinte código:

#Código
<?php

$resultado = $objConteudoDAO->consultaRegistro($id_conteudo);
while($row = mssql_fetch_array($resultado)) {
echo "<div id='news' style='background-color:#FFF'>"; 
 echo "-> <b>".$row["titulo"]."</b>";
 echo " - Por <b>".$row["nome"]."</b>";
 echo " - postada em: <b>".$row["data"]."</b>";
 echo "</div>";
}

?>


Marcio Araujo
   - 04 set 2012

Samuel Diogo, obrigado pelas informações!!! ainda to vendo esse probleminha, qualquer coisa, eu vou testar seu codigo!!!

Eduardo Oliveira
   - 16 out 2012

Márcio, voce tem ctz sobre esse relacionamento?

autor.id = news.autor

Se sim, teste sua consulta no phpmyadmin ou qualquer outro sgbd que voce esteja utilizando, fazendo isso voce terá ctz que sua consulta está funcionando e que de fato seu problema está no script, teste e fale o que acontece.

Eduardo Oliveira
   - 16 out 2012

Uma outra observação caso queira testar si é o problema está em sua query no final dela coloque

#Código

   $query = "SELECT news.*, autor.nome FROM news INNER JOIN autor on autor.id = news.autor WHERE news.id = ".$_GET["id"] or         die (mysql_error());
 


Isso fará com que ele mate a execução e escreva o erro vindo do mysql, pra ti.

E nunca utilize dessa forma...

#Código
news.id = ".$_GET["id"]


Pegar os dados diretos por GET e informa-los diretamente sem nenhuma filtragem a uma consulta, é uma brécha imensa para SQL-INJECTION.