Autor Tópico: Dados de formulario PHP para tabela MySQL  (Lida 12651 vezes)

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Dados de formulario PHP para tabela MySQL
« Online: 31 de Janeiro de 2011, 09:45 »
Fiz
a) um formulário em html para alimentar um banco de dados.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Formulário para inserir no BD</title></head><body>
<form method="post" action="inserindo.php" name="Mural"><input name="nome"><br>
  <textarea cols="30" rows="10" name="mensagem"></textarea><br>
  <input name="Submit" value="Inserir no banco dados" type="submit"><br>
</form>
</body></html>

b) um script que conecta no DB

<?php
$hostname = 'localhost';
$username = 'root';
$senha = 'senhadomysql';
$banco = 'teste1';
$db = mysql_connect($hostname, $username, $senha);
mysql_select_db($banco, $db);
?>

c) e um script php para inserir os dados no DB

<html>
<head>
<title>Inserir no BD</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
require("conectdb.php");
$sqlinsert = "INSERT INTO tabela1 (id_mensagem, nome, mensagem)
VALUES ('' , '$nome', '$mensagem')";
mysql_query($sqlinsert) or die ("Não foi possível inserir");
?>
</body>
</html>

Todos os 3 estão no /var/www. O problema é que só vai para o MySQL o primeiro campo, em branco, que é o ID que tem auto-increment. Os dados digitados não vão.
Alguém saberia me dizer onde está a falha? Pensei em colocar um echo em alguma parte, mas não sei bem como fazer.
[ ]s

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #1 Online: 31 de Janeiro de 2011, 10:18 »
Troque:
Código: [Selecionar]
VALUES ('' , '$nome', '$mensagem')";
Por:
Código: [Selecionar]
VALUES ('' , '$_POST[nome]', '$_POST[mensagem]')";
Por padrão o PHP não aceita variáveis globais (e é uma boa prática isso).
Advogado e analista de sistema cearense.
Twitter: @glaydson

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #2 Online: 31 de Janeiro de 2011, 10:39 »
Caramba :)
Era isso mesmo.
Vou ver se acho pelo forum alguma literatura sobre esta "boa prática".
Valeu!

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #3 Online: 31 de Janeiro de 2011, 11:11 »
Caramba :)
Era isso mesmo.
Vou ver se acho pelo forum alguma literatura sobre esta "boa prática".
Valeu!

http://www.php.net/manual/pt_BR/language.variables.php
Advogado e analista de sistema cearense.
Twitter: @glaydson

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #4 Online: 18 de Maio de 2011, 11:02 »
Precisei reinstalar a minha máquina (LAMP com phpmyadmin) e os referidos scripts não funcionam mais. Vem a mensagem do die "Não foi possível inserir".
Pelo phpmyadmin consigo inserir dados manualmente.
Para acessar, abro o navegador e digito 192.168.1.100/conectdb.php (creio que executa. Ele deixa a tela em branco), depois 192.168.1.100/form.html (ele abre a tela para inserção de dados, permite a digitação, e ao clicar no botão inserir recebo a mensagem do "die" do inserindo.php.
 :'(

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.736
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Dados de formulario PHP para tabela MySQL
« Resposta #5 Online: 18 de Maio de 2011, 14:15 »
Mude seu "die" pra incluir o erro do MySQL.

Algo como:

... or die( "Não foi possível inserir" . mysql_error() );

Assim vc vai poder saber o que aconteceu.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #6 Online: 18 de Maio de 2011, 14:32 »
Access denied for user 'www-data'@'localhost' (using password: NO)

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.736
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Dados de formulario PHP para tabela MySQL
« Resposta #7 Online: 18 de Maio de 2011, 14:43 »
Será que vc está abrindo o banco corretamente? Verifica se teu script contém o código necessário pra abrir o banco...
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #8 Online: 18 de Maio de 2011, 15:12 »
Simplesmente executo-o na janela do navegador que vai abrir a tela para inserir dados por 192.168.1.100/conectdb.php
Citar
<?php
$hostname = 'localhost';
$username = 'root';
$senha = 'minhasenha';
/*Aqui eh o banco, nao a tabela*/
$banco = 'meubanco';
$db = mysql_connect($hostname, $username, $senha);
mysql_select_db($banco, $db);
?>
Depois digito a URL 192.168.1.100/form.html que tem action no form para inserindo.php
Citar
<html>
<head>
<title>Inserir no BD</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
/*Aqui tem que ser o nome exato do arquivo de conexao ao DB*/
require("conectdb.php");
/*Aqui e a tabela, nao o banco*/
$sqlinsert = "INSERT INTO tabela1 (id_mensagem, nome, mensagem)
VALUES ('' , '$_POST[nome]', '$_POST[mensagem]')";
mysql_query($sqlinsert) or die ("Não foi possível inserir". mysql_error());
?>
</body>
</html>

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.736
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Dados de formulario PHP para tabela MySQL
« Resposta #9 Online: 18 de Maio de 2011, 15:22 »
Vc conecta em um script e acessa em outro? Acho que isso não deveria funcionar... junte tudo num script só.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #10 Online: 18 de Maio de 2011, 16:43 »
Achei que o require fazia isso, para não precisar fazer uma conexão a cada inserção.
Sei que existe um session start, que depois preciso aprender também.
Mas agora estou trancado neste erro, que com a dica do die (mysql_error()) parece estar mais perto de ser identificado.

Offline valdineysr

  • Usuário Ubuntu
  • *
  • Mensagens: 139
  • Linux para todos
    • Ver perfil
    • opengrafics-linux e atrelados gráficos.
Re: Dados de formulario PHP para tabela MySQL
« Resposta #11 Online: 19 de Maio de 2011, 12:04 »
Fiz
a) um formulário em html para alimentar um banco de dados.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Formulário para inserir no BD</title></head><body>
<form method="post" action="inserindo.php" name="Mural"><input name="nome"><br>
  <textarea cols="30" rows="10" name="mensagem"></textarea><br>
  <input name="Submit" value="Inserir no banco dados" type="submit"><br>
</form>
</body></html>

b) um script que conecta no DB

<?php
$hostname = 'localhost';
$username = 'root';
$senha = 'senhadomysql';
$banco = 'teste1';
$db = mysql_connect($hostname, $username, $senha);
mysql_select_db($banco, $db);
?>

c) e um script php para inserir os dados no DB

<html>
<head>
<title>Inserir no BD</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?
require("conectdb.php");
$sqlinsert = "INSERT INTO tabela1 (id_mensagem, nome, mensagem)
VALUES ('' , '$nome', '$mensagem')";
mysql_query($sqlinsert) or die ("Não foi possível inserir");
?>
</body>
</html>

Todos os 3 estão no /var/www. O problema é que só vai para o MySQL o primeiro campo, em branco, que é o ID que tem auto-increment. Os dados digitados não vão.
Alguém saberia me dizer onde está a falha? Pensei em colocar um echo em alguma parte, mas não sei bem como fazer.
[ ]s

joga esse teu código no bluefish que tu vai encontrar uns errinhos de sintax lá ok?
Valdiney Ribeiro
---------------------------------
Analista de Sistemas

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.369
  • @Ceará
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #12 Online: 19 de Maio de 2011, 12:50 »
Access denied for user 'www-data'@'localhost' (using password: NO)

Dá uma olhada neste teu include. Não tá pegando nada das configurações do banco.
Advogado e analista de sistema cearense.
Twitter: @glaydson

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #13 Online: 19 de Maio de 2011, 12:59 »
Hehe, acredito!! Tentando por partes então.
Se eu abrir o navegador e digitar http://192.168.1.200/conectdb.php (esse arquivo está em /var/www)
Citar
<?php
$hostname = 'localhost';
$username = 'root';
$senha = 'senhadomysql';
$banco = 'tabela1';
$db = mysql_connect($hostname, $username, $senha);
mysql_select_db($banco, $db);
?>
Tem como saber se ele "pegou" a conexão?

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re: Dados de formulario PHP para tabela MySQL
« Resposta #14 Online: 19 de Maio de 2011, 13:02 »
corrigindo:
$banco='banco1'