Ir para conteúdo

Arquivado

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

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
   }

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

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

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