bobmarley 0 Denunciar post Postado Janeiro 18, 2011 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
gremio10 14 Denunciar post Postado Janeiro 18, 2011 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
bobmarley 0 Denunciar post Postado Janeiro 18, 2011 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
William Bruno 1501 Denunciar post Postado Janeiro 18, 2011 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
bobmarley 0 Denunciar post Postado Janeiro 18, 2011 olha só o erro que deu agora: Incorrect integer value: '' for column 'id' at row 1 Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 18, 2011 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
bobmarley 0 Denunciar post Postado Janeiro 18, 2011 aeeeeeeeee valeuuu William desculpe incomodar, valeu mesmo! agora funcionou tudo aqui Abraçoooos :joia: :joia: Compartilhar este post Link para o post Compartilhar em outros sites
- KbeçãO - 0 Denunciar post Postado Janeiro 18, 2011 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
William Bruno 1501 Denunciar post Postado Janeiro 18, 2011 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
- KbeçãO - 0 Denunciar post Postado Janeiro 18, 2011 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
William Bruno 1501 Denunciar post Postado Janeiro 18, 2011 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
- KbeçãO - 0 Denunciar post Postado Janeiro 18, 2011 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