Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ebotega

[Resolvido] Coisa estranha durante INSERT no banco...

Recommended Posts

Então, cá está um leigo (mas leigo mesmo...) em PHP e creio que para quem manja do assunto isso é moleza.

 

Estou tentando aprender por conta e na marra PHP mas tem algumas coisas que não vai. Catei dois exemplos simples de insert no MySql via um form html, mas o problema é que quando clico no botão a página chama um txt com o scipt PHP que faz o insert no banco, tipo faz o download do script e mostra na tela em um bloco de notas.

 

Como faço pra funcionar isso. Testei o script insert.php com registros fixos, ou seja, ao invés de colocar variáveis (vindos do formulário) eu informo valores fixos, tipo: insert into clientes values ('jose', ''m', 54, 'rua bla bla bla')... e funcionou! Mas quando tento pelo form, dá essa zica do download e não insere no banco...

 

PHP, Apache e MySql funcionado perfeitamente, pelo menos nos outros testes ocorreu tudo ok.

A conexão com o banco está sendo chamada no início do arquivo insert.php através da linha include "conexao.php";, testado com valores fixos e funcionando legal.

Os dois códigos acima estão com <?php ... ?> mas foram testados em todos os casos: <?, <?php, <%.

Não testei ainda select ou update, queria fazer funcionar primeiro o insert (creio que o update chamará o arquivo igual ao insert...).

 

 

Seguem scripts que peguei na net:

 

 

PRIMEIRO:

 

arquivo: formulario.html

<html> 
<body>

<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname" /> 
Lastname: <input type="text" name="lastname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

</body>
</html>

 

arquivo: insert.php

<?php

include "conexao.php";

$ sql = "INSERT INTO pessoas (nome, sobrenome, idade) VALUES ('Firstname $ _POST []','$_ POST [lastname ]','$_ POST [idade ]')";
if (mysql_query! ($ sql, $ con))
die ( 'Error:'. mysql_error ());
else
echo "1 registro inserido."

?>

 

SEGUNDO:

 

arquivo: formulario.html

<html>
<head>
<title>Formulário de inserção</title>
</head>
<body>
<form action="insert.php" name="form" method="post">
Nome:<br>
<input type="text" name="nome" maxlenght="100" size="25" /><br>
Observações:<br>
<textarea name="observacoes" rows="4" cols="20"></textarea><br>
<input type="submit" value="Inserir" />
</form>
</body>
</html>

 

arquivo: insert.php

<?php
include "conexao.php";

$nome = $_POST["nome"];
$observacoes = $_POST["observacoes"];

$sql = "INSERT INTO testes (nome, observacoes) VALUES ('$nome', '$observacoes')";
$resultado = mysql_query($sql)
or die (mysql_error());

echo "Dados inseridos com sucesso!";
?>

 

Valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas quando tento pelo form, dá essa zica do download e não insere no banco...

 

hein?! que zica?

 

está rodando em: http://localhost/.. ?

 

Apareceu algum erro? qual ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também

O Primeiro está completamente errado. Só de olhar!!!!

O insert.php está errado.

O nome das variáveis POST's estão incoerentes com os NAMES dos INPUT's do Formulário.

 

O Certo seria assim:

<?php

include "conexao.php";

$sql = "INSERT INTO pessoas (nome, sobrenome, idade) VALUES ("'".$_POST ['Firstname']."'","'".$_POST ['lastname']."'",$_POST ['idade'])";
if (mysql_query! ($ sql, $ con))
die ( 'Error:'. mysql_error ());
else
echo "1 registro inserido."

?>

Mas o mais certo seria o exemplo 2, igualando as variávels POST's a outras variáveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Dee, testei o script que você alterou e acontece a mesma coisa.

William, estou rodando em localhost, todos os outros scripts que rodo funcionam, mas quando tento usar um formulário simples para inserir dados no banco, acontece essas "zica" que falei: ao invés de inserir os registros no banco, quando clico no botão, abre um bloco de notas do arquivo insert.php na tela... Consulto o banco e as informações não estão lá, ou seja, não executa o conteúdo do arquivo insert.php, apenas abre este arquivo na tela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

está rodando em: http://localhost/.. ?

 

Só vai acontecer oque você descreveu com o formulário, se você abrir o arquivo html com duplo clique.

 

Enqnto deveria executar o código via servidor..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só vai acontecer oque você descreveu com o formulário, se você abrir o arquivo html com duplo clique.

 

Enqnto deveria executar o código via servidor..

 

não entendi bem o que você quiz dizer...

 

os arquivos estão em "C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs", abro o formulario.html (já tentei .htm e .php) por lá, informo os dados e clico no botão, resultado: abre o notepad com o código do insert.php...

 

Qualquer outro código php vou de http://localhost/codigo.php

 

 

Por enquanto obrigado pela força (e paciência).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o seguinte:

 

http://localhost/formulario.html

 

entendeu? 'rodando' o formulário pelo servidor, em vez de dar duplo clique!

Como se fosse qualquer outro script...

 

esse trecho

abro o formulario.html (já tentei .htm e .php) por lá

me faz pensar que você está abrindo o formulário, sem usar o servidor.. ai a tua URL fica algo do tipo:

file:///C:/Arquivos de programas/Apache Software Foundation/Apache2.2/htdocs/formulario.html

 

e é ai que está o erro. Use sempre o 'localhost'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

aloco... na mosca.

 

Me vem à mente: "por que não pensei nisso antes?", talvez por achar que não daria certo... nei sei, mas algumas coisas aprendemos apanhando ou com a ajuda de quem entendo (o que foi o caso agora).

 

Valeu mesmo William!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.