Ir para conteúdo

POWERED BY:

Arquivado

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

bobmarley

[Resolvido] Cadastro de produtos

Recommended Posts

Galera, estou tentando criar um sistema de cadastro de produtos aqui, seguindo esse tutorial:

 

http://faael.net/upload-simples-de-imagem-com-php-mysql/

 

Ja li ate os comentarios desse artigo, e nao consegui resolver o problema.

 

Quando abro a pagina pra fazer o teste do sistema ja aparece um erro:

Notice: Undefined index: cadastrar in C:\Arquivos de programas\EasyPHP 3.0\www\cadastro\cadastro.php on line 7

 

Dai eu tento cadastrar, a pagina da um refresh, o erro some, mas nao cadastra nada no banco de dados.

 

A linha 7 é essa:

if ($_POST['cadastrar']) {

 

sera que tem alguma coisa av com essa outra linha?

<input type="submit" name="cadastrar" value="Cadastrar" />

 

Bom, vou disponibilizar o codigo inteiro, ai fica mais facil.

<?php
//Conexão com o banco da dados
$conn = @mysql_connect("localhost", "123", "123") or die ("Problemas na conexão");
$db = @mysql_select_db("bancodedados", $conn) or die ("Problemas na conexão");

// Se o usuario clicou no botao cadastrar efetua as ações
if ($_POST['cadastrar']) {
	//Recupera os dados do campo
	$nome = $_POST['nome'];
	$descricao = $_POST['descricao'];
	$foto = $_FILES['foto'];

	//Se a foto estiver sido selecionada
	if (!empty($foto['name'])) {
			//Largura maxima em pixels 
			$largura = 150;
			//Altura maxima em pixels
			$altura = 180;
			//Tamanho maximo do arquivo em bytes
			$tamanho = 1000000;

	//Verifica se o arquivo é uma imagem
	if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto["type"])){
		$error[1] = "Isso não é uma imagem";
			}

	//Pega as dimensões da imagem
	$dimensoes = getimagesize($foto["tmp_name"]);

	//Verifica se a largura da imagem é maior que a largura permitida
	if($dimensoes[0] > $largura){
			$error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";			
	}

	//Verifica se a altura da imagem é maior que a altura permitida
	if($dimensoes[1] > $altura){
			$error[3] = "Altura da imagem nao deve ultrapassar ".$altura." pixels";
	}

	//Verifica se o tamanho da imagem é maior que o tamanho permitido
	if($foto["size"] > $tamanho){
			$error[4] = "A imagem deve ter no maximo ".$tamanho." bytes";
	}

	//Se nao houver nenhum erro
	$error = array();
	if (count($error) == 0) {

			//Pega extensao da imagem
			preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext);

	//Gera um nome unico para imagem
	$nome_imagem = md5(uniqid(time())) . "." . $ext[1];

	//Caminho onde ficará a imagem
	$caminho_imagem = "fotos/" . $nome_imagem;

			//Faz o upload da imagem para o seu respectivo caminho
			move_uploaded_file($foto["tmp_name"], $caminho_imagem);

			//Insere os dados no banco
			$sql = mysql_query("INSERT INTO produtos VALUES ('', '".$nome."', '".$descricao."', '".$nome_imagem."')");

			//Se os dados forem inseridos com sucesso
			if ($sql) {
					echo "Cadastro efetuado com sucesso";
			}

	}

	// Se houver mensagens de erro, exibe-as
	if (count($error) != 0) {
			foreach ($error as $erro) {
					echo $erro . "<br />";
			}
	}

}

}

?>

<!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>Cadastro de usuário</title>
</head>

<body>
<h1>Cadastro de Produtos</h1>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="cadastro">
Nome: <br />
<input type="text" name="nome" /><br /><br />
Descrição: <br />
<input type="text" name="descricao" /><br /><br />
Foto: <br />
<input type="file" name="foto" /><br /><br />
<input type="submit" name="cadastrar" value="Cadastrar" />
</form>

<hr />

<h1>Produtos cadastrados</h1>
<?php
//Seleciona todos os usuarios
$sql = mysql_query("SELECT * FROM produtos ORDER BY nome");

//Exibe as informaçoes de cada usuario
while ($produto = mysql_fetch_object($sql)) {
		//Exibimos a foto
		echo "<img src='fotos/".$produto->foto."' alt='Foto de exibição' /><br />";
		//Exibimos nome e descriçao
		echo "<b>Nome:</b> " . $produto->nome . "<br />";
		echo "<b>Descrição:</b> " . $produto->descricao . "<br /><br />";
}
?>

</body>
</html>

 

Galera.. mtoooooo obrigado pela ajuda

Abraçooos

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim.:

 

if (isset($_POST['cadastrar']))

 

tire os "@"

 

$conn = mysql_connect("localhost", "123", "123") or die ("Problemas na conexão");
$db = mysql_select_db("bancodedados", $conn) or die ("Problemas na conexão");

 

e retire o PHP_SELF

 

<form action="" method="post" enctype="multipart/form-data" name="cadastro">
Nome: <br />
<input type="text" name="nome" /><br /><br />
Descrição: <br />
<input type="text" name="descricao" /><br /><br />
Foto: <br />
<input type="file" name="foto" /><br /><br />
<input type="submit" name="cadastrar" value="Cadastrar" />
</form>

 

Tenta ai :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao cara.. o erro que tava aparecendo

Notice: Undefined index: cadastrar in C:\Arquivos de programas\EasyPHP 3.0\www\cadastro\cadastro.php on line 7

nao ta aparecendo.

 

Mas quando eu tento cadastrar algo, ele ainda continua do mesmo jeito, nao cadastra nada, só carrega a pagina :( :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque:

 $sql = mysql_query("INSERT INTO produtos VALUES ('', '".$nome."', '".$descricao."', '".$nome_imagem."')");

por:

 $sql = mysql_query("INSERT INTO produtos VALUES ('', '".$nome."', '".$descricao."', '".$nome_imagem."')")or die( mysql_error() );

 

habilite as mensagens de erro, leia:

http://forum.imasters.com.br/index.php?/topic/375800-orientacoes-para-uma-boa-participacao/

 

 

se tiver duvidas, poste as mensagens de erro que aparecer, e o teu script mais atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

maravilha, os erros são teus amigos

 

troca:

 $sql = mysql_query("INSERT INTO produtos VALUES ('', '".$nome."', '".$descricao."', '".$nome_imagem."')")or die( mysql_error() );

por:

 $sql = mysql_query("INSERT INTO produtos VALUES (NULL, '{$nome}', '{$descricao}', '{$nome_imagem}')")or die( mysql_error() );

 

pesquise, estude, aprenda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte cara..

ficar atento tbm aos nomes....

o erro era...

Notice: Undefined index: cadastrar in C:\Arquivos de programas\EasyPHP 3.0\www\cadastro\cadastro.php on line 7

 

pq o nome msmo era "Cadastrar" com C maiusculo

você procurou por "cadastrar" com 'C' minusculo

olha só:

 

...value="Cadastrar" />
</form>

 

isso faz diferença...

=]

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq o nome msmo era "Cadastrar" com C maiusculo

você procurou por "cadastrar" com 'C' minusculo

isso faz diferença...

=]

@Kbeção, ele fez certo nesse caso.

 

<input type="submit" name="cadastrar" value="Cadastrar" />

veja, o $_POST['chave'], vai bater com o atributo name, e não com o value como você está pensando.

e ali está em minúsculo, por tanto não foi problema de case sensitive.

 

foi pq ao acessar a página sem uma requisição post, a chave não existe.

Portanto, é melhor testar com isset()

 

:lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmmmm....

realmente...

falei pq eu ja cai na pegadinha do botão...

tanto q qdo vou cadastrar um form no bd eu fasso assim:

 

if(!$_POST['enviar']){
.
.
.

 

pra evitar de o botao ser cadastrado tbm...

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi 'oque você faz', ou 'pra que você faz assim'..

 

fasso => faço

 

e cara, veja sobre o isset(), ou então

if( $_SERVER['REQUEST_METHOD']=='POST' ){}

acho que fica 'mais elegante'.

 

E assim, você não atrela o funcionamento do form, ao name do botão enviar..

isso serve para você pode trocar o botão submit, ou então requisições ajax..

Compartilhar este post


Link para o post
Compartilhar em outros sites

fasso => vitima do msn x/

 

sobre o isset(); ja conheço...

ele testa se a variavel existe...

 

if( $_SERVER['REQUEST_METHOD']=='POST' ){}

 

essa parte ñ sabia

vlw ae..

^^

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.