1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

$_GET não funciona

Discussão em 'Web Development' iniciada por candycane, 28 de Abril de 2008. (Respostas: 29; Visualizações: 1892)

  1. candycane

    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: 3 de Maio de 2008
  2. DarkWolfXP

    DarkWolfXP Power Member

    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
     
  3. candycane

    candycane Power Member

    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,.... :(
     
  4. napalm

    napalm Power Member

    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.
     
  5. candycane

    candycane Power Member

    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? :\
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    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];
    }
     
  7. anjo2

    anjo2 Power Member

    Código:
    $sql = "SELECT * FROM livros WHERE id_livro=$id";
     
  8. candycane

    candycane Power Member

    Tmabém não deu angelofwisdom :(

    o php do servidor é 5.2.5

    Também não é isso anjo2 :\
     
    Última edição pelo moderador: 3 de Maio de 2008
  9. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    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];
    }  
     
  10. MPalhas

    MPalhas Power Member

    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]
    
     
  11. candycane

    candycane Power Member

    Não me apareceu nada... o get n ta a receber a variavel :( mas no url o numero do id aparece..
     
  12. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    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>";
     
  13. candycane

    candycane Power Member

    hmm.. não apareceu nada.. :\
     
  14. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Nem as linhas horizontais?
     
  15. candycane

    candycane Power Member

    que estranho.. fiz um echo "ola"; na primeira linha e tb n apareceu :s

    aparece tudo branco :\
     
    Última edição pelo moderador: 3 de Maio de 2008
  16. MPalhas

    MPalhas Power Member

    no inicio do ficheiro puseste a tag de php "<?php" ??

    ou secalhar puseste a tag curta "<?"... alguns servidores não a têm activada.
     
  17. candycane

    candycane Power Member

    pus <?php blabla... ?>

    uso sempre assim...
     
  18. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    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.
     
  19. candycane

    candycane Power Member

    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 :(
     
  20. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    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: 28 de Abril de 2008

Partilhar esta Página