$_GET não funciona

candycane

Power Member
Boa tarde comunidade!

Eu estou com um problema que nunca me aconteceu antes :(

Quero passar uma valor por GET para outra pagina, e não consigo...

Localmente funciona direitinho, mas no servidor não...

Tenho uma pagina de listagem e outra de detalhes.

Listagem:
Código:
$sql = "SELECT * FROM livros";
$resultado = mysql_query($sql, $ligacao) or die("erro no query listagem");

while($row = mysql_fetch_assoc($resultado)){
       $id = $row['id_livro'];
       echo "<a href='detalhe_livro.php?id=$id'><img src='" . $row['img_livro'] . "' /></a>;
}

Detalhes:
Código:
$id = $_GET['id'];

$sql = "SELECT * FROM livros WHERE id_livro={$id}";

$resultado = mysql_query($sql, $ligacao);
while($row = mysql_fetch_assoc($resultado)){
     echo $row['nome'];
     echo $row['isbn];
}


resumido é isso que tenho, não faço a minima ideia porque não dá :(
 
Última edição pelo moderador:
Certeza que o $id está a funcionar correctamente?
A ver assim parece estar td bem...
Disseste que localmente funciona e no servidor ja n... podias ser mais explicito? Quando carregas no link ele abre-te a pagina de detalhes em branco?
Cumps
 
da-me o erro personalizado que fiz:

$resultado = mysql_query($sql, $ligacao) or die("erro no query detalhes");

e a pagina fica em branco...

Eu teste localmente, no meu servidor apache, localhost.

Mas quando faço o upload desses 2 ficheiros para por online(no servidor) já não dá... aparece-me o erro: erro no query detalhes

o pior é que não sei ver se o phpinfo() tem super globais activa.. ma axo k isso é sempre sim,.... :(
 
eu não tenho a certeza mas pode estar a acontecer que com superglobals:
Código:
$id =& $_GET['id'];
ou seja, quando alteraras o $id a seguir, está a mudar o valor da variável $_GET.
 
napalm, obrigada pela ajuda, mas não funcionou :(

ja estou a quebrar a cabeça LOL

isto só pode ser problema do servidor .... mas qual? :\
 
Troca o $_GET por $HTTP_GET_VARS.

Já agora, podes evitar um problema grave de segurança acrescentando só uma linha de código nos detalhes:
PHP:
 $id = $HTTP_GET_VARS['id'];
if(!is_numeric($id)) exit(); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<

$sql = "SELECT * FROM livros WHERE id_livro={$id}";

$resultado = mysql_query($sql, $ligacao);
while($row = mysql_fetch_assoc($resultado)){
     echo $row['nome'];
     echo $row['isbn];
}
 
Tmabém não deu angelofwisdom :(

o php do servidor é 5.2.5

Também não é isso anjo2 :\
 
Última edição pelo moderador:
O anjo2 apenas "disse" que não precisavas das chavetas em volta da variável na string do query, o que é verdade :)
Em relação ao que eu disse, se o HTTP_GET_VARS não deu, então vamos precisar de mais pormenores. Mas mesmo assim, coloca o que te disse ;) é apenas um aparte - não tem nada a ver com este problema específico - mas ajuda a evitar uma falha comum (SQL Injection) no teu sistema.
Faz isto e diz-nos o resultado:
PHP:
 $id = $_GET['id'];
echo htmlentities("Conteúdo da variável ID: $id<br>\n----------------------------------------------<br>\n");
if(!is_numeric($id)) exit();

$sql = "SELECT * FROM livros WHERE id_livro=$id";

$resultado = mysql_query($sql, $ligacao);
while($row = mysql_fetch_assoc($resultado)){
     echo $row['nome'];
     echo $row['isbn];
}
 
não quero parecer estúpido, mas ás vezes o problema nisso é uma coisa absurdamente simples, como estar o nome da variavel mal escrito.

faz o do costume, logo no inicio da pagina metes
Código:
echo $_GET['id']
só para ver se ele escreve o valor correcto. pode não ajudar em nada mas ás vezes resolve os problemas mais simples e que por vezes são os mais dificeis de detectar.

só outra coisa tens ai um erro de sintaxe:

Código:
$id = $row['id_livro'];
echo "<a href='detalhe_livro.php?id=$id'><img src='" . $row['img_livro'] . "' /></a>;  [COLOR=Red]<<<<< falta fechar as aspas aqui[/COLOR]
 
MPalhas, fazer um echo como debug nunca é estúpido :P pelo menos a mim já me ajudou milhares de vezes!
candycane, faz isto logo como primeira linha do script:
PHP:
echo "<hr><pre>";
print_r($_GET);
echo "</pre><hr>";
 
que estranho.. fiz um echo "ola"; na primeira linha e tb n apareceu :s

aparece tudo branco :\
 
Última edição pelo moderador:
no inicio do ficheiro puseste a tag de php "<?php" ??

ou secalhar puseste a tag curta "<?"... alguns servidores não a têm activada.
 
Vá, algumas perguntas estúpidas:
1) como é que estás a aceder ao script?
2) estás a enviá-lo por FTP para o servidor, certo?
3) há alguma coisa que seja chamada antes dessas linhas?

Diz "tim tim por tim tim" aquilo que fazes a partir do momento em que alguém aqui te diz para modificares alguma coisa.
 
antes disso tenho:

<?php session_start(); ?>

<?php
include("database.php");
require_onde("../../class2.php");

?>

<?php

$id = $_GET['id_livro'];

..........

?>

estive a fazer linha a linha, e o branco aparece qd faço o get :(
 
require_once, espero :P

Experimenta colocar o $id=... antes do include("database.php");

O teu problema há-de estar num desses includes - no database.php ou no class2.php.

edit - mal pensado. Se a página fica em branco, então o script deve estar a terminar num desses dois ficheiros. Se puderes colocar cá o conteúdo deles (excepto informações sensíveis), era bom :P

Já agora, para limpar a consciência: o id é sempre numérico, não é?
E afinal é "id" ou "id_livro"?
 
Última edição:
Back
Topo