Ir para conteúdo

POWERED BY:

Arquivado

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

Follow

Gravar formulario em Banco de Dados

Recommended Posts

Bem primeiramente bom dia.

Eu possuo um formulario com 2 campos e script que faz um calculo. Eu preencho o primeiro campo ao clicar em submit ele gera o conteudo do segundo campo.

O Formulario esta assim:

 

<form action="javascript:exit();"><table class="indented">
 <tr>
 <th>Texto</th>
 <td><input type="text" name="input" size="50"/></td></tr>
 <tr><th> </th><td style="text-align:center"> <input type="button" onclick="pi.value = chise_pi(input.value)" value="Gerar Calculo"/></td></tr>
 <tr>
 <th>Pi:</th><td><input type="text" name="pi" size="50"/></td></tr>
</table></form>

No caso as tabelas seriam input e pi, porem como o click no gerar chama a função não sei como fazer para gravam em um banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mysql5

Meu conhecimento é bem novato, estou começando a uns meses. Desculpe pelo titulo com o "ajuda"

Vo dar mais ou menos o que to pretendendo fazer. Eu gostaria de salvar os resultados do que gerou no Banco, para os poucos ir implementando um sisteminha de busca de calculos ja efetuados.

Inicialmente minha duvida é de como gravar os resultados, eu poderia fazer um grava.php no submit com os dados de conexao com o banco, porem o botão submit ja faz o calculo do segundo campo. No caso eu queria que fizesse os 2, não tenho ideia de como fazer :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

porem o botão submit ja faz o calculo do segundo campo. No caso eu queria que fizesse os 2, não tenho ideia de como fazer :/

 

Nesse caso, você deverá primeiro substituir a ação do seu botão, atribuindo uma função JavaScript para que faça o cálculo e envie os dados:

 

<input type="button" onclick="calcular();" value="Gerar Cálgulo" />

 

Ou então, atribuir as duas ações:

 

<input type="button" onclick="pi.value = chise_pi(input.value); enviar();" value="Gerar Cálgulo" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa a ignorancia minha, mas a função do botão ja é JS o que ta entre "". No caso eu chamaria o grava.php ao invés do "enviar()"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso eu chamaria o grava.php ao invés do "enviar()"?

 

No action do seu form você colocaria grava.php

 

e no enviar você faria o cálculo e colocaria: seuform.submit();

Compartilhar este post


Link para o post
Compartilhar em outros sites

To boiando, vamos la.

Se me disse para mudar o action do form

<form action="javascript:exit();"><table class="indented">
para

<form action="grava.php"><table class="indented">
Seria isso? porque se eu tirar "javascript:exit();" meu script entra em loop teoricamente =/

 

Você teria um exemplo pratico de algo que grave no banco que ja exista um calculo previo em JS. Exemplo: campo1=1+1 submit com js campo2=2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você teria um exemplo pratico de algo que grave no banco que ja exista um calculo previo em JS. Exemplo: campo1=1+1 submit com js campo2=2

 

teste.html

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http-~~-//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http-~~-//www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Exemplo de envio de formulário com cálculo</title>
	<script type="text/javascript">
		function somar(){
			var campo1 = parseInt( document.getElementById( 'campo1' ).value );
			var campo2 = parseInt( document.getElementById( 'campo2' ).value );

			document.getElementById( 'resultado' ).setAttribute( 'value' , campo1 + campo2 );
			document.getElementById( 'form1' ).submit();
		}
	</script>
</head>
<body>
	<form id="form1" action="grava.php" method="post">
		<label for="campo1">
			<span>Campo 1:</span><br />
			<input id="campo1" name="campo1" size="50" />
		</label>
		<br />
		<label for="campo2">
			<span>Campo 2:</span><br />
			<input id="campo2" name="campo2" size="50" />
		</label>
		<br />
		<label for="resultado">
			<span>Resultado:</span><br />
			<input id="resultado" name="resultado" size="50" readonly="readonly" />
		</label>
		<br />
		<input type="button" onclick="somar();" value="Somar" />
	</form>
</body>
</html>

 

grava.php

<?php
$campo1 =& $_POST[ 'campo1' ];
$campo2 =& $_POST[ 'campo2' ];
$resultado =& $_POST[ 'resultado' ];

echo 'O campo 1 vale: ' , $campo1 , '<br />';
echo 'O campo 2 vale: ' , $campo2 , '<br />';
echo 'O resultado vale: ' , $resultado , '<br />';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Subistitiu os valores do seu grava.php por esses:

 

grava.php

<?php
$dbConnection = mysql_connect("endereço", "usuario", "senha") or die("Não foi possível estabelecer uma ligação ao MYSQL!");
$dbSelected = mysql_select_db("kuroneko",$dbConnection) or die("Não foi possível seleccionar a Base de Dados! |Conexão ao MYSQL: ".$dbConnection);
if(isset($_POST['botao_submit'])) {
$campo1 = $_POST['campo1'];
$campo2 = $_POST['campo2'];
if(!(empty($campo1) || empty($campo2))) {
mysql_query("INSERT INTO teste(campo1,campo2) VALUES('".$_POST['campo1']."','".$_POST['campo2']."')");
$id = mysql_insert_id();
}
}
if(isset($id)) {
$get = mysql_query("SELECT * FROM teste WHERE id=".$id);
$record = mysql_fetch_assoc($get);
}          
?>
Esta correto?

No caso acho que não gravou por não existir a tabela teste no banco. Como ficaria o insert do select para eu adicionar na tabela teste: ID(autoincremento), Campo1, Campo2, Data(Dia/mês/Ano), Horario(Hora:Minuto:Segundo) e IP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como ficaria o insert do select para eu adicionar na tabela teste: ID(autoincremento), Campo1, Campo2, Data(Dia/mês/Ano), Horario(Hora:Minuto:Segundo) e IP

 

O ideal é que você tenha na tabela em vez de uma coluna data e uma horario você tenha apenas uma gravado do tipo TIMESTAMP, criando a tabela:

 

mysql> create table `teste`(
	-> 	`id` mediumint(8) unsigned not null auto_increment,
	-> 	`campo1` mediumint(8) not null,
	-> 	`campo2` mediumint(8) not null,
	-> 	`gravado` timestamp not null default current_timestamp,
	-> 	`ip` varchar(15) default null,
	-> 	primary key(`id`)
	-> );
Query OK, 0 rows affected (0.01 sec)

Para recuperar o IP você pode usar: $_SERVER[ 'REMOTE_ADDR' ]

 

Para gravar ficaria assim:

 

//...
$campo1 = $_POST['campo1'];
$campo2 = $_POST['campo2'];
$ip = $_SERVER[ 'REMOTE_ADDR' ];

if ( !empty($campo1) && !empty($campo2) ) ){
mysql_query( sprintf( 'INSERT INTO `teste`(`campo1`,`campo2`,`ip`) VALUES(%d,%d,"%s");' , $campo1 , $campo2 , $ip ) );
$id = mysql_insert_id();
}
//...

 

A coluna gravado como está com DEFAULT CURRENT_TIMESTAMP irá gravar automaticamente a data e hora da gravação para você

Compartilhar este post


Link para o post
Compartilhar em outros sites

O seu exemplo funciona perfeitamente e grava no banco.

Ainda não consegui alterando os campos da minha tabela e php, simplesmente o javascript ta perdendo a função e não calculando quando clico no botão. Antes estava dessa forma:

<form action="javascript:exit();"><table class="indented">
eu to perdendo o código subistitui deixando assim
<form id="form1" action="grava.php" method="post"><table class="indented">
.

o onclick permanece inalterado:

<input type="button" onclick="pi.value = chise_pi(input.value)" value="Gerar Calculo"/>

Antes dele abrir o form ele tem um retorno, sera que poderia ter a ver?

 

return pi;
}
//-->
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se to sabendo me expressar.

Nessa linha do seu:

 

<form id="form1" action="grava.php" method="post"><table class="indented">

No action, tem como colocar as 2 ações ao mesmo tempo? Meu script sem isso aqui

<form action="javascript:exit();">
parece que não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste a funcao:

exit() pois sem ter a menor ideia do que ela faz, nao vamos saber oque sugerir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste a funcao:

exit() pois sem ter a menor ideia do que ela faz, nao vamos saber oque sugerir.

 

Segue o código do jeito que ta:

 

<script src="http://www.matematicando.org/lamat.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
function createRandomLowerCaseLetter()
{
   return String.fromCharCode(97 + Math.round(Math.random() * 25));
}

function chise_pi (deno) {
     nostre = '';

    for (i=0; i<100; i++) {
      nostre += createRandomLowerCaseLetter();
    }
    ino = do_lamat(nostre).substring(5, 4);

    pi = do_lamat(ino + deno) + '/' + ino;

    return pi;
}
//-->
</script>

<form action="javascript:exit();"><table class="indented">
  <tr>
    <th>Texto</th>
    <td><input type="text" name="input" size="50"/></td></tr>
  <tr><th> </th><td style="text-align:center">  <input type="button" onclick="pi.value = chise_pi(input.value)" value="Gerar Pi"/></td></tr>
  <tr>
    <th>Pi:</th><td><input type="text" name="pi" size="50"/></td></tr>
</table></form>

eita moveram denovo. Bem eu tava tendo uma ideia aqui não sei se viajei no pensamento. E se ao invés de eu chamar o arquivo no action eu incluir algum "include grava.php ou include conexao.php" no inicio do arquivo. Vejo isso pois em estruturas de sites php é comun uma pagina chamar outra (scripts de forum por exemplo). Meu conhecimento é bem vago de php, não sei se to pedindo algo impossivel. A estruturinha do arquivo como podem ver é simples, inicialmente a minha ideia é apenas gravar os campos. Depois viria implementação, exibir ultimas adições e etc :/

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.