Ir para conteúdo
Entre para seguir isso  
LuizHolambra

Gravar no mySql nome das imagens vindas de um array

Recommended Posts

Bom dia, Amigos.

Estou precisando de uma ajuda. Tenho uma tabela que cadastro imóveis e outra as fotos dos imoveis. Quando envio as imagens eu gero uma array[] com os nomes das imagens e ai tenho que separar para gravar no banco de dados com o id dos imóveis assim quando chamo um imóvel pego as fotos na tabela. Vejam tinha feito anteriormente um implode e gravado tudo em uma célula, mas o cliente me questionou como ele faria para trocar uma unica foto e não todas, foi ai que meus problemas apareceram!!!!

Por favor, se alguém puder me ajudar, segue o código abaixo.

///////////////////////////////////////////////////////////////////////////////////////////////////

if(empty($_FILES) && empty($_POST) 

&& isset($_SERVER['REQUEST_METHOD']) 
&& strtolower($_SERVER['REQUEST_METHOD']) == 'post'){ //pega o erro de tamanho maximo excedido


$postMax = ini_get('post_max_size'); //pega limite máximo
echo "Arquivo enviado excede: $postMax"; // exibe o erro
   echo "<form action=javascript:history.go(-1).php><button class=btn btn-danger> Voltar </button></form>";
}
else {// continua com o processamento da página
   if(isset($_FILES['fileUpload']))
   {
$id = $_POST['id'];
      require 'WideImage/lib/WideImage.php'; //Inclui classe WideImage à página


      date_default_timezone_set("Brazil/East");


      $name  = $_FILES['fileUpload']['name']; //Atribui uma array com os nomes dos arquivos à variável
      $tmp_name = $_FILES['fileUpload']['tmp_name']; //Atribui uma array com os nomes temporários dos arquivos à variável


      $allowedExts = array(".gif", ".jpeg", ".jpg", ".png", ".bmp"); //Extensões permitidas


      $dir = '../img/';


      for($i = 0; $i < count($tmp_name); $i++) //passa por todos os arquivos
      {
         $ext = strtolower(substr($name[$i],-4));


         if(in_array($ext, $allowedExts)) //Pergunta se a extensão do arquivo, está presente no array das extensões permitidas
         {
         $new_name = "ravel".uniqid()."-". $i . $ext;


         $image = WideImage::load($tmp_name[$i]); //Carrega a imagem utilizando a WideImage


         //$image = $image->crop('center', 'center', 800, 600); //Corta a imagem do centro, forçando sua altura e largura
$image = $image->resize(800, 600, 'outside');
///////////////MARCA D'AGUA////////////////
$logo = WideImage::load('../images/logo.png');
//$logo = WideImage::load('D:\inetpub\wwwrootimobiliariaravelyn\2016\images\logo.png');
$large = $image->merge($logo, 'center', 'center');
//$large = $image->unsharp(50, 0.5, 1)->merge($logo, 'center', 'center');
///////////////FIM MARCA D'AGUA////////////////
         //$image->saveToFile($dir.$new_name); //Salva a imagem
         $large->saveToFile($dir.$new_name, 90); //Salva a imagem
$msg[]=$new_name;
$img = implode(',', $msg);//MEUS PROBLEMAS COMEÇAM AQUI!!!!!
//var_dump($msg);
         }
      }
?>
    <div style=" padding:5%" align="center">
           <hr>
           <h3><a href="imoveis.php"><i class='glyphicon glyphicon-chevron-left'></i> Clique aqui</a> para voltar!</h3>
          <hr>
          <div class="row" align="center">
 <?php 


foreach($lista as $img){
$string = $img;
$array = explode(',', $string);
foreach($array as $item){
$id=$_POST['id'];
$insert = "INSERT INTO foto_imovel (id_imovel, fotos) VALUES(':id', ':item')";
} 
} 
try{
$result = $conexao->prepare($insert);
$result->bindParam(":id",$id, PDO::PARAM_STR);
$result->bindParam(":item",$item, PDO::PARAM_STR);
$result->execute();
$contar = $result->rowCount();
if($contar>0){
echo '<div class="alert alert-success">
                      <button type="button" class="close" data-dismiss="alert">×</button>
                      <strong>Sucesso!</strong> O arquivo foi atualizado.
                </div>';
}else{
echo '<div class="alert alert-danger">
                      <button type="button" class="close" data-dismiss="alert">×</button>
                      <strong>Erro ao cadastrar!</strong> Não foi possível atualizar o arquivo.
                </div>';
}
}catch(PDOException $e){
echo $e;
}


}
?>           
              </div>
            </div>
          </div>
          <hr>
    </div>
<?php
   }
Editado por Alaerte Gabriel
Adição da tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

O codigo ta um pouco confuso para mim, mas creio que você poderia fazer o seguinte:

ter um local especifico para alteração das imagens, tipo uma tabela com tumbnails e do lado um select, ele seleciona qual vai alterar e pronto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, icarof. Tb acho que para trocar a foto o select será a melhor opção, mas, meu problema é enviar várias imagens e gravar em uma tabela tipo "foto_imovel" com o id do imóvel assim quando chamar o imóvel exibe as fotos com o id do imóvel. não estou conseguindo fazer o looping correto para gravar!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano eu uso um script que adaptei da net, veja

//===================================================
$cod_album = $_POST["id_album"]; // recebe a id do album
$pasta = $_POST["pasta"]; //recebe a pasta do album
$fotos = $_FILES["arquivo"]; // recebe as fotos
$status = 1; // status das foto
$capa = 0; // capa oalbum

//==================================================
$diretorio = "fotos/".$_POST['pasta']; //diretorio para onde será movida as fotos

if (!is_dir($diretorio))
	mkdir($diretorio);

$arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;

				
for ($k = 0; $k < sizeof($arquivo['name']); $k++)
{
		$nome = $fotos['name'][$k];
		$destino = $diretorio."/".$arquivo['name'][$k];
	
	if (move_uploaded_file($arquivo['tmp_name'][$k], $destino)){
		//============================= Inserir no BD ====================
		//conexão
		$link = mysqli_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD);
		if(!$link)
			die(mysqli_error($link));
		else{
			mysqli_select_db($link, DB_DATABASE) or die (mysqli_error($link));
			mysqli_set_charset($link, DB_CHARSET) or die (mysqli_error($link));
		}
		//query
		$query = "INSERT INTO tabela (cod_album, foto, status, capa)";
		$query .= "VALUES ('$cod_album', '$nome', $status, $capa)";
	
		mysqli_query($link, $query) or die (mysqli_error($link));
		
		DBclose($link);
		$k+1;

		header("location: local para onde volta");

		//================================================================ 
		}							
		else {
			echo "Não Foi Possivel Mover o arquivo";
			}
		}		

Uso ele para enviar as fotos, no caso da alteração, você usa um UPDATE com base na id do imovel.

a fom

<form name="upload" enctype="multipart/form-data" method="post" action="grava_fotos.php">
<label>Codigo do Album</label>
<input name="id_album" type="text" id="id_album" value="<? echo $id ?>" readonly="readonly"><br />
<label>Pasta de Destino</label>
<input name="pasta" type="text" id="pasta" value="<? echo $pasta ?>" readonly="readonly"><br />
	
  <input type="hidden" name="MAX_FILE_SIZE" value="10485760">
        <input type="file" name="arquivo[]" multiple="multiple" />
        <br /><br />
        <input name="enviar" type="submit" value="Enviar">
			
</form>

ve se da certo e me fala

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano eu uso um script que adaptei da net, veja

//===================================================
$cod_album = $_POST["id_album"]; // recebe a id do album
$pasta = $_POST["pasta"]; //recebe a pasta do album
$fotos = $_FILES["arquivo"]; // recebe as fotos
$status = 1; // status das foto
$capa = 0; // capa oalbum

//==================================================
$diretorio = "fotos/".$_POST['pasta']; //diretorio para onde será movida as fotos

if (!is_dir($diretorio))
	mkdir($diretorio);

$arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;

				
for ($k = 0; $k < sizeof($arquivo['name']); $k++)
{
		$nome = $fotos['name'][$k];
		$destino = $diretorio."/".$arquivo['name'][$k];
	
	if (move_uploaded_file($arquivo['tmp_name'][$k], $destino)){
		//============================= Inserir no BD ====================
		//conexão
		$link = mysqli_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD);
		if(!$link)
			die(mysqli_error($link));
		else{
			mysqli_select_db($link, DB_DATABASE) or die (mysqli_error($link));
			mysqli_set_charset($link, DB_CHARSET) or die (mysqli_error($link));
		}
		//query
		$query = "INSERT INTO tabela (cod_album, foto, status, capa)";
		$query .= "VALUES ('$cod_album', '$nome', $status, $capa)";
	
		mysqli_query($link, $query) or die (mysqli_error($link));
		
		DBclose($link);
		$k+1;

		header("location: local para onde volta");

		//================================================================ 
		}							
		else {
			echo "Não Foi Possivel Mover o arquivo";
			}
		}		

Uso ele para enviar as fotos, no caso da alteração, você usa um UPDATE com base na id do imovel.

a fom

<form name="upload" enctype="multipart/form-data" method="post" action="grava_fotos.php">
<label>Codigo do Album</label>
<input name="id_album" type="text" id="id_album" value="<? echo $id ?>" readonly="readonly"><br />
<label>Pasta de Destino</label>
<input name="pasta" type="text" id="pasta" value="<? echo $pasta ?>" readonly="readonly"><br />
	
  <input type="hidden" name="MAX_FILE_SIZE" value="10485760">
        <input type="file" name="arquivo[]" multiple="multiple" />
        <br /><br />
        <input name="enviar" type="submit" value="Enviar">
			
</form>

ve se da certo e me fala

Mais uma vez obrigado, icarof. Vou fazer os testes hoje e posto aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por darkskull10
      Numa cidade as crianças costumam brincar com um jogo (de dois jogadores) onde:
      um jogador A define uma sequência de 10 letras usando: G, R e B (exemplo: G – G – G – R – B – R – B – B – B – R)
      um jogador B pode ler a sequência quantas vezes quiser
      o jogador B também pode dizer uma das letras e obter em quais posições a letra dada se encontra na sequência
      o jogador B também pode dar uma posição e saber qual letra ocupa a posição na sequência
      para finalizar, o jogador B deve dizer a sequência de letras, obtendo um ponto para cada acerto.
       
      Só consegui pensar nisso por enquanto.
       
      //identificar que letra ocupa esta posição na sequência:
      do{
      scanf(“%d”,&Posicao);
      Posicao=Posicao-1;}
      while ((Posicao<0)||(Posicao>9));
      printf(“%c”,Sequencia[Posicao]);
       
      //exibir sequencia
      for (Cont=0; Cont<=9; Cont++)
      printf(“%c”,Sequencia[Cont]);
       
      //exibir posições
      for (Cont=0; Cont<=9; Cont++)
      printf(“%d%c”,Cont+1,Sequencia[Cont]);
    • Por paulo.e.monteiro2015
      Boa noite,
       
      Possuo o seguinte array
      Array ( [0] => Array ( [0] => 564 [IdPergunta] => 564 [1] => 66 [IdQuiz] => 66 [2] => A EMS é líder no mercado farmacêutico há quantos anos? [DescricaoPergunta] => A EMS é líder no mercado farmacêutico há quantos anos? [3] => 1 [NumeroPergunta] => 1 ) [1] => Array ( [0] => 565 [IdPergunta] => 565 [1] => 66 [IdQuiz] => 66 [2] => A cada 100 medicamentos vendidos no Brasil 13 são de qual laboratório? [DescricaoPergunta] => A cada 100 medicamentos vendidos no Brasil 13 são de qual laboratório? [3] => 2 [NumeroPergunta] => 2 ) [2] => Array ( [0] => 566 [IdPergunta] => 566 [1] => 66 [IdQuiz] => 66 [2] => Qual medicamento controlado e lançamento dos Genéricos EMS é indicado para alívio de dores e possui formato de fácil deglutição? [DescricaoPergunta] => Qual medicamento controlado e lançamento dos Genéricos EMS é indicado para alívio de dores e possui formato de fácil deglutição? [3] => 3 [NumeroPergunta] => 3 ) [3] => Array ( [0] => 567 [IdPergunta] => 567 [1] => 66 [IdQuiz] => 66 [2] => Os Genéricos EMS possuem o maior portfólio do Brasil, com 195 moléculas, que atendem 96% das classes terapêuticas. Qual o número total de apresentações? [DescricaoPergunta] => Os Genéricos EMS possuem o maior portfólio do Brasil, com 195 moléculas, que atendem 96% das classes terapêuticas. Qual o número total de apresentações? [3] => 4 [NumeroPergunta] => 4 ) [4] => Array ( [0] => 568 [IdPergunta] => 568 [1] => 66 [IdQuiz] => 66 [2] => A EMS possui quantos anos de história? [DescricaoPergunta] => A EMS possui quantos anos de história? [3] => 5 [NumeroPergunta] => 5 ) [5] => Array ( [0] => 569 [IdPergunta] => 569 [1] => 66 [IdQuiz] => 66 [2] => Qual lançamento Genéricos EMS é o primeiro genérico do mercado indicado para o tratamento do Transtorno do Déficit de Atenção e Hiperatividade? [DescricaoPergunta] => Qual lançamento Genéricos EMS é o primeiro genérico do mercado indicado para o tratamento do Transtorno do Déficit de Atenção e Hiperatividade? [3] => 6 [NumeroPergunta] => 6 ) ) Preciso criar uma navegação item a item deste, para que possa dar a opção do usuário responder ao Quiz.
      Preciso muito desta ajuda pois tenho muita urgência em resolver isso. É só isso que falta para terminar o Quiz.
       
      Att.
    • Por markhosbh
      Prezados, boa tarde!
       
      Estou tendo dificuldades para transformar um retorno WebService em uma tabela HTML.
      A minha dificuldade está na seguinte condição, se fosse cabeçalho fixo bastava eu utilizar o foreach para percorrer o array e estava ok.
      Porém, a quantidade de campos do array de retorno não é fixo, aí que se encontra minha dificuldade, como fazer para ler e imprimir o cabeçalho e o conteúdo da tabela, sendo que essas informações podem variar.
       
      Exemplo:
       
      Requisição: 
      SELECT A1_COD, A1_NOME, TIPO FROM USUARIO  
      Retorno:
      [ {"A1_COD":"0093","A1_NOME":"JOAO","TIPO":"TITULAR"}, {"A1_COD":"0016","A1_NOME":"ABELARDO","TIPO":"TITULAR"}, {"A1_COD":"8586","A1_NOME":"ADRIANA","TIPO":"TITULAR"} ]  
      Array:
      Array ( [0] => Array ( [A1_COD] => 0093 [A1_NOME] => JOAO [TIPO] => TITULAR ) [1] => Array ( [A1_COD] => 0016 [A1_NOME] => ABELARDO [TIPO] => TITULAR ) [2] => Array ( [A1_COD] => 8586 [A1_NOME] => ADRIANA [TIPO] => TITULAR ) ) Quero que seja impresso em uma tabela html
       
      A1_COD A1_NOME TIPO 0093 JOAO TITULAR 0016 ABELARDO TITULAR 8586 ADRIANA TITULAR  
      Mas como informado o cabeçalho poderia variar, sendo a requisição por exemplo ser:
       
      SELECT * FROM USUARIO  
      Desde então agradeço.
    • Por lendadomato
      Pessoal,
       
      tenho uma aplicação que funcionava há muitos anos sem problemas, mas percebi que o meu servidor atualizou o PHP 5
      para PHP 7 sem me comunicar. Tenho uma função que contém alguns arrays e essa função parou de funcionar após a atualização.
      Gostaria saber se esse conjunto de arrays funciona dessa forma no PHP 7:
      $msg = array ( 'title' => 'Novo pedido', 'body' => $endereco, 'sound' => 'default' ); $fields = array ( 'to' => $tokenempresa, 'notification' => $msg ); $headers = array ( 'Authorization: key=' . API_ACCESS_KEY, 'Content-Type: application/json' ); Não entendo muito de PHP e não sei se esse código está correto.
       
    • Por gersonab
      há tempos utilizo para cadastrar data no BD a instrução :
      implode('-',array_reverse(explode('/',$data)))
      com isso no input posso colocar 09/02/2019 e no banco de dados grava 2019-02-09 , até ai sem problemas, porém ao atualizar um sistema para pdo, estou com problema no insert dinâmico, onde posso fazer 1 ou mais inserts, da forma abaixo cadastro quantos eu quiser :
      $sql = "INSERT INTO cantos ( id_t, id_c, data, ca, cant, po, des) VALUES (:id_t, :id_c, :data, :ca, :cant, :po, :des)";              $stmt = $pdo->prepare($sql);             foreach($_POST['idp'] as $indice => $valor) {             $stmt->bindParam(':id_t', $_POST['id_tor'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':id_c', $_POST['idp'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':data', $_POST['data'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':ca', $_POST["ca"][$indice], PDO::PARAM_STR);             $stmt->bindParam(':cant', $_POST['cant'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':po', $_POST['po'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':des', $_POST['des'][$indice], PDO::PARAM_STR);                              if ($stmt->execute()){                     echo "Cadastrado com sucesso.";             }
      no entento a data vai no formato do input 09/02/2019.
      caso utilize :
      $stmt->bindParam(':data', implode('-',array_reverse(explode('/',$_POST['data'][$indice]))), PDO::PARAM_STR);
      tenho o erro Strict standards: "Only variables should be passed by reference in "que significa "Apenas as variáveis podem ser passadas por referência"
      qual a melhor forma de se fazer neste caso ?
×

Informação importante

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