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

[PHP] Nao manda para a BD

Discussão em 'Web Development' iniciada por orien, 13 de Julho de 2008. (Respostas: 18; Visualizações: 681)

  1. orien

    orien [email protected] Member

    Boas tardes.

    tou com um problema.. e nao consigo resolver isto.. tou ha 3 dias a modificar partes do codigo e nunca consigo mandar nada para a base de dados.

    Isto e suposto ser um formulario:

    Código:
    <?php
    include 'db_connect.inc';
    if (isset($_POST['name']))
    {
      $name=$_POST['name'];
      $age=$_POST['age'];
      $country=$_POST['country'];
      $class=$_POST['class'];
      $arlink=$_POST['arlink'];
      $raids=$_POST['raids'];
      $exguilds=$_POST['exguilds'];
      $describe=$_POST['describe'];
      echo $name;
      echo $age;
      echo $country;
      echo $class;
      echo $arlink;
      echo $raids;
      echo $exguild;
      echo $describe;
    
      
      $SQL = "INSERT INTO ".$apply." (name, age, country, class, arlink, raids, exguilds, describe) VALUES ('".$name."','".$age."','".$country."','".$class."','".$arlink."','".$raids."','".$exguilds."','".$describe."')";
      $query = mysql_query($SQL);
      if($query==1)
        echo 'Data sucessful inserted';
    }        
    ?>  
    
    <form method="POST" action="">                      
    <p>Name:
      <input type="text" name="name" />
    </p>
    <p>Age: 
      <input type="text" name="age" />
    </p>
    <p>Country: 
      <input type="text" name="country" />
    </p>
    <p><hr></p>
    <p>Class: 
      <input type="text" name="class" />
    </p>
    <p>Armory Link: 
      <input type="text" name="arlink" />
    </p>
    <p>Raid experience(TBC): 
      <input type="text" name="raids" />
    </p>
    <p>Ex-Guilds: 
      <input type="text" name="exguilds" />
    </p>
    <p><hr></p>
    <p>Describe Yourself</p>
    <p>
      <textarea name="describe" cols="50" rows="10"></textarea>
      </p>
    <p>___________________________</p>
    <p>
      <input type="submit" name="submit" value="Insert" />
      </form>
    Sera que alguem me pode ajudar?

    Obrigado
     
  2. nram

    nram Power Member

    dá algum erro? Parece que dá.. mas devias ter metido o código da página toda... olha o seguinte:

    Código:
    $SQL = "INSERT INTO ".$apply." .....
    
    $apply = null ? loool.. não tem nenhuma variável a ir buscar qualquer valor... além disso penso que nao podes fechar aí as aspas... isso é o ponto 1 ....


    Seguindo:

    Código:
    VALUES ('".$name."','".$age."','".$country."','".$class."','".$arlink."','".$raids."','".$exguilds."','".$describe."')";
    
    Penso que tens que tirar as ASPAS... só leva pelicas. e tira os pontos. :S .. lol :)

    Não tenho aqui simulador de PHP para verificar mais algum erro... isso foi visto assim de repente.. parece que seja só isso...

    cumprimentos
     
  3. orien

    orien [email protected] Member

    No db_connect tenho isto
    Código:
    [SIZE=2][COLOR=#808080]
    $apply = "Dungeon_app";
    [/COLOR][/SIZE]
    mas como sou um nobato nao sei o que fazer vou exprimentar tirar o que dissestes.

    So mais uma coisa o ke ponho em vez do ".$apply." ?
    obrigado
     
  4. nram

    nram Power Member

    rapaz... acho que andas todo trocado.. :D

    esse apply que tens no tal ficheiro connect é o nome da BASE DE DADOS...

    pronto.. agora quanto ao SQL:

    Código:
    $variavelqualquer=mysql_query("INSERT INTO nome_da_tabela  (nome dos campos se for preciso) VALUES ('$variaveis_para_preencher_os_campos')"; 

    Cumprimentos
     
  5. orien

    orien [email protected] Member

    nao deu tambem : \

    pus o seguinte codigo:

    Código:
    $query = mysql_query("INSERT INTO Dungeon_app (name, age, country, class, arlink, raids, exguilds, describe) VALUES ('$name','$age','$country','$class','$arlink','$raids','$exguilds','$describe')");
    
    e nao deu :(
     
  6. nram

    nram Power Member

    diz que erro te dá.. sff! para ser mais fácil!! (não tenho aqui simulador para correr isso)...
     
  7. MPalhas

    MPalhas Power Member

    o problema não era das aspas. isso é apenas uma maneira diferente de escrever variáveis

    podes começar por explicar exactamente o que é que significa Dungeon_app. se é o nome da base de dados então está mal. a query leva o nome da tabela e não da base de dados

    e podes elaborar esse "não deu"? o que é que acontece exactamente, dá algum erro?

    e mostra também o código do db_connect.inc
     
  8. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    PHP:
    $query mysql_query("INSERT INTO Dungeon_app (`name`, `age`, `country`, `class`, `arlink`, `raids`, `exguilds`, `describe`) VALUES ('$name','$age','$country','$class','$arlink','$raids','$exguilds','$describe')");
    if(
    mysql_error()) die("Erro do MySQL: " mysql_error());
    Acrescenta esta segunda linha a seguir à linha do query, mesmo ;)

    Não te esqueças que é INSERT INTO base_de_dados.tabela ... OU INSERT INTO tabela ...; se Dungeon_app for uma base de dados, está errado
    edit - como o MPalhas disse :P
     
  9. nram

    nram Power Member

    Porque metes-te acentos agudos no nome dos campos?


    Cumprimentos
     
  10. orien

    orien [email protected] Member

    db_connect tem isto:

    Código:
    [SIZE=2][COLOR=#0000ff]
    <?[/COLOR][/SIZE][SIZE=2][COLOR=#a31515]php
    [/COLOR][/SIZE][SIZE=2][COLOR=#808080]$db_hostname = "mysql4.freehostia.com"; # servidor
    $db_username = "orillo_wow"; # utilizador
    $db_userpass = "*****"; # password
    $db_name = "orillo_wow"; # base de dados
     
    $tabela = "Dungeon";
    $apply = "Dungeon_app";
     
    $connect = mysql_connect ($db_hostname, $db_username, $db_userpass) or die("Erro na liga‡Æo ao servidor!");
    $select = mysql_select_db ($db_name, $connect) or die("Erro na base de dados!");
    [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]?>
    [/COLOR][/SIZE]
     
  11. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Porque o query é INSERT INTO tabela (`coluna`, `coluna`) VALUES ("valor", "valor")

    O que me leva a voltar a modificar o query:
    PHP:
    $query mysql_query('INSERT INTO Dungeon_app (`name`, `age`, `country`, `class`, `arlink`, `raids`, `exguilds`, `describe`) VALUES ("'.$name.'","'.$age.'","'.$country.'","'.$class.'","'.$arlink.'","'.$raids.'","'.$exguilds.'","'.$describe.'")');
    if(
    mysql_error()) die("Erro do MySQL: " mysql_error());   
     
  12. orien

    orien [email protected] Member

    deu deu deu deu deu!!!

    Obrigado a todos :)
     
  13. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    O que é que deu?
    Se o que deu foi o que eu te disse para fazeres, apaga a segunda linha. Pode acabar por ser uma falha de segurança mais tarde.
     
  14. orien

    orien [email protected] Member

    ya com o teu codigo aquilo funcionou.. mandou os dados para a base de dados :) mas por exemplo gostava de ter esse erro mas ao contrario por exeplo

    Código:
     if($query==1)
        echo '<p>Dados inseridos com sucesso.</p>';
      else
        echo '<p>Erro ao gravar dados.</p>';
    isto funciona com o teu query? posso usar ja este codigo?
     
  15. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Ainda bem que resultou :)

    Quanto ao que queres, é isto:
    PHP:
    if(mysql_error())
      echo 
    '<p>Erro ao gravar dados.</p>';
    else
      echo 
    '<p>Dados inseridos com sucesso.</p>';
    (já agora, um aparte: quando escreveres código PHP aqui no fórum, em vez da tag [code][/code], usa a [php][/php] ;) )
     
  16. orien

    orien [email protected] Member

    pronto ja esta tudo a funcionar :) obrigado a todos :D
     
  17. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Anytime :)

    Só para confirmar uma última coisa: não te esqueças de trocar o nome da tabela Dungeon_app de volta para a variável $apply, e não te esqueças que agora o que abre a string não é uma aspa, mas sim uma plica ;)
     
  18. anjo2

    anjo2 Power Member

    Porque é assim que deve ser, com acentos agudos o mysql sabe logo que são campos da base de dados e não algum comando ou uma variavel, etc... se não usares isso e um campo tiver algum nome de um comando irá dar erro. isto também se aplica ao nome da tabela.

    Se a tabela é sempre a mesma, para quê gastar mais memória numa variável? Se é só preciso aí, apaga a variável, de outro modo sim, é boa pratica utilizar a variável.
     
  19. nram

    nram Power Member

    Obrigado pelo esclarecimento!

    Cumprimentos.
     

Partilhar esta Página