Jump to content
eduardaarosaa

Mudar o nome das imagens de um array do tipo file

Recommended Posts

Eu estou salvando no banco de dados um array, como nome das imagens que são adicionadas por campos dinâmicos.

E movendo para um pasta as imagens.

Eu queria mudar o nome das imagens colocando na frente de cada nome um número randômico, porém da maneira que estou fazendo só está pegando no primeiro nome no índice [0] as demais não pegam o número.

<?php
include "../telas/sessao.php";
include "conexao.php";
$numero = rand();
$valor_total = $_POST['valor_total'];
$quantidade = implode('-',$_POST['quantidade']);
$carteira = implode(',', $_POST['carteira']);
$tipo = implode(',',$_FILES['file']['type']);
foreach($_FILES['file']['name'] as $nome => $a){
$nome = implode(',', $_FILES['file']['name']);
 
$nome_novo = str_place($nome,$numero, $nome);

echo $nome_novo;

    $tamanho = implode(',',$_FILES['file']['size']);

    $dia = mktime(date('d'), date('m'), date('y'));

    $data1 = gmdate('d/m/Y',$dia);

    //print $data1;

    $time = mktime(date('H')-3, date('i'), date('s'));

    $hora = gmdate("H:i:s", $time);

    foreach( $_FILES['file']['name'] as $key =>$name){

        $nome1 =  $numero . ($_FILES['file']['name'][$key]);

         move_uploaded_file( $_FILES['file']['tmp_name'][$key], "C:\\xampp\\htdocs\\otc\\anexos\\$nome1");    
    }

 

Share this post


Link to post
Share on other sites

Segue exemplo:

 

<?php

$folder_path = "C:\\xampp\\htdocs\\otc\\anexos\\";

foreach ( $_FILES [ 'file' ][ 'tmp_name' ] as $key => $a ) {
	# ARQUIVO CONF
	$f_name = $_FILES [ 'file' ][ 'name' ][ $key ];
	$f_tmp_name = $_FILES [ 'file' ][ 'tmp_name' ][ $key ];
	$f_ext = pathinfo ( $f_name, PATHINFO_EXTENSION );

	# NOVO NOME
	$new_name = uniqid ( time () ) . '.' . $f_ext;

	# CAMINHO + NOME
	$f_p_name = $folder_path . $new_name;

	# MOVE
	if ( @ move_uploaded_file ( $f_tmp_name, $f_p_name ) ) {
		echo "Enviado com sucesso!!!";
	} else {
		echo "Error!!!";
	}
}

 

Share this post


Link to post
Share on other sites
1 hora atrás, ShadowDLL disse:

Segue exemplo:

 


<?php

$folder_path = "C:\\xampp\\htdocs\\otc\\anexos\\";

foreach ( $_FILES [ 'file' ][ 'tmp_name' ] as $key => $a ) {
	# ARQUIVO CONF
	$f_name = $_FILES [ 'file' ][ 'name' ][ $key ];
	$f_tmp_name = $_FILES [ 'file' ][ 'tmp_name' ][ $key ];
	$f_ext = pathinfo ( $f_name, PATHINFO_EXTENSION );

	# NOVO NOME
	$new_name = uniqid ( time () ) . '.' . $f_ext;

	# CAMINHO + NOME
	$f_p_name = $folder_path . $new_name;

	# MOVE
	if ( @ move_uploaded_file ( $f_tmp_name, $f_p_name ) ) {
		echo "Enviado com sucesso!!!";
	} else {
		echo "Error!!!";
	}
}

 

Desta forma só add uma imagem, eu quero adicionar várias imagens ao mesmo tempo .... Mas obrigada por tentar ajudar (:

Share this post


Link to post
Share on other sites

Ja tentou assim:

Obs: faço a mínima ideia se vai funcionar! só um palpite.


foreach( $_FILES['file']['name'] as $key =>$name){ 
  $rand[$key] = rand();
  $nome1[$key] = $rand[$key] . ($_FILES['file']['name'][$key]); 
  move_uploaded_file( $_FILES['file']['tmp_name'][$key], "C:\\xampp\\htdocs\\otc\\anexos\\".$nome1[$key]); 
}

 

Share this post


Link to post
Share on other sites
11 horas atrás, luannsr12 disse:

Ja tentou assim:

Obs: faço a mínima ideia se vai funcionar! só um palpite.



foreach( $_FILES['file']['name'] as $key =>$name){ 
  $rand[$key] = rand();
  $nome1[$key] = $rand[$key] . ($_FILES['file']['name'][$key]); 
  move_uploaded_file( $_FILES['file']['tmp_name'][$key], "C:\\xampp\\htdocs\\otc\\anexos\\".$nome1[$key]); 
}

 

 Obrigada por tentar me ajudar ... Mas meu problema não está em mover o arquivo ele move normal 

Meu insert está inserindo assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

 

E eu queria que ele inseri-se assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png,560156050duda.jpg','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

 

No mesmo campo: '560156050barco.png,560156050duda.jpg' duas fotos

 

Eu até tentei fazer assim: 

$nome = $numero . ($_FILES['file']['name']);

Ai ele fica assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png,duda.jpg','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

Ele pega as duas fotos, porém só a primeira com o $numero. 

Se tiver alguma sugestão, ou outra forma de fazer estou aberta 

Muito Obrigada

Share this post


Link to post
Share on other sites

Oi, fiz um exemplo para renomear todas a imagens do array $_FILES, só não fiz a parte de mover as imagens, só você complementar, segue:

 

<?php

if (isset($_POST['sendImagens'])) {
	foreach($_FILES as $imagem){
		$novas_imagens = [];
		foreach ($imagem['name'] as $key => $img){
			$md5 = md5(uniqid($key[$img]));
			$novas_imagens[] =  $md5.'_'.$img;
		}
	}
  	// imprime o array com os novos nomes
	echo "<pre>";
	var_dump($novas_imagens);
}

?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exemplo Upload</title>
</head>

<body>
	<form method="POST" action="#" enctype="multipart/form-data">
		<input type='file' multiple name='imagens[]' />
		<input type='submit' value='Enviar' name='sendImagens' />
	</form>
</body>

</html>

 

Share this post


Link to post
Share on other sites
Em 31/05/2019 at 11:28, eduardaarosaa disse:

 Obrigada por tentar me ajudar ... Mas meu problema não está em mover o arquivo ele move normal 

Meu insert está inserindo assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

 

E eu queria que ele inseri-se assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png,560156050duda.jpg','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

 

No mesmo campo: '560156050barco.png,560156050duda.jpg' duas fotos

 

Eu até tentei fazer assim: 

$nome = $numero . ($_FILES['file']['name']);

Ai ele fica assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png,duda.jpg','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

Ele pega as duas fotos, porém só a primeira com o $numero. 

Se tiver alguma sugestão, ou outra forma de fazer estou aberta 

Muito Obrigada

 

Segue exemplo de possível solução:

 

SQL A SER UTILIZADA

CREATE TABLE ordens (
	idOrdem INT NOT NULL AUTO_INCREMENT,
	tipo TEXT NOT NULL,
	nome TEXT NOT NULL,
	PRIMARY KEY (idOrdem)
);

 

CÓDIGO PHP

<?php

if ( $_FILES ) {
	# ARMAZENA OS ARQUIVOS
	$st_files = "";
	$st_mimes = "";

	# PATH
	$folder_path = "C://....";

	foreach ( $_FILES [ 'file' ][ 'tmp_name' ] as $key => $a ) {
		# ARQUIVO CONF
		$f_name = $_FILES [ 'file' ][ 'name' ][ $key ];
		$f_tmp_name = $_FILES [ 'file' ][ 'tmp_name' ][ $key ];
		$f_ext = pathinfo ( $f_name, PATHINFO_EXTENSION );

		# NOVO NOME
		$new_name = uniqid ( time () ) . '.' . $f_ext;

		# CAMINHO + NOME
		$f_p_name = $folder_path . $new_name;

		# ARMAZENA O MIME DOS ARQUIVO
		$st_mimes .= mime_content_type ( $f_tmp_name ) . ',';

		# ARMAZENA O NOME DO ARQUIVO
		$st_files .= $new_name . ',';

		# CÓDIGO DO UPLOAD
		# ...
	}

	# INSERE NO BANCO
	# SIMPLE CONN
	$conn = new PDO ( 'mysql:host=localhost;dbname=sua_tabela', 'root', '' );

	# INSERE
	$inserir = $conn->prepare ( 'INSERT INTO ordens (tipo, nome) VALUES (?, ?)' );
	$inserir->bindValue (1, rtrim ( $st_mimes, ',' ) );
	$inserir->bindValue (2, rtrim ( $st_files, ',' ) );
	$inserir->execute ();

	if ( $inserir->rowCount () > 0 ) {
		echo "Sucesso!!!";
	}
}

?>

<!DOCTYPE HTML>
<html>
	<head>
		<title> EXAMPLE </title>
	</head>

	<body>
		<form action="#" method="post" enctype="multipart/form-data">
			<label for="file">Selecione as Imagens</label>
			<input type="file" id="file" name="file[]" multiple />
			<br />
			<input type="submit" value="Enviar" />
		</form>
	</body>
</html>

 

RESULTADO

image.png.c58099cb3c24ab9b0ac2c1604a78de84.png

Share this post


Link to post
Share on other sites

Solução que consegui fazer ... 

 

<?php
include "../telas/sessao.php";
include "conexao.php";
$numero = rand();
$valor_total = $_POST['valor_total'];
$quantidade = implode('-', $_POST['quantidade']);
$carteira = implode(',', $_POST['carteira']);
$tipo = implode(',', $_FILES['file']['type']);
$nome = $_FILES['file']['name'];

$result = count($nome);
// echo $result;

$novo = [];
for ($i = 0; $i < $result; $i++) {

  $hehe = $numero . $nome[$i];
  array_push($novo, $hehe);

  //print_r($novo);

}
$arra = implode(',', $novo);
//print_r($arra);



//var_dump($nome);
$tamanho = implode(',', $_FILES['file']['size']);





$dia = mktime(date('d'), date('m'), date('y'));

$data1 = gmdate('d/m/Y', $dia);


//print $data1;

$time = mktime(date('H') - 3, date('i'), date('s'));

$hora = gmdate("H:i:s", $time);




foreach ($_FILES['file']['name'] as $key => $name) {

  $nome1 =  $numero . ($_FILES['file']['name'][$key]);

  move_uploaded_file($_FILES['file']['tmp_name'][$key], "C:\\xampp\\htdocs\\otc\\anexos\\$nome1");
}


$logado = $_SESSION['email'];

$inserir = "insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values(
  '$valor_total','$quantidade','$carteira','$tipo','$arra','$tamanho','$logado','$data1','$hora','0')";


$resposta = mysqli_query($link, $inserir);
//echo "Error: " . $inserir . "<br>" . mysqli_error($link);

 
    
//     }

if($resposta == true){
    echo ("<script>
    window.alert('Ordem criada com sucesso!')
    window.location.href='../telas/minhas_ordens.php';
    </script>");
}else{
    echo ("<script>
    window.alert('Erro entre em contato com a Bloco1!')
    window.location.href='../telas/criar_ordem.php';
    </script>");
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Robson Barros da Rocha
      Olá! Estou com sérias dúvidas sobre as notificações push. Já instalado, ela segue este tutorial explicativo: https://www.phpzag.com/push-notification-system-with-php-mysql/ Esse método para mim é mais simples, mas, e já fiz as adaptações para comportar meu banco de dados, mas, o problema é que ele não me envia as notificações push quando estou fora do navegador ou via celuar por exemplo. Eu comentei no artigo mencionado, mas, o autor não me respondeu já tem uma semana.
      Alguém tem algum artigo que indique como posso realizar essas notificações push até mesmo quando o navegador estiver fechado e via aparelho celular?
    • By z101
      Sou iniciante, nunca usei PHP na vida e preciso concluir uma tabela de distribuição de frequencia e o polígono de um array, sendo isso apenas o começo do que preciso fazer, mas isso não vem ao caso agora. Depois de muito pesquisar, acabei com o seguinte código:
      <?php
              $category = 7;
              $data = array(
                  16, 17, 17, 18, 18, 18, 19, 20, 20, 20, 20, 20, 
                  21, 21, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 
                  23, 25, 25, 25, 25, 25, 25, 26, 26, 27, 27, 27, 
                  27, 28, 28, 28, 29, 29, 29, 30, 30, 30, 30, 30, 
                  30, 30, 31, 32, 33, 33, 33, 34, 34, 35, 36, 39
              );
              $min = min($data);
              $max = max($data);
              $limit = ceil(($max - $min) / $category);
              sort($data);
              for ($i = 0; $i < $category; $i++) {
                  $count = 0;
                  foreach ($data as $key => $number) {
                      if ($number <=  (($min + ($limit - 1)) + ($i * $limit))) {
                          $count++;
                          unset($data[$key]);
                      }
                  }
                  echo ($min + ($i * $limit)) . '-' . (($min + ($limit - 1)) + ($i * $limit)) . ' => ' . $count.'<br>';
              }
       
      Ele compila, tudo bem, mas a saída tá errada: 
      16-19 => 7<br>20-23 => 18<br>24-27 => 12<br>28-31 => 14<br>32-35 => 7<br>36-39 => 2<br>40-43 => 0<br> Ele me retorna esses valores, mas devia ser: 
      16 - 19,3 -> 7
      19,3 - 22,6 ->  9
      22,6 - 25,9 -> 15
      25,9 - 29,2 -> 12
      29,2 - 32,5 -> 9
      32,5 - 35,8 -> 6
      35,8 - 39,1 -> 2
       
      O sete veio  daqui : k = 1 + 3,3log 60(60 pq sao 60  números) =  6,9,    esse numero tem que ser inteiro, daí o sete.
      Eu pensei que quando eu atribuisse 7 ao $category, ele ia fazer a divisão do menor valor - o maior valor por 7. No caso 16-39/7 = 3,3. Isso deveria gerar os valores certos, mas não aconteceu.
      Não sei como  arrumar, alguém pode  me ajudar?
       
       
    • By citypoa1
      boa tarde
       
      estou atualizando um script para usar em php 7, atualizei quase todas as funçoes mysql_ para mysqli, menos a mysqli_result que nao tem mais no php 7, pelo menos nao com a mesma funçao
      o codigo
       
       
      $boxes = 1; $tot24 = "0"; $out24 = "0"; $click24 = "0"; $intot = "0"; $outtot = "0"; $clicktot = "0"; $credittot = "0"; while($row = mysqli_fetch_object($result3)) { $result4 = mysqli_query($db1, "SELECT u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15,u16,u17,u18,u19,u20,u21,u22,u23 FROM stats WHERE id = $row->id"); $in = mysqli_fetch_array($result4, MYSQLI_NUM); $result5 = mysqli_query($db1, "SELECT o0,o1,o2,o3,o4,o5,o6,o7,o8,o9,o10,o11,o12,o13,o14,o15,o16,o17,o18,o19,o20,o21,o22,o23 FROM stats WHERE id = $row->id"); $out = mysqli_fetch_array($result5, MYSQLI_NUM); $result6 = mysqli_query($db1, "SELECT c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23 FROM stats WHERE id = $row->id"); $click = mysqli_fetch_array($result6, MYSQLI_NUM); $today = 0; $todayout = 0; $todayclick = 0; for($i=0;$i<=$thishour;$i++) { $today = $today + $in[$i]; } for($i=0;$i<=$thishour;$i++) { $todayout = $todayout + $out[$i]; } for($i=0;$i<=$thishour;$i++) { $todayclick = $todayclick + $click[$i]; } $totalins = $row->ins + $today; $totalout = $row->outs + $todayout; $totalclick = $row->clicks + $todayclick; if($row->ins24 == 0) $prod24 = "0%"; else $prod24 = round($row->click24 / $row->ins24 * 100) ."%"; if($totalins == 0) $prod = "0%"; else $prod = round($totalclick / $totalins * 100) ."%"; if($row->active == 0) { $bgimg = "../images/system/line2.jpg"; $enable = "<span onclick=\"enable('partner',$row->id);\" id=\"enable$row->id\"><img src=\"../images/system/enable.jpg\" id=\"enimg$row->id\"></span>"; } else { $bgimg = "../images/system/line.jpg"; $enable = "<span onclick=\"disable('partner',$row->id);\" id=\"enable$row->id\"><img src=\"../images/system/disable.jpg\" id=\"enimg$row->id\"></span>"; } if($row->chosen == 0) $chosenone = "No"; else $chosenone = "Yes"; if($row->noframe == 0) $nofrm = "Yes"; else $nofrm = "No"; $credits = round($totalins - $totalout * ($ratio / 100)); if($showdaily == 1) { $showin2 = $today; $showout2 = $todayout; if($today == 0) $showprod2 = "0%"; else $showprod2 = round($todayclick / $today * 100) ."%"; } else { $showin2 = $row->ins24; $showout2 = $row->out24; $showprod2 = $prod24; } if(strlen($row->domain) > 15) $domain = substr($row->domain, 0, 15)."..."; else $domain = $row->domain; $allplugs = mysqli_result(mysqli_query($db1, "SELECT COUNT(*) FROM content WHERE domain='$row->domain'"),0); $activeplugs = mysqli_result(mysqli_query($db1, "SELECT COUNT(*) FROM content WHERE domain='$row->domain' AND active=1"),0); o erro esta nas duas ultimas linhas, porque nao existe a funçao msqli_result, pesquisei todos os topicos aqui do forum e de outros forum sobre o meu problema, consegui resolver quase todos menos esse do mysqli_result
      ja tentei de todas as formas indicadas, a mais proxima foi 
      $allplugs = mysqli_query($db1, "SELECT COUNT(*) FROM content WHERE domain='$row->domain'"); $rows = $allplugs->fetch_assoc(); if(count($rows) > 0){ } $activeplugs = mysqli_query($db1, "SELECT COUNT(*) FROM content WHERE domain='$row->domain'"); $rows = $activeplugs->fetch_assoc(); if(count($rows) > 0){ } mas da o erro 
      Recoverable fatal error: Object of class mysqli_result could not be converted to string in /home2
      linha do erro:
      <div style=\"width:900px;float:left;\"><div class=\"edittitle\">Plugs(active):</div><div id=\"edittext\">$allplugs($activeplugs)</div></div>");
      echo "        <li id=\"li$row->id\">
       
      o problema ainda é a forma de usar a funçao mysqli_result, acho que fiz da forma errada
       
      alguem saberia onde esta o erro? ou indicar algum artigo relacionado...
    • By EvertonFD
      Bom dia estou fazendo u  ranking onde deve ser selecionado alguns critérios de desempate exemplo:
      Caso os pontos sejam iguais deve ser decidido pelos gols, só pra ressaltar estou aprendendo php então se tiver uma maneira melhor de fazer isso estou disposto a aprender, segue o codigo que estou usando:
       <?php
              $result_times = "  SELECT * FROM  times    WHERE grupos='4'  
                                                      
                                                      ORDER BY pontos    DESC";
              $resultado_times = mysqli_query( $conn, $result_times );
              while ( $row_times = mysqli_fetch_assoc( $resultado_times ) ) {
                  ?>
          
          <div class="row p-1 bg-light p-1 mt-1 ">
              <div class="col-md-3 ">
                  <img src="assets/images/times/<?php echo $row_times['id']; ?>/<?php echo $row_times['logo_time']; ?>" width="60">
                  <span>
                      <?php echo $row_times['nome']; ?>
                  </span>
              </div>
              <div class="col-md-1 col-4 align-self-center  border">
                  V- <?php echo $row_times['vitoria']; ?>
              </div>
              <div class="col-md-1 col-4 align-self-center border">E-<?php echo $row_times['empate']; ?></div>
              <div class="col-md-2 col-4 align-self-center border">D-<?php echo $row_times['derrota']; ?></div>
              <div class="col-md-2 col-4 align-self-center border">GF-<?php echo $row_times['gf']; ?></div>
              <div class="col-md-2 col-4 align-self-center border">GC-<?php echo $row_times['gc']; ?></div>
              <div class="col-md-1 col-4 align-self-center border">P-<?php echo $row_times['pontos']; ?></div>
          </div>
                  <!---->
                  <?php
              }
              ?>
            
          
    • By Matheus_Moura
      Boa tarde.
      Estou fazendo uma aplicação PHP em um PC Linux com Lubuntu como SO, para conexão com um banco de dados ORACLE 11g. Porém quando utilizo a função oci_connect ou qualquer outra função para oracle é retornado uma mensagem informando que estão indefenidas.
      Estou utilizando o XAMPP como servidor e fiz a configuração no caminho opt/lampp/etc/php.ini retirando o ; tanto no php_oci8.dll como também na php_oracle.dll, porém não obtive sucesso. Coloquei dentro da pasta opt também o instantclient já descompactado e utilizei o PECL para tentar ativar as OCI, porém mesmo assim ainda não consegui sucesso. Alguém teria alguma outra sugestão ?
       
      Att,
      Matheus Moura
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.