[PHP] Nao manda para a BD

orien

Portugal@Home 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
 
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
 
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
 
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
 
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 :(
 
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
 
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
 
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
Porque metes-te acentos agudos no nome dos campos?


Cumprimentos
 
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]
 
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());
 
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?
 
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] ;) )
 
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 ;)
 
Porque metes-te acentos agudos no nome dos campos?


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

Obrigado pelo esclarecimento!

Cumprimentos.
 
Back
Topo