Ir para conteúdo
Fórum Script Brasil
  • 0

jean2016

Pergunta

Boa noite pessoal, sou novo aqui no fórum e gostaria da ajuda de vocês para resolver um problema em relação a postagem de dados de um formulário no banco de dados do phpMyAdmin.

OBS: o formulário e a função gravar.php realiza a operação normalmente e depois volta para index mas quando procuro os dados no banco de dados nada foi gravado. 

 

Formulário com a função de enviar os dados para a "funcao_gravar.php"

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>

<body>


<form name="form1" id="form1" method="post" action="funcao_gravar.php">
 
  <table width="375" border="0" cellpadding="2" cellspacing="2">
    <tr>
      <td width="62"><div align="right"><strong>PRODUTO:</strong></div></td>
      <td width="299"><INPUT type="text" nome="produto" id="produto" size="40";  /></td>
    </tr>
    <tr>
      <td><div align="right">PREÇO</strong></div></td>
      <td><INPUT type="text" nome="preço" id="preço" size="10" value="R$" /><td>
    </tr>
    <tr>
      <td><div align="right"><div></div></td>
      <td><INPUT type="submit" name="button" value="Cadastar"  /></td>
    </tr>
  </table>
  
</form>

</body>
</html>

 

 

Código com a função de postar os dados do formulário no banco de dados. 

<?

   $sql = mysql_connect("localhost", "root", "") or die ("Falha na conexão com o phpMyAdmin");
   $bd = mysql_select_db("curso", $sql) or die ("Erro, bd incorreto ou não existe");

    $produto = $_POST['produto'];

    $preço = $_POST['preço'];

    

    $sql = mysql_query("INSERT INTO produtos (produto, preço) value ('$produto', '$preço')");
    

   
    

    header("Location: index.php");

?>

Editado por jean2016
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Boas 

O phpMyAdmin não é um bando de dados mas sim um cliente web do banco de dados (https://pt.wikipedia.org/wiki/PhpMyAdmin

Existem várias coisas erradas com o código em "funcao_gravar.php". Primeiro você devia de utilizar mysqli ou PDO para fazer a ligação a base de dados em vez de utilizar mysql, as funções do mysql são antigas tem vários problemas com o escape de caracteres, etc...

Pode encontrar mais informação nestes links:

http://stackoverflow.com/questions/12097245/php-mysql-v-mysqli-v-pdo

http://code.tutsplus.com/pt/tutorials/pdo-vs-mysqli-which-should-you-use--net-24059

 

Não é feita a validação dos dados do formulário.

O atributo dos input fields está errado, é "name" e não "nome" como você tem no seu código HTML.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado a todos por responder minhas duvidas, ingressei a pouco tempo no mundo da programação e graças a vocês descobrir que alguns conceitos que aprendi estavam obsoletos .

Essa discussão é para fins didáticos.

Seguir as indicações de vocês e atualizei o código, durante a atualização descobrir que os dados da "funcao_gravar.php" não coincidiam com o banco de dadosalém disso os erros de digitação do formulário tornava tudo mais complicado.

Primeiro atualizei o formulário presente na "index.php" em seguida corrigir o banco de dados.

Vejam como ficou.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>

<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css">
<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
</head>

<body>


<form name="form1" id="form1" method="post" action="funcao_gravar.php">
 
  <table width="806" border="0" cellpadding="2" cellspacing="2">
    <tr>
      <td width="83"><div align="right"><strong>PRODUTO:</strong></div></td>
      <td width="621"><span id="sprytextfield1">
      <input type="text" name="produto" id="produto" size="35";  />
      <span class="textfieldRequiredMsg">Você deve definior o nome do produto.</span><span class="textfieldMinCharsMsg">Número mínimo de caracteres não atendido.</span><span class="textfieldMaxCharsMsg">Número máximo de caracteres excedido.</span></span></td>
    </tr>
    <tr>
      <td><div align="right">PREÇO</strong></div></td>
      <td><span id="sprytextfield2">
      <input type="text" name="preço" id="preço" size="10" value="R$" />
      <span class="textfieldRequiredMsg">Você deve definior o preço do produto</span><span class="textfieldMinCharsMsg">Número mínimo de caracteres não atendido.</span><span class="textfieldMaxCharsMsg">Número máximo de caracteres excedido.</span></span></td>
      <td width="82">
    </tr>
    <tr>
      <td><div align="right"><div></div></td>
      <td><INPUT type="submit" name="button" value="Cadastar"  /></td>
    </tr>
  </table>
  
</form>
 

<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {minChars:3, maxChars:200});
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2", "none", {minChars:6, maxChars:20});
</script>
</body>
</html>

"Funcao_gravar.php" sem atualização. obs: referencia ao código desatualizado...

	<?
	 
	$sql = mysql_connect ("localhost", "root", ""); 
   $db = mysql_select_db("curso, $sql");


    $produto = $_POST['produto'];
    $preço = $_POST['preço'];


	
	$sql = mysqli_query("INSERT INTO produtos (produto, preço) value ('$produto', '$preço')");

   
    

    header("Location: index.php");

	
	?>

OBS: testei sem atualizar a "funcao_gravar.php" e funcionou perfeitamente, mas como o código esta obsoleto atualizei conforme sugerido com "pdo" , vejam como ficou.

 

"funcao_gravar.php" atualizada com "pdo"

<?php

$conect	= new PDO("mysql:host=localhost;dbname:curso 2", $usuario="root", $senha="");

function erro() {
	echo "(!) Erro ocorrido. (!)";
}

function inserir() {

$produto		= $_POST['produto'];
$preço	        = $_POST['preço'];

try {

	$add	= $conn->prepare("INSERT INTO produtos (produto, preço) VALUES ('$produto', '$preço')");  
	}
	catch (PDOException $i)
	{
		
		echo "Erro: " . $i->getMessage();
	}
}
    

    header("Location: index.php")
?>

 

 

 

Aparentemente a conexão com o banco de dados "curso 2" esta correta mas quando o formulário envia os dados para a "funcao gravar.php" ele não grava os dados.

 

Resumo estou com duas duvidas, a primeira é porque os dados não esta sendo registrado no banco de dados? 

A segunda duvida é como listar os dados gravados no banco de dados na 'index.php" ?

Editado por jean2016
Correção de erros e explicação!
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...