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

O que há de errado neste código?

Discussão em 'Web Development' iniciada por wrproject, 18 de Julho de 2007. (Respostas: 2; Visualizações: 523)

  1. wrproject

    wrproject Power Member

    Boas, eu tenho o seguinte problema neste código.
    PHP:
    <?php
    include "conecta.php";
    $user=$_GET["user"];
    $data=date("d/m/y");
    $hora=date("H:m:s");
    $tema=$_POST["titulo"];
    $mensagem=$_POST["mensagem"];
    echo 
    $user;
    $sql="insert into topico(autort,temat,datat,horat)
         values('
    $user','$tema','$data','$hora')";
    $r1=mysql_query($sql);

    $sql3="select MAX(id) from topico";
    $id=mysql_query($sql3);

    $sql2="insert into mensagem(autorm,mensagem,idm,datam,horam)
          values('
    $user','$mensagem',$id,'$data','$hora')";
    $r2=mysql_query($sql2);



    echo 
    "topico inserido";
    ?>
    1º a variavel hora ao receber a data, recebe sempre 15:07:05, ou seja, só muda os segundos, 2º O meu objectivo é que depois de a sentença sql ser executada na variavel r1, queria que ele pegasse o ultimo id e a guardase na variavel $id, só que depis de ser executada todo o codigo, o campo idm da tabela mensagem aparece sempre o valor 0, enquanto o id do campo topico vai mudando.
    o qué que posso fazer para que á variavel $id receba o ultimo id?
    Cumps
     
    Última edição: 18 de Julho de 2007
  2. p3dro

    p3dro Power Member

    para saberes o ultimo id inserido podes usar o mysql_insert_id

    no teu caso seria, algo deste tipo:

    PHP:
    $sql="insert into topico(autort,temat,datat,horat) values('$user','$tema','$data','$hora')";
    $r1=mysql_query($sql);
    $id=mysql_insert_id($r1);
    tu ao fazeres isto
    PHP:
    $sql3="select MAX(id) from topico";
    $id=mysql_query($sql3);
    só estás a fazer a query à tabela, n estás a ir buscar o valor, tinha depois de fazer o mysq_fetch_array

    PHP:
    $sql2="insert into mensagem(autorm,mensagem,idm,datam,horam)
          values('
    $user','$mensagem',$id,'$data','$hora')";
    $r2=mysql_query($sql2);
    acho k tens de colocar o $id entre plicas (não tenho a certeza pk smp usei as plicas :-D)


    PHP:
    $hora=date("H:m:s");
    estás a obter mal os minutos, deveria ser:
    PHP:
    $hora=date("H:i:s");
     
    Última edição: 18 de Julho de 2007
  3. msdevweb

    msdevweb Power Member

    Bem, para receberes o ultimo id se o MAX insistir em nao funcionar, faz

    $slq="SELECT * FROM `topico` ORDER BY `id` DESC LIMIT 1"; //para retrornar apenas o ultimo.

    $res=mysql_query($sql) or die("ERRO");

    $dados=mysql_fetch_array($res);

    $id=dados['id'];

    //feito :)

    Quanto ao resto, deves ter reparado que uso sempre os caracteres `` quando me refiro a titulos da bd. e tb uso \"$dado_a_inserir\" quando insiro algo na BD. Acho que devias fazer o mesmo, poupa-te muitos erros e dores de cabeças e o codigo fica menos confuso.

    Exmplo em parte do teu codigo:

    £sql2="INSERT INTO `mensagem` (`autorm`, `mensagem`, `idm`, `datam`, `horam`)
    VALUES(\"$user\", \"$mensagem\", \"$id\", \"$data\", \"$hora\")"
    ;



    Assim fica tudo mais bonitinho, e poupa-te bastantes erros....

    Refaz o teu codigo assim... e talvez funcione tudo à primeira :)
     
    Última edição: 18 de Julho de 2007

Partilhar esta Página