Ir para conteúdo

Arquivado

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

allan123

Gravar valor de uma combobox ao fazer Upload de arquivos ?

Recommended Posts

Boa tarde. Comecei essa semana numa empresa de desenvolvimento em PHP. Preciso incluir uma combobox numa página que faz o upload de arquivos. O upload já funciona e vem sendo utilizado.

** Gostaria de auxílio para gravar o valor selecionado na combobox na mesma tabela dos arquivos (que o cliente escolheu para fazer o upload). Esta combobox mostra a "Categoria do Arquivo" e servirá para classificar as imagens/documentos do cliente.




arquivos.php // Arquivo que contém a combobox e também o botão para fazer o upload dos arquivos.

<div class="form-group"> Categoria do Arquivo
        <form name="formCatArq" id="formCatArq" method="post" >
          <select class="form-control" style="width:40%" name="arqcat_codigo" id="arqcat_codigo"  >
            <option value="-1" selected="selected">Selecione a Categoria do Arquivo</option>
            <?php										  
 //CARREGA LISTA DE CATEGORIAS										 
$sql_gru = "select * from arquivos_categorias $sql_cat where arqcat_ativo ='S'  order by arqcat_titulo asc ";
$qry_gru = mysql_query($sql_gru);						 
if (mysql_num_rows($qry_gru) > 0) {
	while ($row = mysql_fetch_array($qry_gru)) {?>
            <option value="<?php echo $row['arqcat_codigo']?>" <? if ($marqcat_codigo == $row['arqcat_codigo']) {echo 'selected="selected"'; } ?>> <?php echo $row['arqcat_titulo']; ?> </option>
            <?php }
}?>
          </select>
          <label>
            <input type="submit" name="btnEnviar" id="btnEnviar" value="Filtrar sua busca:"  />
          </label>
        </form>
      </div>
     
// Botão para realizar o "Upload"
      <div id="mulitplefileuploader_arquivos">Upload</div>

Index.php // contém script para pegar o valor da combobox e na sequência chama a função "envia_valor" na tentativa de carregar o valor da combobox junto com a função do upload. Estou tentando enviar a variável "$arqcat" junto com o parâmetro "url:" da variável "settings_arq", mas este valor não chega na página "upload_arquivos.php" que efetua a inserção no banco.

<script>
$(function() {
    $('#arqcat_codigo').change(function(){
       var tip = $("#arqcat_codigo").val();
       if (($('#arqcat_codigo').val() == '-1') || (tip == '-1')) 
       {
            alert('Selecione a Categoria do Arquivo');
         
        }
        else {
		  envia_valor(tip);
			}
    });
});
</script> 

<script>	
function envia_valor(tip) {
	 $arqcat = tip;
	 $(document).ready(function(){
	 // alert($arqcat);
var settings_arq = {
			url: "upload_arquivos.php?cod=<?=$codigo?>&usucatcod=<?=$usucat?>&arqcatcodigo=<?=$arqcat?>",
					method: "POST",
					fileName: "myfile",
					multiple: true,
					showProgress: true,
					showStatusAfterSuccess: true,
					dragDropStr: "<span><b>Selecione os arquivos para upload23332</b></span>",
					onSuccess:function(files,data,xhr)
					{
						$("#status").html("<font color='green'>Upload realizado com sucesso</font>");
						location.reload();
					},
					onError: function(files,status,errMsg)
					{		
						$("#status").html("<font color='red'>Falha no upload</font>");
					}
				}
				$("#mulitplefileuploader_arquivos").uploadFile(settings_arq);
});
};
</script> 

upload_arquivos.php // recebe os parâmetros e gera o sql.

<?php
if(isset($_FILES["myfile"]))
{
	$ret = array();
	$error =$_FILES["myfile"]["error"];
   {
    
    	if(!is_array($_FILES["myfile"]['name'])) //single file
    	{
       	 	
			$arquivo = $_FILES["myfile"];
			$nome_temp = $arquivo["tmp_name"];
			$nome_arquivo =  $cod . "-" . $arquivo["name"];
			$nome_arquivo = str_replace(' ', '', $nome_arquivo);
			move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir. $nome_arquivo);
       	 	      	$ret[$arquivo]= $output_dir.$arquivo;
			$sql = "insert into arquivos (usu_codigo, arqcat_codigo, usucat_codigo, arq_legenda, arq_arquivo, arq_data, arq_imagem)  values($cod, '$arqcatcodigo', '$usucatcod', '$arquivo[name]','$nome_arquivo',curdate(),'N')";
			$post = mysql_query($sql);
			$codigo = mysql_insert_id();
			$ext = strxchr($nome_arquivo, ".", 1, 1);
			$ext = substr(strtolower($ext[1]),1);
				if ($ext=='jpg' || $ext=='jpeg' || $ext=='png') {
					GerarImagens($nome_arquivo, 200, 'thumb_');
					GerarImagens($nome_arquivo, 227, 'gal_');
					$sql2 = "update arquivos set arq_imagem='S' where arq_codigo=$codigo";
					$qry2 = mysql_query($sql2);
				}
			
    	}
    	
    }  
    echo json_encode($ret); 
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque um identificador no select e teste

$(function(){
    $('button').click(function(){
        alert($('#nome_id').val());
    });
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Williams. A função "envia_valor" recebe o valor da combobox, pois fui usando o alert pra testar. O problema é que eu preciso enviar esse valor junto com a variável "var_settings" que é gerada pelo upload do arquivo(acho que o programador anterior usou Jquery). Essa variável envia os dados para a página upload_arquivos, onde tem o sql para inserção. Você conhece alguma maneira de inserir um valor da uma variável, dentro dos atributos de outra variável ? Por exemplo:

var settings_arq = {
			url: "upload_arquivos.php?cod=<?=$codigo?>&usucatcod=<?=$usucat?>&arqcatcodigo=<?=$arqcat?>",
					method: "POST",
					fileName: "myfile",

Eu tentei enviar o valor através da url, mas das várias formas que testei, nenhuma funcionou. Tentei fazer "valor: $arqcat," , mas também não deu certo.
** Tendo em vista que não estou conseguindo enviar o valor da combobox junto com a variável "settings_arq", estou pensando em deixar a combobox e após o upload o usuário clica em um novo botão que vai fazer a inserção(alteração) naquele registro da imagem/arquivo no banco e gravar no campo correspondente o valor da combobox. Mas fico correndo um risco de que o usuário saia da tela sem registrar a categoria do arquivo(combobox).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é melhor você passar estes dados via o construtor FormData

data = new FormData();

depois

url: "upload_arquivos.php?cod=<?=$codigo?>&usucatcod=<?=$usucat?>&arqcatcodigo=<?=$arqcat?>",
                    method: "POST",
                    fileName: "myfile",
                    data: data,

                    .... 

Só uma sugestão!


Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Marcio_123
      pessoal blll
       
      To trabalhando esse codigo para cadastrar produtos de uma loja. Grava 100% no banco somente na hora do upload que esta levando somente 1 imagem sendo que são 3.
       
      alguem pode dar um help
      <? function slug( $string ) { if (is_string($string)) { $string = strtolower(trim(utf8_decode($string))); $before = 'áàãâäéèêëíìîïóòõôöúùûüçÇ'; $after = 'aaaaaeeeeiiiiooooouuuuçÇ'; $string = strtr($string, utf8_decode($before), $after); $replace = array( '/[^a-z0-9.-]/' => '-', '/-+/' => '-', '/\-{2,}/' => '' ); $string = preg_replace(array_keys($replace), array_values($replace), $string); } return $string; } $id_categoria = $_POST["id_categoria"]; $nome_produto = $_POST["nome_produto"]; $valor_real = $_POST["valor_real"]; $valor_promocao = $_POST["valor_promocao"]; $tamanho_p = $_POST["tamanho_p"]; $tamanho_m = $_POST["tamanho_m"]; $tamanho_g = $_POST["tamanho_g"]; $tamanho_gg = $_POST["tamanho_gg"]; $largura = $_POST["largura"]; $altura = $_POST["altura"]; $descricao = $_POST["descricao"]; $oferta = $_POST["oferta"]; $exibir_home = $_POST["exibir_home"]; $exibir_site = $_POST["exibir_site"]; $foto1 = $_FILES['foto1']['name'];//PEGA O ARQUIVO DE TEXTO $tmpFileB = $_FILES['foto1']['tmp_name'];//ARQUIVO TEMPORARIO DO ARQUIVO DE TEXTO $cod1 = date('dmY-his') . '-' . slug($_FILES["foto1"]["name"]); // GERA UM NOME PARA IMAGEM PEGANDO A DATA E HORA $foto2 = $_FILES['foto2']['name']; $tmpFileB = $_FILES['foto2']['tmp_name']; $cod2 = date('dmY-i') . '-' . slug($_FILES["foto2"]["name"]); $foto3 = $_FILES['foto3']['name']; $tmpFileB = $_FILES['foto3']['tmp_name']; $cod3 = date('dmY-s') . '-' . slug($_FILES["foto3"]["name"]); $caminhoB = "../produtos/fotos/".$cod1;//PASTA ONDE O ARQUIVO SERA ENVIADO. $caminhoB = "../produtos/fotos/".$cod2; $caminhoB = "../produtos/fotos/".$cod3;//----> so ta fazendo upload desta imagem if(move_uploaded_file($tmpFileB, $caminhoB)){ include "BD/conecta.php"; $sql = "INSERT INTO produtos (id_categoria, nome_produto, valor_real, valor_promocao, tamanho_p, tamanho_m, tamanho_g, tamanho_gg, largura, altura, descricao, oferta, exibir_home, exibir_site, foto1, foto2, foto3) VALUES ('$id_categoria', '$nome_produto', '$valor_real', '$valor_promocao', '$tamanho_p', '$tamanho_m', '$tamanho_g', '$tamanho_gg', '$largura', '$altura', '$descricao', '$oferta', '$exibir_home', '$exibir_site', '$cod1', '$cod2', '$cod3')"; if($qr = @mysql_query($sql)){ $erro = "Projeto cadastrado com sucesso!!!"; }else{ $erro = "Erro ao efetuar cadastro; tente outra vez."; } } header("Location: Cad-Produtos.php?msn=$erro"); ?>  
×

Informação importante

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