Ir para conteúdo

Arquivado

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

Politano

Notice: Undefined index: imagem *Já vi um post assim aqui, mas não resolveu o meu problema continua exibindo isso.

Recommended Posts

Boa tarde,

 

Meu código está com PHP, e Jquery..

Meu painel.php:

<?php
ob_start(); session_start();
require 'funcoes/banco/conexao.php';
require 'funcoes/login/login.php';
require 'funcoes/crud/crud.php';
logado('administrador');
if (isset($_GET['logout']) && $_GET['logout'] == 'true'):
	session_destroy();
	header("Location: index.php");
endif;

?>
<html>
<head>
<title>Painel Administrativo |</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="css/estilopainel.css" rel="stylesheet" media="screen">
</head>
<body>
<nav class="navbar navbar-default" role="navigation">
  <div class="container"> 
    
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
      <a class="navbar-brand" href="#">Painel Administrativio</a> </div>
    
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse navbar-ex1-collapse">
      <p class="pull-right logout"> Bem Vindo: <?php echo $_SESSION['administrador']->nome_administrador ?> &nbsp <a href="?logout=true" class="btn btn-danger">Sair</a> </p>
    </div>
    <!-- /.navbar-collapse --> 
  </div>
</nav>
<div class="container">
  <div class="row">
    <div class="col-lg-9">
            <?php 
						foreach ($_REQUEST as $___opt => $___val) {
  							$$___opt = $___val;
						}
						if(empty($page)) {
								include("pages/noticias.php");
						}
						elseif(substr($page, 0, 4)=='http' or substr($page, 0, 1)=="/" or substr($page, 0, 1)==".") 
						{
							echo '<font size="+2" color="#000">A página não existe. Por favor selecione uma página a partir do Menu Principal.</font>'; 
						}
						else{
							include("pages/$page.php");
						}
					?>
</div>
    <div class="col-lg-3">
      <h2 class="linha">Menu</h2>
      <div class="bloco">
        <ul class="list-group">
          <li class="list-group-item"> <span class="badge"><?php echo count(listarAdmin()); ?></span> Registros </li>
        </ul>
        <div class="list-group">
        	<a href="?page=noticias" class="list-group-item active">Noticias</a>
        	<a href="#" class="list-group-item"><font color="#FF0000">Enquete - [INATIVO]</font></a>
            <a href="#" class="list-group-item"><font color="#FF0000">Eventos - [INATIVO]</font></a>
            <a href="#" class="list-group-item"><font color="#FF0000">Parceiros - [INATIVO]</font></a>
            <a href="?page=admgm" class="list-group-item">ADM's & GM's</a>
            
        </div>
      </div>
    </div>
  </div>
</div>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/painel.js"></script>
<script type="text/javascript" src="js/maskedinput.min.js"></script>
</body>
</html>
<?php
ob_end_flush();
?>

 

Vamos ao fomulário no arquivo painel.js chamado pelo meu painel.php(O QUAL JÁ ESTÁ COM  enctype="multipart/form-data":

<?php
require '../funcoes/banco/conexao.php';
require '../funcoes/crud/crud.php';
$acao = filter_input(INPUT_POST, 'acao', FILTER_SANITIZE_STRING);


switch($acao) {
	case 'form_editaradm':
			$id = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT);
			$dados = pegaIdAdm($id);
		?>
			<div class="retorno"></div>
            <script type="text/javascript">
    	$("#celular").mask("(99) 9 9999-9999");
    </script>
<form action="" name="form_editaradmgm" method="POST" enctype="multipart/form-data">
  <div class="form-group">
    <label for="Nick">Nick</label>
    <input type="text" name="nick" value="<?php echo $dados->nick_administrador; ?>" class="form-control" placeholder="Digite o Nick do Game" />
  </div>
  <div class="form-group">
    <label for="foto">Foto</label>
    <input type="file" name="imagem" class="form-control" />
  </div>
  <div class="form-group">
    <label for="Nome">Nome</label>
    <input type="text" name="nome" value="<?php echo $dados->nome_administrador; ?>" class="form-control" placeholder="Digite o Nome" />
  </div>
  <div class="form-group">
    <label for="Celular">Celular</label>
    <input type="text" name="celular" class="form-control" id="celular" placeholder="Digite o Celular"  value="<?php echo $dados->celular_administrador; ?>" />
  </div>
  <div class="form-group">
    <label for="Email">Email</label>
    <input type="text" name="email" class="form-control" placeholder="Digite um Email"  value="<?php echo $dados->email_administrador; ?>" />
  </div>
  <div class="form-group">
    <label for="Funcao">Função</label>
    <input type="text" name="funcao" class="form-control" placeholder="Digite uma Funcao"  value="<?php echo $dados->funcao_administrador; ?>" />
  </div>
  <div class="form-group">
    <label for="Login">Login</label>
    <input type="text" name="login" class="form-control" placeholder="Digite um Login"  value="<?php echo $dados->login_administrador; ?>" />
  </div>
  <div class="form-group">
    <label for="Nivel">Nivel</label>
    <select name="nivel" class="form-control">
      <option value="<?php echo $dados->nivel_administrador; ?>">Escolha uma opção: <?php if (($dados->nivel_administrador) == 1): echo 'Administrador'; else: echo 'Game Master'; endif; ?></option>
	  <option value="<?php if (($dados->nivel_administrador) == 1): echo '2'; $nivell = '2'; else: echo '1'; $nivell = '1'; endif; ?>"><?php if ($nivell == 1): echo 'Administrador'; else: echo 'Game Master'; endif; ?></option>
    </select>
  </div>
  <input type="hidden" name="id" value="<?php echo $dados->id; ?>" />
  <center>
    <img class="loader" style="display:none" src="images/loader.gif" />
  </center>
  <button name="submit" type="submit" class="btn btn-primary">Atualizar</button>
</form>
<?php
		break;

	// CASO PADRÃO DO SWITCH
	default:
		echo 'NADA';
	break;
}?>

Vamos ao meu painel.js só a parte que interessa(CASO NÃO QUEIRAM LER ESSA PARTE NÃO INTERESSA POIS ESTÁ FUNCIONANDO NORMALMENTE O JQUERY):

	//BTN ATUALIZAR ADM GM
	$('#myModal').on("submit", 'form[name="form_editaradmgm"]', function(){
		var dados = $(this);
		var botao = dados.find(':button');
		
		$.ajax({
			url: 'ajax/controller.php',
			type: 'POST',
			data: 'acao=editaradmgm&'+dados.serialize(),
			beforeSend: function(){
				botao.attr('disabled', true);
				$('.loader').fadeIn('slow');
			},
			
			success: function(retorno){				
				if (retorno === 'atualizou'){
					console.log(retorno);
					dados.fadeOut('slow', function(){
						msg('Administrador atualizado','sucesso');
						listarAdmin('ajax/painel.php', 'listar_admin', true);
					});	
				}else if(retorno === '1'){
					msg('Erro ao enviar sua imagem','alerta');
					$('.loader').fadeOut('slow', function(){
						botao.attr('disabled', false);
					});
				}else if (retorno === '2'){
					msg('Por favor, Adicionar uma foto!','alerta');
					console.log(retorno);
					$('.loader').fadeOut('slow', function(){
						botao.attr('disabled', false);
					});
				}else{
					msg('se fudeo total!','alerta');
					console.log(retorno);
					$('.loader').fadeOut('slow', function(){
						botao.attr('disabled', false);
					});
				}
			}
		});
		return false;
	});	

Agora vamos ao controller.php que é chamado pelo painel.js na Ação editaradmgm: onde ocorre o Notice: Undefined index: imagem in controller.php line 54 

<?php
case 'editaradmgm':
		$id = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT);
		$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
		$celular = filter_input(INPUT_POST, 'celular', FILTER_SANITIZE_STRING);
		$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
		$funcao = filter_input(INPUT_POST, 'funcao', FILTER_SANITIZE_STRING);
		$login = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING);
		$nivel = filter_input(INPUT_POST, 'nivel', FILTER_SANITIZE_NUMBER_INT);
		$nick = filter_input(INPUT_POST, 'nick', FILTER_SANITIZE_STRING);
		$foto = $_FILES['imagem']; //LINHA EM QUE OCORRE O ERRO	
		
		$pasta = '../fotos/';
		if(!file_exists($pasta)) mkdir($pasta,0755);
		
			if($foto['tmp_name']){
				$extencao = strchr($foto['name'],'.');
				$filename = md5(time()).$extencao;
				$imagem = array('.jpg','.jpeg','.png','.gif');
				if(in_array($extencao,$imagem)):
					$pasta = $pasta.'imagens/';
					$tipo = 'imagem';
				endif;
				
				if(!file_exists($pasta)) mkdir($pasta,0755);
				
				if(move_uploaded_file($foto['tmp_name'],$pasta.$filename)){
					$qr = "UPDATE administrador SET (nick_administrador, foto_administrador, nome_administrador, celular_administrador, email_administrador, login_administrador, senha_administrador, nivel_administrador) "; 
					$qr .= "VALUES('$nick','$foto','$nome','$celular','$email','$login','$senha','$nivel')";
					$ex = mysql_query($qr);
					echo 'atualizou';
				}else{
					echo '1';
				}
			}else{
				echo '2';
			}
	break;
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize o isset.

 

$foto = isset($_FILES['imagem']) ? $_FILES['imagem'] : false;

// Ou da forma abaixo, somente em PHP 7 >

$foto = $_FILES['imagem'] ?? false;

Compartilhar este post


Link para o post
Compartilhar em outros sites
47 minutos atrás, Alaerte Gabriel disse:

Utilize o isset.

 


$foto = isset($_FILES['imagem']) ? $_FILES['imagem'] : false;

// Ou da forma abaixo, somente em PHP 7 >

$foto = $_FILES['imagem'] ?? false;

ótimo o erro de campo parou, mas veio outro problema e não vejo erro de semântica :(

 

Nesta parte no if($foto['tmp_name'){  independente de ter ou não arquivo inserido no Input file ele retorna o erro 2 que é para inserir imagem na minha lógica de programação, não executando assim query para inserir no banco de dados e na pasta:

<?php
	if($foto['tmp_name']){
		$extencao = strchr($foto['name'],'.');
		$filename = md5(time()).$extencao;
		$imagem = array('.jpg','.jpeg','.png','.gif');
			if(in_array($extencao,$imagem)):
				$pasta = $pasta.'imagens/';
				$tipo = 'imagem';
			endif;
				
			if(!file_exists($pasta)) mkdir($pasta,0755);
				
			if(move_uploaded_file($foto['tmp_name'],$pasta.$filename)){
				$qr = "UPDATE administrador SET (nick_administrador, foto_administrador, nome_administrador, celular_administrador, email_administrador, login_administrador, senha_administrador, nivel_administrador) "; 
				$qr .= "VALUES('$nick','$foto','$nome','$celular','$email','$login','$senha','$nivel')";
				$ex = mysql_query($qr);
				echo 'atualizou';
			}else{
				echo '1';
			}
		}else{
			echo '2';
		}
?>

Grato desde já por sua ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade sua imagem não está sendo enviada. Me atentei agora que você faz o envio por jquery. o jQuery "não" faz o envio da imagem por si só dessa forma. é preciso uma chamada ali do objeto formData. Antes do seu $.ajax adicione:


 

var nform = new FormData(jQuery('form[name="form_editaradmgm"]')[0]);

//e no seu data:

data: 'acao=editaradmgm&'+nform,

Com isso seu campo FILE será enviado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
39 minutos atrás, ustogo disse:

Aprendi recentemente a usar MUITO o var_dump();

remédio do bom !

Obrigado, mas isso não me ajudou, o que ele me diz é apenas que a $foto não ta recebendo parâmetro nenhum mesmo eu buscando a foto no meu computador e colocando para upload, mas na hora de inserir é como se o campo tivesse nulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
×

Informação importante

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