Visualização não da certo

02/09/2012

0

PHP

boa tarde a todos:

estou utilizando o seguinte codigo


<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:


<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:


<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>


Marcio Araujo

Marcio Araujo

Responder

Posts

02/09/2012

Eduardo Gonçalves

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

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.
Responder

02/09/2012

Thiago Palmeira

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

02/09/2012

Marcio Araujo

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

Varallo, o codigo do conexao.php é:


<?php

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

?>

Responder

03/09/2012

Samuel



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:

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:

<?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>";
}

?>


Responder

04/09/2012

Marcio Araujo

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

Responder

16/10/2012

Eduardo Oliveira

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.
Responder

16/10/2012

Eduardo Oliveira

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

   $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...

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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar