Problema com javascript e php

45 respostas
J

Pessoa eu estou tentando inserir dados no phpmyadmin através do browser usndo php, o problema é que mesmo eu nao inserindo nada o banco mostra a mensagem que foi inserido com sucesso e quando vou ver la no banco foi inserida uma linha toda em branco, segue o codigo pra ver se alguem consegue me ajudar:

codigo pro usuario digitar os dados no browser:

Cadastro de Produtos

Inserção de pratos do restaurante

Nome:
Categoria: Entrada Pratos Principais Bebidas Sobremesas Preço:
Endereço da Imagem:

codigo pra fazer acesso ao banco:

<?php $username = "root"; $password = ""; $hostname = "localhost"; // Conexão ao banco de dados. $dbhandle = mysql_connect($hostname, $username, $password) or die("Não foi possível conectar ao MySQL!"); // Seleciona o banco de dados. $selected = mysql_select_db("restaurante", $dbhandle) or die("Não foi possível selecionar o banco de dados restaurante!"); //insere registro no banco de dados if (!mysql_query("INSERT INTO produto (Nome, Categoria, Preco, url_imagem) VALUES ('$_POST[Nome]','$_POST[Categoria]','$_POST[Preco]','$_POST[url_imagem]')", $dbhandle)){ die ("Erro:" . mysql_error()); } echo "

Registro inserido com sucesso

"; mysql_close($dbhandle); ?>

ta aparecendo a mensagem desse echo, não sei por que, quando na verdade era pra aparecer a mensagem de erro ja que nao esta sendo digitado nada, se alguem puder me ajudar eu agradeceria muito.

45 Respostas

perdeu

da um

echo "<pre>"; print_r($_POST)
assim vc sabe se esta vindo alguma valor no $_POST

perdeu

aquiiii no mysql_query vc n é obrigado a passar a conexão no caso o php pega a conexão aberta se existir uma. tente o seguinte tire o $dbhandle. se vc tivesse q passar uma variavel seria $selected.

$selected = mysql_select_db("restaurante", $dbhandle)

mysql_query("INSERT INTO produto (Nome, Categoria, Preco, url_imagem) 
VALUES ('$_POST[Nome]','$_POST[Categoria]','$_POST[Preco]','$_POST[url_imagem]')", $dbhandle)

deixe seu codigo assim:

mysql_query("INSERT INTO produto (Nome, Categoria, Preco, url_imagem) 
VALUES ('$_POST[Nome]','$_POST[Categoria]','$_POST[Preco]','$_POST[url_imagem]')");
J

vou tentar agora

perdeu

blz

J

deixei o codigo php assim:

<?php $username = "root"; $password = ""; $hostname = "localhost"; // Conexão ao banco de dados. $dbhandle = mysql_connect($hostname, $username, $password) or die("Não foi possível conectar ao MySQL!"); // Seleciona o banco de dados. $selected = mysql_select_db("restaurante", $dbhandle) or die("Não foi possível selecionar o banco de dados restaurante!"); //insere registro no banco de dados mysql_query("INSERT INTO produto (Nome, Categoria, Preco, url_imagem) VALUES ('$_POST[Nome]','$_POST[Categoria]','$_POST[Preco]','$_POST[url_imagem]')"); or die ("Erro:" . mysql_error()); echo "

Registro inserido com sucesso

"; mysql_close($dbhandle); ?>

e ta aparecendo o seguinte erro:

Parse error: syntax error, unexpected T_LOGICAL_OR in C:\xampp\htdocs\restaurante\paginas\insere_produto.php on line 17

perdeu

tire o ponto e virgula antes do or die

J

ae, agora deu certo, nao aparece mais o erro, mas mesmo sem eu digitar nada é inserido o registro no banco de dados com todos os campos em branco :confused:

perdeu

posta o resultado do $_POST

echo "<pre>"; print_r($_POST);

J

o resultado é esse:

Array
(
[Nome] =>
[Categoria] => E
[Preco] =>
[url_imagem] =>
)
Registro inserido com sucesso

perdeu

teste aqui inseririu o q ta zoado é suas validação com js.

onda ta :

.value.lenght

troque por:

.value.length
perdeu

cuidado com maiusculas e minusculas

Preço:<input type ="text" name="Preco" id="preco" /> <br />
if(!erPreco.test(document.getElementById("Preco").value));{
if(document.getElementById("Preco").value.length>100){

veja o id do preço esta minusculo e no js esta maiusculo.

J

e posso modificar qualquer um dos ids ou tem alguma preferencia?

perdeu

deixa o id de preco maiusculo.

J

continua o mesmo erro:

Array
(
[Nome] =>
[Categoria] => E
[Preco] =>
[url_imagem] =>
)
Registro inserido com sucesso

J

é como se as restrições nao estivessem servindo pra nada, sera que ta pegando mesmo o codigo avascript?

perdeu

teste esse codigo

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Produtos</title>

<script type = "text/javascript">
function validarCampos(){
	if(document.getElementById("Nome").value.length == 0 ){
	alert("O campo nome deve ser preenchido!");
	return false;
}
if(document.getElementById("Nome").value.length>50 ){
	alert("O campo nao pode ter mais de 50 caracteres!");
	return false;
}

if(document.getElementById("url_imagem").value.length>100){
alert("O campo endereço da imagem deve ter no maximo 100 caracteres!");
return false;
}
if(document.getElementById("Preco").value.length>100){
alert("O campo endereço da imagem deve ter no maximo 100 caracteres!");
return false;
}
return true;
}
</script>

</head>
<body>
<h1>Inserção de pratos do restaurante</h1>
<form action="insere_produto.php" method="post" onsubmit="return validarCampos();">
Nome:<input type ="text" name="Nome" id="Nome" /> <br />
Categoria:<select name ="Categoria">
<option value = "E"> Entrada</option>
<option value = "P"> Pratos Principais</option>
<option value = "B"> Bebidas</option>
<option value = "S"> Sobremesas</option>
</select>
Preço:<input type ="text" name="Preco" id="Preco" /> <br />
Endereço da Imagem:<input type ="text" name="url_imagem" id="url_imagem" /> <br />
<input type="submit" />
</form>
</body>
</html>
perdeu

sempre q mudar alguma codigo javascript limpe o cache do navegador.

J

continua aparecendo o mesmo erro:

Array
(
[Nome] =>
[Categoria] => E
[Preco] =>
[url_imagem] =>
)
Registro inserido com sucesso

perdeu

mas ta inseriando no banco? pode tirar o print_r e o echo

J

sim, ta inserindo, mas tudo em branco ainda, tirei o print_r e o echo.

perdeu

teste aqui seu codigo deu certo

<?php
$username = "root";
$password = "";
$hostname = "localhost";

// Conexão ao banco de dados.
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Não foi possível conectar ao MySQL!");

// Seleciona o banco de dados.
$selected = mysql_select_db("restaurante", $dbhandle)
or die("Não foi possível selecionar o banco de dados restaurante!");

//insere registro no banco de dados
mysql_query("INSERT INTO produto (Nome, Categoria, Preco, url_imagem) VALUES ('$_POST[Nome]','$_POST[Categoria]','$_POST[Preco]','$_POST[url_imagem]')")
or die ("Erro:" . mysql_error());

echo "<h1>Registro inserido com sucesso</h1>";
mysql_close($dbhandle);
?>
J

vc testo ai no seu pc e deu certo?

perdeu

sim, crie a base e a tabela. teste suas validação para ver se aparece o alert… se n aparecer é pq vc tem erro no javascript

J

como eu falo pra testar o alert? desculpa por tantas perguntas cara.

perdeu

dexia o nome em branco e click no submit, depois preenche o nome e deixa o preço em branco e click em submit

J

deixando tudo em branco aparece a mensagem que foi inserido com sucesso, e digitando o nome e deixando o nome em branco tbm aparece que foi inserido com sucesso

perdeu

vc pegou o codigo q te passei?

J

sim, os dois codigos, sera que nao é problema na criação do banco la no phpmy admin?

perdeu

não. vc ta testando no ie ou no firefox?

J

no chrome.

J

cara, consegui fazer aparecer as mensagens :Da de validar o nome ta funcionando, só a de validar preço que nao, mesmo eu preenchendo com um valor a mensagem do alert continua aparecendo, os meus codigos ficaram assim:

codigo html:

<head>  
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />  
	<title>Cadastro de Produtos</title>  

	<script type = "text/javascript">  
	function validarCampos(){  
		if(document.getElementById("Nome").value.length == 0 ){  
		alert("O campo nome deve ser preenchido!");  
		return false;  
	}  
	if(document.getElementById("Nome").value.length>50 ){  
		alert("O campo nome nao pode ter mais de 50 caracteres!");  
		return false;  
	}  
	  
	if(document.getElementById("url_imagem").value.length>100){  
		alert("O campo endereço da imagem deve ter no maximo 100 caracteres!");  
		return false;  
	}  
	
	erPreco = /^\d{1-3}(\.\d{3})*\,\d{2}$/; 
	if(!erPreco.test(document.getElementById("Preco"). value));{ 
		alert("O campo preco nao foi preenchido corretamente, preencha novamente"); 
		return false; 
	} 
	return true;  
	}  
	</script>  

</head>  
<body>  
	<h1>Inserção de pratos do restaurante</h1>  
	<form action="insere_produto.php" method="post" onsubmit="return validarCampos();">  
		Nome:<input type ="text" name="Nome" id="Nome" /> <br />  
		Categoria:<select name ="Categoria">  
		<option value = "E"> Entrada</option>  
		<option value = "P"> Pratos Principais</option>  
		<option value = "B"> Bebidas</option>  
		<option value = "S"> Sobremesas</option>  
		</select>  
		Preço:<input type ="text" name="Preco" id="Preco" /> <br />  
		Endereço da Imagem:<input type ="text" name="url_imagem" id="url_imagem" /> <br />  
		<input type="submit" />  
	</form>  
</body>

codigo php:

<?php $username = "root"; $password = ""; $hostname = "localhost"; // Conexão ao banco de dados. $dbhandle = mysql_connect($hostname, $username, $password) or die("Não foi possível conectar ao MySQL!"); // Seleciona o banco de dados. $selected = mysql_select_db("restaurante", $dbhandle) or die("Não foi possível selecionar o banco de dados restaurante!"); //insere registro no banco de dados mysql_query("INSERT INTO produto (Nome, Categoria, Preco, url_imagem) VALUES ('$_POST[Nome]','$_POST[Categoria]','$_POST[Preco]','$_POST[url_imagem]')") or die ("Erro:" . mysql_error()); echo "

Registro inserido com sucesso

"; mysql_close($dbhandle); ?>

alguem sabe o que pode ser que ta errado?

perdeu

sua expressão regular ta zooada mas n consegui descobrir pq…

J

vou ver se acho alguma no google, por que essa foi meu professor que fez, mas aparentemente ta certa

perdeu

usa esse plugin do jquery pra formatar moeda, ja resolve o problema.

http://plentz.org/maskmoney/

J

e eu uso qual deles?

perdeu

pode usar o primeiro exemplo, lembre q vc tem baixar o jquery tbm.

J

vixi, eu baixo ele aonde e faço como pra usa nessa arquivo html?

perdeu

depois do adicione essa linhas:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script src="jquery.maskMoney.js" type="text/javascript"></script>

<script>
$(document).ready(function(){
	$("#Preco").maskMoney();
});	
</script>
J

nao deu certo, ainda mesmo depois de preencher ta dizendo que nao foi prenechido, sera que nao é o “(!” no codigo do javascript?

J

nesse treixo aqui do codigo javascript:

erPreco = /^(?:<a>1-9</a>|0)(?:,[\d]{0,2})?$/;

if(!erPreco.test(document.getElementById(“Preco”).value));{

alert(“O campo preco nao foi preenchido corretamente, preencha novamente”);

return false;

}
perdeu

tire esse trecho de codigo…

erPreco = /^(?:[1-9](?:[\d]{0,2}(?:\.[\d]{3})*|[\d]+)|0)(?:,[\d]{0,2})?$/;
if(!erPreco.test(document.getElementById("Preco").value));{
alert("O campo preco nao foi preenchido corretamente, preencha novamente");
return false;
}

! é negação.

J

mas se eu tirar vai ficar sem validação nenhuma no campo de preço.

perdeu

vc pode validar como fez com o nome, mascara o maskMoney esta fazendo.

J

tipo, usando o limitador de tamanho do campo preço e depois colocando o codigo do maskmoney que vc passou dentro do javascript?

perdeu

isso,

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script src="jquery.maskMoney.js" type="text/javascript"></script>

<script>
$(document).ready(function(){
	$("#Preco").maskMoney();
});	
</script>
<script type = "text/javascript">
function validarCampos(){
	if(document.getElementById("Nome").value.length == 0 ){
	alert("O campo nome deve ser preenchido!");
	return false;
}
if(document.getElementById("Nome").value.length>50 ){
	alert("O campo nao pode ter mais de 50 caracteres!");
	return false;
}

if(document.getElementById("url_imagem").value.length>100){
alert("O campo endereço da imagem deve ter no maximo 100 caracteres!");
return false;
}
if(document.getElementById("Preco").value.length>100){
alert("O campo endereço da imagem deve ter no maximo 100 caracteres!");
return false;
}
var preco = document.getElementById("Preco").value;
if(preco == "" || preco.length<=0){
	alert("inform o preço");
	return false;
}

return true;
}
</script>
Criado 28 de maio de 2012
Ultima resposta 30 de mai. de 2012
Respostas 45
Participantes 2