danluc 4 Denunciar post Postado Março 7, 2015 Bom dia, estou tentando colocar img no meu sistema de noticia aqui, so que quando tento colocar img ele me retorna um error. Notice: Undefined index: imagem in C:\Program Files (x86)\VertrigoServ\www\navicat\testando\q4\no\inserir.php on line 15 Call Stack ja faz dois dias que tou tentando , e nao consigo entender o pq desse error. upload.php <?php $conexao = mysql_connect("localhost", "root", "vertrigo") or die ("Erro na conexão ao banco de dados."); $db = mysql_select_db("qquatro") or die ("Erro ao selecionar a base de dados."); $nome = mysql_real_escape_string($_POST['nome']); $sobrenome = mysql_real_escape_string($_POST['sobrenome']); $cidade =mysql_real_escape_string($_POST['cidade']); $estado =mysql_real_escape_string($_POST['estado']); $email =mysql_real_escape_string($_POST['email']); $titulo =mysql_real_escape_string($_POST['titulo']); $resumo =mysql_real_escape_string($_POST['resumo']); $testo =mysql_real_escape_string($_POST['texto']); $foto =mysql_real_escape_string($_FILES['imagem']); $error = array(); if (!empty($foto["name"])) { $largura = 1800; $altura = 1300; $tamanho = 10000000; if(preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["type"])){ $error[1] = "Isso não é uma imagem."; } $dimensoes = getimagesize($foto['tmp_name']); if($dimensoes[0] > $largura) { $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels"; } if($dimensoes[1] > $altura) { $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels"; } if($foto["size"] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes"; } if (count($error) == 0) { $caminho_imagem ="img/"; if(!file_exists($caminho_imagem)){ mkdir($caminho_imagem); } $nome_imagem = $caminho_imagem . $foto["name"]; move_uploaded_file($foto["tmp_name"], $caminho_imagem); $sql = "INSERT INTO noticias ( nome, sobrenome, cidade, estado, email, data, hora, titulo, resumo, texto, img ) VALUES ( '$nome', '$sobrenome', '$cidade', '$estado', '$email', NOW(), NOW(), '$titulo', '$resumo', '$testo', '$foto' )"; $sql = mysql_query($sql) or die ("Erro na query"); if ($sql){ echo "<h1>A notícia foi cadastrada com sucesso.</h1>"; } } if (count($error) != 0) { foreach ($error as $erro) { echo $erro . "<br />"; } } } ?> o formulario.php <head> <script type="text/javascript" src="ckeditor/ckeditor.js"></script> <script type="text/javascript"> window.onload = function() { CKEDITOR.replace( 'texto' ); }; </script> </head> <h1>Sistema de Cadastro de Notícias</h1> <form action="inserir.php" method="post"> <label for="nome">Nome: </label> <input name="nome" id="nome" type="text" /> <label for="sobrenome">Sobrenome: </label> <input name="sobrenome" id="sobrenome" type="text" /><br /> <label for="cidade">Cidade: </label> <input name="cidade" id="cidade" type="text" /><br /> <label for="estado">Estado: </label> <input name="estado" id="estado" type="text" /><br /> <label for="email">Email: </label> <input name="email" id="email" type="text" /><br /> <label for="titulo">Título do Texto: </label> <input name="titulo" id="titulo" type="text" /><br /> <label for="resumo">Resumo do Texto:</label> <input name="resumo" id="resumo" type="text" ><br /> <label for="imagem">imagem:</label> <input name="imagem" id="imagem" type="file" ><br /> <label for="texto">Texto: </label> <textarea name="texto" id="texto" rows="10" cols="30" /> </textarea><br /> <input type="submit" value="Cadastrar"> </form> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Março 7, 2015 Sobre esse erro: http://rberaldo.com.br/as-mensagens-de-erros-mais-comuns-do-php/#undef_index Vejo dois problemas: 1. Seu form não tem o atributo enctype="multipart/form-data" 2. $_FILES['imagem'], quando existir, será um array. Você o trata como string. Veja: http://php.net/manual/pt_BR/features.file-upload.post-method.php Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Março 7, 2015 Valeu cara, mais agora ta gravando um array no meu db, e ta dando um error .. Warning: move_uploaded_file() [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: The second argument to copy() function cannot be a directory in C:\Program Files (x86)\VertrigoServ\www\navicat\testando\q4\no\inserir.php on line 66 move_uploaded_file ( ) alguém ai para ajuda? Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Março 7, 2015 Basta ler o erro: "The second argument to copy() function cannot be a directory", você tem que passar o caminho completo (diretorio_de_destino/nome_do_arquivo). Sobre estar salvando array no BD, se você quer salvar o nome do arquivo deve usar $_FILES['imagem']['name']. Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Março 7, 2015 agora deu certo com o nome, o array sumiu, só que ainda não salva no diretório, eu não intendi esse ai do diretório não.. Warning: getimagesize(1) [<a href='function.getimagesize'>function.getimagesize</a>]: failed to open stream: No such file or directory in C:\Program Files (x86)\VertrigoServ\www\navicat\testando\q4\noti\inserir.php on line 34 Compartilhar este post Link para o post Compartilhar em outros sites
BlackMix 15 Denunciar post Postado Março 7, 2015 agora deu certo com o nome, o array sumiu, só que ainda não salva no diretório, eu não intendi esse ai do diretório não.. Warning: getimagesize(1) [<a href='function.getimagesize'>function.getimagesize</a>]: failed to open stream: No such file or directory in C:\Program Files (x86)\VertrigoServ\www\navicat\testando\q4\noti\inserir.php on line 34 Você fez a pasta do upload da imagem ? oO" veja se está lá a pasta Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Março 7, 2015 fiz sim... fiz uma concatenação assim $caminho_imagem ="img/".$foto; so que ele cria outra pasta dentro da img com o nome da imagem, ele nao upa a imagem, ele cria so uma pasta... Compartilhar este post Link para o post Compartilhar em outros sites
BlackMix 15 Denunciar post Postado Março 7, 2015 move_uploaded_file($foto["tmp_name"] >> move_uploaded_file($_FILES['name']['tmp_name'] ? Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Março 7, 2015 que? Compartilhar este post Link para o post Compartilhar em outros sites
BlackMix 15 Denunciar post Postado Março 7, 2015 que? Procure por move_uploaded_file($foto["tmp_name"] e troque por move_uploaded_file($_FILES['name']['tmp_name'] Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Março 7, 2015 deu na mesma :/ Compartilhar este post Link para o post Compartilhar em outros sites
Wanderson Valerio 102 Denunciar post Postado Março 7, 2015 Substitue: move_uploaded_file($foto["tmp_name"], $caminho_imagem); Por: move_uploaded_file($foto["tmp_name"], $caminho_imagem.$nome_imagem); Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Março 7, 2015 ta dando na msm <?php $conexao = mysql_connect("localhost", "root", "vertrigo") or die ("Erro na conexão ao banco de dados."); $db = mysql_select_db("qquatro") or die ("Erro ao selecionar a base de dados."); //se existir o arquivo $nome = mysql_real_escape_string($_POST['nome']); $sobrenome = mysql_real_escape_string($_POST['sobrenome']); $cidade =mysql_real_escape_string($_POST['cidade']); $estado =mysql_real_escape_string($_POST['estado']); $email =mysql_real_escape_string($_POST['email']); $titulo =mysql_real_escape_string($_POST['titulo']); $resumo =mysql_real_escape_string($_POST['resumo']); $testo =mysql_real_escape_string($_POST['texto']); $foto = $_FILES['imagem']['name']; $error = array(); // Se a foto estiver sido selecionada if (!empty($foto["name"])) { // Largura máxima em pixels $largura = 1800; // Altura máxima em pixels $altura = 1300; // Tamanho máximo do arquivo em bytes $tamanho = 10000000; // Verifica se o arquivo é uma imagem if(preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $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 não 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 máximo ".$tamanho." bytes"; } // Se não houver nenhum erro if (count($error) == 0) { // Caminho de onde ficará a imagem $caminho_imagem ="img/"; if(!file_exists($caminho_imagem)){ mkdir($caminho_imagem); } $nome_imagem = $caminho_imagem . $foto["name"]; // Faz o upload da imagem para seu respectivo caminho move_uploaded_file($_FILES['name']['tmp_name'], $caminho_imagem); /* * faz a conexao ao banco * e seleciona a base de dados */ /* * monta query em SQL para insercao */ $sql = "INSERT INTO noticias ( nome, sobrenome, cidade, estado, email, data, hora, titulo, resumo, texto, img ) VALUES ( '$nome', '$sobrenome', '$cidade', '$estado', '$email', NOW(), NOW(), '$titulo', '$resumo', '$testo', '$foto' )"; /* * executa a query */ $sql = mysql_query($sql) or die ("Erro na query"); // Se os dados forem inseridos com sucesso if ($sql){ echo "<h1>A notícia foi cadastrada com sucesso.</h1>"; } } // Se houver mensagens de erro, exibe-as if (count($error) != 0) { foreach ($error as $erro) { echo $erro . "<br />"; } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
BlackMix 15 Denunciar post Postado Março 7, 2015 move_uploaded_file($_FILES['imagem']['tmp_name'],'../img/'.$imagem)){chmod('../img/'."$imagem",0644); veja o que acontece com isso. pelo visto era só o nome da imagem que falta Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Março 7, 2015 esse ai ta dando um erro na linha que eu colocoo... acho que ele ta pegando so o nome, e nao ta upando a img para a pasta .. $foto = $_FILES['imagem']['name']; ajuda ai genteeeeeeeeeeeeee Compartilhar este post Link para o post Compartilhar em outros sites
Wanderson Valerio 102 Denunciar post Postado Março 7, 2015 Fiz aqui, testei e deu certo. formulario.php <head> <script type="text/javascript" src="ckeditor/ckeditor.js"></script> <script type="text/javascript"> window.onload = function() { CKEDITOR.replace('texto'); }; </script> </head> <h1>Sistema de Cadastro de Notícias</h1> <form action="upload.php" method="post" enctype="multipart/form-data"> <label for="nome">Nome: </label> <input name="nome" id="nome" type="text" /> <label for="sobrenome">Sobrenome: </label> <input name="sobrenome" id="sobrenome" type="text" /><br /> <label for="cidade">Cidade: </label> <input name="cidade" id="cidade" type="text" /><br /> <label for="estado">Estado: </label> <input name="estado" id="estado" type="text" /><br /> <label for="email">Email: </label> <input name="email" id="email" type="text" /><br /> <label for="titulo">Título do Texto: </label> <input name="titulo" id="titulo" type="text" /><br /> <label for="resumo">Resumo do Texto:</label> <input name="resumo" id="resumo" type="text" ><br /> <label for="imagem">imagem:</label> <input name="imagem" id="imagem" type="file" ><br /> <label for="texto">Texto: </label> <textarea name="texto" id="texto" rows="10" cols="30" /></textarea> <br /> <input type="submit" value="Cadastrar"> </form> upload.php <?php $conexao = mysql_connect("localhost", "root", "") or die ("Erro na conexão ao banco de dados."); $db = mysql_select_db("qquatro") or die ("Erro ao selecionar a base de dados."); extract($_POST); $foto = $_FILES['imagem']; $error = array(); if (!empty($foto["name"])) { $largura = 1800; $altura = 1300; $tamanho = 10000000; if(preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["type"])){ $error[1] = "Isso não é uma imagem."; } $dimensoes = getimagesize($foto['tmp_name']); if($dimensoes[0] > $largura) { $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels"; } if($dimensoes[1] > $altura) { $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels"; } if($foto["size"] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes"; } if (count($error) == 0) { $caminho_imagem ="img/"; if(!file_exists($caminho_imagem)){ mkdir($caminho_imagem); } $nome_imagem = $foto["name"]; move_uploaded_file($foto["tmp_name"], $caminho_imagem.$nome_imagem); $sql = "INSERT INTO `noticias` VALUES (NULL, '$nome', '$sobrenome', '$cidade', '$estado', '$email', NOW(), NOW(), '$titulo', '$resumo', '$texto', '$nome_imagem')"; $sql = mysql_query($sql) or die ("Erro na query: ".mysql_error()); if ($sql) { echo "<h1>A notícia foi cadastrada com sucesso.</h1>"; } } if (count($error) != 0) { foreach ($error as $erro) { echo $erro . "<br />"; } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Março 7, 2015 poxa manim, ainda fica me retornando array no db com esse seu codigo Compartilhar este post Link para o post Compartilhar em outros sites
Wanderson Valerio 102 Denunciar post Postado Março 7, 2015 Você não pode inserir no banco de dados a $foto, pois ela é um array. Você deve inserir $nome_imagem Compartilhar este post Link para o post Compartilhar em outros sites
danluc 4 Denunciar post Postado Março 7, 2015 eu mudei aqui, mais ai salva o nome, mais nao up a imagem la pra pasta.. valeu mano, conseguir aqui... vou ajusta algumas coisa aqui, e posta o codigo correto .. obrigado manim Compartilhar este post Link para o post Compartilhar em outros sites