Jump to content
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());
}
}}}

 

Share this post


Link to post
Share on other sites
<input type="hidden" name="fotoprof[]" required="required"  value="<?php echo $_GET['idc']; ?>" >
<input type="file" name="files[]" id="file1" multiple="multiple" >

 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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 - 

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 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.
    • By Ross Risso
      Tenho uma tabela pedidos com o campo forma de pagamento -  formpag - ele é uma combox que o usuário escolhe se o pagamento vai ser em dinheiro ou ou depósito em banco, na hora de criar o pedido.
      Nessa tabela também existe o campo total. O que necessito é buscar em uma consulta o total de todos os pedidos e mostrar separadamente na mesma consulta o total em dinheiro e em depósito.
      $qr="SELECT dataped, formpag, total  FROM tblpedidos  GROUP BY MONTH(dataped)"; $sqli=mysqli_query($conn,$qr); while($ln = mysqli_fetch_assoc($sqli)){} Como faço para obter a soma de "total" quando? Exemplo:
      JANEIRO  quando formpag for dinheiro - total em dinheido - quando formpag for depósito - total em depósito.
      JANEIRO total em dinheiro $ 100,00 - total em depósito $ 50,00. E assim por diante: FEVEREIRO, MARÇO e etc.
      espero ter sido claro. Agradeço a atenção de todos.
    • By celsomacarini
      Olá, estou com uma dúvida, como que eu faço para mandar a data e a hora atualizada para o meu banco? O código esta assim
      FUNÇÃO DE ADICIONAR
      public function adicionarSolicitacao($usuario = '', $assunto ='', $data ='', $hora ='') { if($this->existeEmail($email) == false) { $sql = "INSERT INTO solicitacao (usuario, assunto, data, hora) VALUES (:usuario, :assunto, :NOW(), :NOW())"; $sql = $this->pdo->prepare($sql); $sql->bindValue(':usuario', $usuario); $sql->bindValue(':assunto', $assunto); $sql->bindValue(':data', $data); $sql->bindValue(':hora', $hora); $sql->execute(); return true; } else { return false; } }
      ARQUIVO SUBMIT
       
      <?php include '../classes/ramal.class.php'; $contato = new Contato(); if(!empty($_POST['usuario'])){ $usuario = $_POST['usuario']; $assunto = $_POST['assunto']; $data = $_POST['data']; $hora = $_POST['hora']; $contato->adicionarSolicitacao($usuario, $assunto, $data, $hora); header("Location: index_servico.php"); }else{ header("Location: index_servico.php"); } ?> ARQUIVO DO FORMULÁRIO <div class="container"> <form name="formCadastro" method="POST" action="nova_solicitacao_submit.php"> <div class="form-row"> <div class="form-group col-md-6"> <fieldset disabled> <label for="inputEmail4">Nome do Usuário</label> <input type="text" class="form-control" name="usuario" value="<?php echo $_SESSION['usuarioNome']; ?>"> </div> </fieldset> <div class="form-group col-md-6"> <label for="inputState">Assunto</label> <select id="inputState" class="form-control" name="assunto"> <option selected>Impressoras</option> <option>EP-Específico Pormade</option> <option>Fluig</option> <option>Internet</option> <option>Logix</option> <option>Maker</option> <option>Office</option> <option>Inline</option> <option>Senhas</option> <option>SIMP</option> <option>Telefonia</option> <option>Terceiros</option> <option>Windows</option> <option>Backup</option> <option>CEDEPH</option> <option>Computadores</option> <option>CRM</option> <option>E-Mail</option> <option>Empréstimo de Equipamentos</option> <option>Formatação</option> <option>Outros</option> </select> </div> </div> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text">Qual é o problema?</span> </div> <textarea class="form-control"></textarea> </div><br> <input class="btn btn-primary" type="submit" value="Enviar"> <a href="nova_solicitacao_submit.php" class="btn btn-info" role="button">Voltar</a> </div> </div> </form> </header> </body>  
    • By gersonab
      Boa tarde a todos. alguém poderia me informar sobre o erro 406 ? está em um formulário de cadastro e na edição do mesmo, funcionava normalmente, apenas acrescentei mais dados de cadastros.
      total de 41 itens no formulário no momento.
       
      An appropriate representation of the requested resource could not be found on this server.
      Additionally, a 406 Not Acceptable error was encountered while trying to use an ErrorDocument to handle the request.
       
      Não foi possível encontrar uma representação apropriada do recurso solicitado neste servidor. Além disso, um erro 406 não aceitável foi encontrado ao tentar usar um ErrorDocument para manipular a solicitação. Desde já agradeço.
    • By adrianno
      Fala pessoal beleza?
      Tenho um problema para resolver,  tenho um sistema em PHP com MySQL, mas preciso melhorar a paginação,  tenho uma 2 lógicas de paginação em mente, uma delas é a que mais se encontra e videos, blogs, postagens  mostrando na web,
       
      onde damos um primeiro select CAMPO from TABELA, contamos  o resultado e temos o total de registros para tratar a quantidade de páginas, limite, quantidade que vai aparecer por página etc,  apos isso damos novamente o select CAMPOS from TABELA limite x, y  de acordo com o que obtivemos na lógica da paginação com a primeira SQL. esta lógica até que funciona, mas, não consegui aplicar ela usando JOIN  agrupando 2 ou mais tabelas, pois ai, eu teria  que fazer esta contagem  lá a primeira SQL, ou seja no fim, teria 2 SQL sendo executadas , uma mais rápida devido ao limit passado, mesmo assim ainda seriam 2 consultas.
      Outras lógica seria dar um SELECT count(CAMPO) from TABELA  seria uma SQL mais rápida,  mas...  se eu tiver um JOIN agrupando dados de uma tabela de categoria + produtos, eu teria que contar o resultado já agrupado das 2.
      Já pensei em executar a consulta normal, retornar o array dos dados, e depois paginar este array  com array_slice, e dividir ele de acordo com a quantidade de páginas e registros de cada.
      Já fiz paginação com JS/AJAX  mas mesmo assim, ainda preciso passar os dados totalizados, consigo uma boa visualização final na interface, mas por tras, sei que o processamento no MYSQL pesa
       
      Lembrando que em cada caso citado, cada vez que alteramos entre as páginas, é novamente executado os calculos.
       
      Alguem tem uma lógica bacana para paginação? de forma que nao fique pesado, lento em uma tabela muito grande?
       
       
       
       
       
       
       
×

Important Information

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