Ir para conteúdo

POWERED BY:

Arquivado

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

danluc

Noticia PHP com IMG

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.