Ir para conteúdo
gersonab

multiplo upload com id

Recommended Posts

Boa tarde a todos, estou com um problema com relação ao multiupload , consigo fazer o upload das imagens e gravar no banco, porém se eu fizer mais de uma imagem a segunda não grava o id que vem via get, só na primeira.

if ($_POST['cadastrar']) {
//diretório para salvar as imagens
$diretorio = "../files/";
//Verificar a existência do diretório para salvar as imagens e informa se o caminho é um diretório
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
$fotoprof = $_POST['fotoprof'][$key];
$file_name = $key.$_FILES['files']['name'][$key];
$file_size =$_FILES['files']['size'][$key];
$file_tmp =$_FILES['files']['tmp_name'][$key];
$file_type=$_FILES['files']['type'][$key];

$desired_dir= $diretorio;
if(move_uploaded_file($file_tmp,"$desired_dir/".$file_name))
{
$sql="INSERT INTO fotos ( foto, fotoprof ) VALUES ( :foto, :fotoprof )"; 
$stmt = $pdo->prepare($sql); 
$stmt->bindParam(':foto', $file_name);
$stmt->bindParam(':fotoprof', $fotoprof);
if ($stmt->execute()){
echo "Cadastrado com sucesso.";
} else {
print_r($stmt->errorInfo());
}
}}}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<input type="hidden" name="fotoprof[]" required="required"  value="<?php echo $_GET['idc']; ?>" >
<input type="file" name="files[]" id="file1" multiple="multiple" >

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom dia, estou retornando este post pois não fiquei satisfeito com a solução anterior, acreditem.

utilizando alguns plugins jquery que encontrei consigo fazer o upload tranquilamente de forma mais apresentável, no entanto continuo com o mesmo problema anterior, só gravo o id na primeira imagem, as demais não. segue os códigos abaixo.

meu formulário vem de uma janela modal com o nome e o id do item

<div class="modal fade" id="arqmodal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"  aria-hidden="true">
  <div class="modal-dialog" role="document">
    <form method="POST" action="../lista/insarquivo.php" enctype="multipart/form-data">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="exampleModalLabel">Cadastrar arquivos</h5>
        </div>
        <div class="modal-body">
          <div class="form-group mb-4">
            <label for="inputAddress">Nome</label>
            <input type="text" class="form-control" name="nomec"  id="nomec" >
          </div>
          <div class="custom-file-container" data-upload-id="mySecondImage">
            <label>Arquivos <a href="javascript:void(0)" class="custom-file-container__image-clear" title="Clear Image">x</a></label>
            <label class="custom-file-container__custom-file" >
              <input type="file" class="custom-file-container__custom-file__custom-file-input" name="foto[]" multiple>
              <input type="hidden" name="MAX_FILE_SIZE" value="104857600" />
              <span class="custom-file-container__custom-file__custom-file-control"></span>

            </label>
            <div class="custom-file-container__image-preview"></div>
          </div>
          <br>
        </div>
        <input name="fotoprof[]" type="hidden" id="idc">
        <div class="modal-footer">
          <button class="btn" data-dismiss="modal">Cancelar</button>
          <button type="submit" class="btn btn-primary">Cadastrar</button>
        </div>
      </div>
    </form>
  </div>
</div>

até aí sem problema, mostra o nome e o id consigo ver no console.

 

o arquivo para fazer o upload e salvar no banco.

$diretorio = "../files/";

$arquivo = isset($_FILES['foto']) ? $_FILES['foto'] : FALSE;
for ($controle = 0; $controle < count($arquivo['name']); $controle++){
	
	$destino = $diretorio."/".$arquivo['name'][$controle];
	if(move_uploaded_file($arquivo['tmp_name'][$controle], $destino)){
		
		$sql=$pdo->prepare("INSERT INTO fotos ( foto, fotoprof ) VALUES ( :foto, :fotoprof )"); 
		
		$sql->bindValue(':foto',$arquivo['name'][$controle]);
		$sql->bindValue(':fotoprof',$_POST['fotoprof'][$controle]);

		$sql->execute();

		if ($sql){
			echo "Cadastrado com sucesso.";
		}

		if (count($error) != 0) {
			foreach ($error as $erro) {
				echo $erro . "<br />";
			}
		}

	}
	
}

o upload é feito sem problemas, o nome dos arquivos são salvos, cada um em uma linha, porém o id que é o fotoprof só salva na primeira linha, não salva nas demais, ficam vazias, ja tentei várias formas e ainda não consegui.

 

Desde ja agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz desta forma, porém continua o problema.

$diretorio = "../files/";
$arquivo = isset($_FILES['foto']) ? $_FILES['foto'] : FALSE;
for ($controle = 0; $controle < count($arquivo['name']); $controle++){

	$destino = $diretorio."/".$arquivo['name'][$controle];
	move_uploaded_file($arquivo['tmp_name'][$controle], $destino);
}
$sql= "INSERT INTO fotos ( foto, fotoprof ) VALUES ( :foto, :fotoprof )"; 
$stmt = $pdo->prepare($sql);
			foreach($_FILES['foto']['name'] as $indice => $name) {
				$foto=$_FILES['foto']['name'][$indice];
				$fotoprof=$_POST['fotoprof'][$indice];
				$stmt->bindParam(':foto', $foto);
				$stmt->bindParam(':fotoprof', $fotoprof);
			
				if ($stmt->execute()){
					
			} else {
				print_r($stmt->errorInfo());
			}
		}

o que acontece, envio vários arquivos e UM id ( fotoprof ) , eu preciso salvar este id junto com os nomes dos arquivos, cada nome e o fotoprof em uma linha distinta, tipo :

 

id  - arquivo - fotoprof

1 - arquivo1 - 15

2 - arquivo2 - 15

3 - arquivo3 - 15

 

o que esta acontecendo :

 

id  - arquivo - fotoprof

1 - arquivo1 - 15

2 - arquivo2 - 

3 - arquivo3 - 

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

  • Conteúdo Similar

    • Por gersonab
      Boa tarde, preciso saber a quantidade de dias em um cadastro que foram utilizados, guardo estas data no mesmo, porem ao efetuar a pesquisa entre datas, há intervalo entre as mesmas, tipo:
      dias utilizados - 01 - 02 - 05 - 10 - 15 / 04/2024
      podemos observar que foram utilizados 5 dias, o que preciso é q na pesquisa entre 01 a 16 ( por exemplo ) me retorne 5 .
      a minha pesquisa esta me retornando a diferença entre as datas.
      $consulta = $pdo->query("SELECT * FROM taxa WHERE datataxa BETWEEN '".$data1."' AND '".$data2."' AND idmb = '".$user."' ORDER BY idtm ASC");  
    • Por gersonab
      Boa noite a todos, gostaria da ajuda de vcs, tenho um loop while dentro de uma janela modal, eu preciso q este seja dividido em duas colunas, pois esta ficando um pouco extenso, este lista opções que tenho no BD, fazendo os checkbox.
      estrutura .
      <div class="row"> <div class="col-md-12 ml-auto"> <label for="recipient-name" class="col-form-label">Opções:</label> <?php $curc4 = $pdo->query("SELECT * FROM opcoes ORDER BY opcao asc"); while ($lic4 = $curc4->fetch(PDO::FETCH_ASSOC)) { ?> <div class="checkbox-dark m-squar"> <input type="checkbox" name="opcao[]" id="opcao" value="<?php echo $lic4['opcao']; ?>"> <label class="mt-0" ><?php echo $lic4['opcao']; ?></label> </div> <?php } ?> </div> </div> no momento com 22 itens cadastrados, gostaria de mostrar duas colunas de 11 itens, desde já agradeço.
    • Por gersonab
      Boa tarde.
      estou com dificuldades para formar uma lógica, tenho um sistema onde faço o cadastro de parcelas conforme pedido pelo cliente, até aí sem problema, só que, só que se na hora o cliente resolver fazer à vista , eu não consigo editar, pois o número de parcelas seriam 0.
      <?php if(($parcpg === 0 ) || ( $parcpg === '')){ // caso não tenha parcela $valorparcelado = 0; } elseif (($jurospg === 0) || ($jurospg === '')){ // caso não tenha juros $valorparcelado = $valent / $parcpg; // caso parcela seja 0 ou nula dá erro aqui } else { $jurospg1 = $jurospg / 100; $nump = ($parcpg * 30); $nump4 = $nump + 30; $nump2 = $nump4 / 2; $nump22 = ($jurospg1 / 30) * $nump2; $valormedio = $nump22 * $valent; $valente = $valent + $valormedio; $valorparcelado = $valente / $parcpg;// caso parcela seja 0 ou nula dá erro aqui } ?> o erro só ocorre na edição.
       
    • Por gersonab
      Boa tarde
      tenho uma tabela com alguns itens e seus respectivos valores, preciso atualizar esses valores caso necessite.
      tipo:
      id - tip - descricao - valor
      1 -  1   - descrição - 2,00
      2 -  1   - descrição -12,00
      3 -  1   - descrição - 22,00
      4 -  2   - descrição - 2,00
      5 -  2   - descrição - 2,00
      6 -  2   - descrição - 2,00
       
      o  que eu quero fazer é atualizar conforme o tip , por exemplo , atualizar os valores do tip = 1 em 15%, assim ele atualizaria todos do tip 1 em 15%
    • Por gersonab
      utilizo um script para fazer upload de vários arquivos, só que agora foi solicitado para zipar o mesmo ao fazer o upload, pra ser sincero ja verifiquei vários tutoriais e não estou conseguindo.
      segue o script do upload funcionando sem o zip
       
      <?php if (!isset($_SESSION)) session_start(); require_once('config.php'); error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED); $idpr=$_POST['idpr']; $fotoprof=$_POST['fotoprof']; $foproc=$_POST['foproc']; $diretorio = "../files/"; $arquivo = $_FILES['foto']; for ($controle = 0; $controle < count($arquivo['name']); $controle++){ $nome = ($idpr."-P-".$arquivo['name'][$controle]); $values .= " ('{$nome}', '{$fotoprof}', '{$idpr}'),"; $destino = $diretorio."/".$idpr."-P-".$arquivo['name'][$controle]; move_uploaded_file($arquivo['tmp_name'][$controle], $destino); } $values=substr($values, 0, -1); $sql_fotos = "INSERT INTO fotos ( foto, fotoprof, fotoidpr ) VALUES $values"; //executa a query $executa = mysqli_query($con,$sql_fotos); ?> desde já agradeço qq ajuda.
×

Informação importante

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