Acessar banco de dados com php

45 respostas
J

Pessoal, eu tenho uma pagina que acessa o banco de dados via php, o banco é feito no phpMyAdmin e é bem simples, eu preciso alterar os dados de uma tabela com as seguintes colunas: id,nome,preco,categoria,url, só que nao tenho nem ideia como eu começo um codigo php pra isso, pra excluir eu ja consegui fazer mas pra alterar e atualizar as informações digitas do browser no banco nao to conseguindo se alguem puder me ajudar eu agradeceria, vou postar o codigo que acessa o banco de dados pra que se alguem puder me ajudar, dai fica mais facil.

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!"); //atualiza registro do banco de dados referente a produtos if(!mysql_query("UPDATE Nome, Preco, Categoria, url_imagem FROM produto WHERE ID=" . $_GET("ID")){ die ('ERROR:'. mysql_error()); } echo "

Registro foi atualizado com sucesso!

"; mysql_close($dbhandle); ?>

gostaria de saber se esse codigo ta certo, por que tenho um segundo codigo php que precisa desse codigo aqui, pra poder mostrar na tela os campos pro usuario poder alterar, alguem sabe tambem como eu faço isso, jogar o codgio na tela pro usuario poder alterar?
obrigado.

45 Respostas

P

sua sql de update esta errada… faça assim:

UPDATE produto SET Nome = '$nome', Preco = '$preco', Categoria = '$categoria', url_imagem = '$url' WHERE ID=" . $_GET['ID']
J

eu fiz assim como você falou, mas ta dando um fatal error assim:" Fatal error: Function name must be a string in C:\xampp\htdocs\restaurante\paginas\atualiza_produtos.php on line 21".
vou postar abaixo o codigo que ta dando o error pra alguem ver se consegue me ajudar.
codigo:

<?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!");
					
		$Nome=$_POST['Nome'];//le o que foi digitado no campo nome, pelo metodo post do form
		$Preco=$_POST['Preco'];//le o preço
		$Categoria=$_POST['Categoria'];//le a ccategoria
		$url_imagem=$_POST['url_imagem']; //le a url digitada

			//agora vomos salvar
		if(!mysql_query("UPDATE produto SET Nome='$Nome', Preco='$Preco', Categoria='$Categoria', url_imagem='$url_imagem' WHERE ID=" . $_GET("ID"))){
			die ('ERROR:'. mysql_error());
							
		}

			//agora vomos ver se salvou
		echo "<h1>Registro foi alterado com sucesso!</h1>";
		mysql_close($dbhandle);
?>
P

é $_GET[‘id’] e não $_GET(“ID”) conchetes no lugar de parenteses

M

tem um monte de exeplo na internet. pesquise sobre crud com mysql e php

J

Se colocar colchetes com aspas simples, da erro de sintaxe do SQL.

R

Olá, bom dia!

Dê uma olhada neste screencast:

Abraço,

P

qual erro? posta ai a mensagem

J

ta dando esse erro aqui:
Fatal error: Function name must be a string in C:\xampp\htdocs\restaurante\paginas\atualiza_produtos.php on line 21

P
$sql = "UPDATE produto SET Nome='$Nome', Preco='$Preco', Categoria='$Categoria', url_imagem='$url_imagem' WHERE ID=" . $_GET['ID'];
  echo $sql;

tente assim e poste o resultado do echo

J

aparece isso daqui

Notice: Undefined index: ID in C:\xampp\htdocs\restaurante\paginas\atualiza_produtos.php on line 21
UPDATE produto SET Nome=’’, Preco=’’, Categoria=’’, url_imagem=’’ WHERE ID=

P

lembre q o php faz diferença entre maiusculas e minusculas tente $_GET[‘id’], poste seu formulario tbm

J

esse é o arquivo .php de update:

<?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!");
					
		$Nome=$_POST['Nome'];//le o que foi digitado no campo nome, pelo metodo post do form
		$Preco=$_POST['Preco'];//le o preço
		$Categoria=$_POST['Categoria'];//le a ccategoria
		$url_imagem=$_POST['url_imagem']; //le a url digitada

			//agora vomos salvar
		if(!mysql_query("UPDATE produto SET Nome='$Nome', Preco='$Preco', Categoria='$Categoria', url_imagem='$url_imagem' WHERE ID=" . $_GET('ID'))){
			die ('ERROR:'. mysql_error());
							
		}

			//agora vomos ver se salvou
		echo "<h1>Registro foi alterado com sucesso!</h1>";
		mysql_close($dbhandle);
?>
M

carra esse . $_GET(‘ID’) não e . $_POST(‘ID’)

???

J

nao, esse get ele pega o id só pra saber a qual produtos os dados fazem referencia

M

esperimente mudar para post pois se estes atributos tão vindo post

$Nome=$_POST[‘Nome’];//le o que foi digitado no campo nome, pelo metodo post do form
$Preco=$_POST[‘Preco’];//le o preço
$Categoria=$_POST[‘Categoria’];//le a ccategoria
$url_imagem=$_POST[‘url_imagem’]; //le a url digitada

esse tmb vai vir pq faz parte do produto

J

mudei para $_POST(‘ID’) e ta dando o mesmo erro.

M

tente assim

UPDATE produto SET Nome = ‘".$Nome."’, Preco = ‘".$Preco."’, Categoria = ‘".$Categoria."’, url_imagem = ‘".$url_imagem."’ WHERE ID = ‘".$_GET[‘id’]."’

certifique-se que no seu banco os atributos começam com letra maiuscula e se o ID é tudo maiusculo tmb

M

url_imagem esta totalmente em minusculo verifique no no bd esta minuscula tmb

P

posta o formulario ai

M

caso não de certo mude para

UPDATE produto SET Nome = ‘".$Nome."’, Preco = ‘".$Preco."’, Categoria = ‘".$Categoria."’, url_imagem = ‘".$url_imagem."’ WHERE ID = ‘".$_POST[‘id’]."’

J

o codigo é esse :

<?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!");
					
		$Nome=$_POST['Nome'];//le o que foi digitado no campo nome, pelo metodo post do form
		$Preco=$_POST['Preco'];//le o preço
		$Categoria=$_POST['Categoria'];//le a ccategoria
		$url_imagem=$_POST['url_imagem']; //le a url digitada

			//agora vomos salvar
		if(!mysql_query("UPDATE produto SET Nome='$Nome', Preco='$Preco', Categoria='$Categoria', url_imagem='$url_imagem' WHERE ID=" . " $_GET['ID']")){
			die ('ERROR:'. mysql_error());
							
		}

			//agora vomos ver se salvou
		echo "<h1>Registro foi alterado com sucesso!</h1>";
		mysql_close($dbhandle);
?>
M

tava olhando melhor seu erro olha o que ta falando

Undefined index: ID

tente verificar se seu id não é nulo imprima ele na tela pra ver se esta chegando

J

o ID é maiusculo mesmo e com $_POST nao funciona

M

tentou colocar assim???

UPDATE produto SET Nome = ‘".$Nome."’, Preco = ‘".$Preco."’, Categoria = ‘".$Categoria."’, url_imagem = ‘".$url_imagem."’ WHERE ID = ‘".$_GET[‘id’]."’

tenta fazer um update com sua query diretamente no banco para testar ela

J

executei direto no banco e deu esse erro aqui

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ID’]."’’ at line 1

M

é esse id verifica ai problema é na sintaxe. vai tentando fazer pelo banco mesmo a hora que der certo voce passa a sintaxe certa para o php. pesquise mais sobre update com mysql

J

o problema é qua ja tentei com id minusculo e maiusculo e nao da certo de jeito nenhum

M

UPDATE produto SET Nome = ‘teste’, Preco = 20, Categoria = ‘teste’, url_imagem = ‘c’ WHERE ID = 1 ;

faça assim no banco

M

posta a estrutura de sua tabela ai de preferencia de um print screen na tela

J

nao sei enviar imagem pelo topico?

M

rsrs pior q nem eu, mas sei que da pra enviar. sei lá posta no facebook ou em algum repositorio de imagens a manda o link pra da uma olhada.

D

Vai em responder e não em resposta rápida.
Ali você pode anexar arquivos (attachments), é o meio mais fácil.

J

consegui enviar a imagem


M

caracas se usa orkut ainda kkk… zuera tenta altera diretamente no banco de dados assim

update produto set Nome=“teste”, Categoria=“P”, Preco=1, url_imagem=“teste” where ID=1;

só uma pergunta o campo preço ta como float?

J

sim, o preço ta como float

executei o upadete que vc posto aqui, diretamente no banco e deu certo
retornou dados sem nenhum erro

M

blz… agora poe a mesma query no update do php.

sem receber os post pode por direto s[o pra gente testa se ta fazendo certo pelo php tmb… muda o valor dos atributos para ver se ta atualizando

P

posta o html do form…

J

ffiz assim if(!mysql_query(“UPDATE produto SET Nome=“teste”, Categoria=“P”, Preco=1, url_imagem=“teste” where ID=1;)”)

e deu esse erro

Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\restaurante\paginas\atualiza_produtos.php on line 21

J

o html do form é:

Digite o novo nome:
Digie o novo preço:
Digite a nova categoria:
Digite a nova url da imagem:
M

mysql_query(“UPDATE produto SET Nome=“teste2222”, Categoria=“P”, Preco=21, url_imagem=“teste344343” where ID=1”);

tirre o if

J

tirei o if e coloquei or die, o or die eu tiro tbm?
sem o if ta dando esse ero aqui

Notice: Undefined index: Nome in C:\xampp\htdocs\restaurante\paginas\atualiza_produtos.php on line 15

Notice: Undefined index: Preco in C:\xampp\htdocs\restaurante\paginas\atualiza_produtos.php on line 16

Notice: Undefined index: Categoria in C:\xampp\htdocs\restaurante\paginas\atualiza_produtos.php on line 17

Notice: Undefined index: url_imagem in C:\xampp\htdocs\restaurante\paginas\atualiza_produtos.php on line 18

Fatal error: Function name must be a string in C:\xampp\htdocs\restaurante\paginas\atualiza_produtos.php on line 21

M

da uma pesquisada por crud com php e mysql… tem mta coisa errada ai nesses seus codigos… voce precisa criar um padrão para as tabelas atributos são em letras minuscula… assim como variaveis…

aqui

Digite o novo nome:
Digie o novo preço:
Digite a nova categoria:
Digite a nova url da imagem:

voce não tem o value q pega o valores que vem do objeto que é pra atualizar. e tmb voce não ta passando o id dele teria que ter uma campo do tipo hidden passando o id do produto…

boa sorte

J

mesmo no bando de dados as colunas começando com letra maiuscula eu usso minuscula no php?
pelo que vc falo entendi isso

M

não não… por padrão na programação se inicia atributos de uma tabela com letra minuscula sempre… a mesma coisa para variaveis de programação.

J

entendi, foi mal ai, é que to começando em programação web, hehehe por isso tenho tantas duvidas, tentei baixa aquele livro php + mysql da serie usando a cabeça pra mim ir fazendo passo a passo, mas nao achei gratis pra baixar :/, mas valeu ai

Criado 6 de junho de 2012
Ultima resposta 14 de jun. de 2012
Respostas 45
Participantes 5