FS
TFile Caracteristicas
Olá pessoal,
Tem alguma forma no adianti para eu pegar os dados do arquivo e gravar em uma variável:
$idArquivo = new TEntry('idArquivo');
$arquivo = new TFile('arquivo');
$idConvenio = new TEntry('idConvenio');
$datainclusao = new TDateTime('datainclusao');
Por exemplo: eu quero pegar o nome do arquivo que esta na variaável arquivo e gravar ele na variável $idConvenio é possível fazer isso.
Tem alguma forma no adianti para eu pegar os dados do arquivo e gravar em uma variável:
$idArquivo = new TEntry('idArquivo');
$arquivo = new TFile('arquivo');
$idConvenio = new TEntry('idConvenio');
$datainclusao = new TDateTime('datainclusao');
Por exemplo: eu quero pegar o nome do arquivo que esta na variaável arquivo e gravar ele na variável $idConvenio é possível fazer isso.
Fernando
É preciso entender o que exatamente você precisa.
Quando é feito um upload pelo Adianti, os dados do arquivo, assim como em qualquer outro script PHP poder ser acessado através de alguns métodos.
O arquivo é enviado da forma que é selecionado (nome e tipo).
Você pode acessá-lo através da variável $arquvo.
Sugiro usar o var_dump($arquivo) para que você possa ver tudo que vem junto com o arquivo.
Aí você trabalha da forma precisar.
a idéia é isso mesmo, quero pegar as informações de um arquivo upado, vou tentar aqui qualquer coisa eu aviso ok.
Não estou encontrando nada de como usar o var_dump, alguém pode me ajudar?
Fernando
No onSave após o $data = $this->form->getData();
use
var_dump($data);
ou
var_dump($data->arquivo).
Ele irá imprimir na tela o conteúdo da variável passada como parâmetro.
E depois para eu set a informação na variavel idConvenios para que seja armazenado do BD?
Fernando
Atribua o valor do atributo da variável que você quer.
Mas existe um conflito nesta variável. Quando vejo "idConvenios", eu acredito que deva ser atribuído um ID (int) e não nomes ou algo parecido.
Explique melhor o problema para que possamos te ajudar.
- Qual é o tipo da variável idConvenios?
- O que você precisa setar exatamente em idConvenios que venha de uma variável do tipo "file"?
Sim, isto mesmo, o que eu vou falar é colocar um laço ou seja uma condição para que ele analise conforme o conteudo da variável
colocar um ID para vincular na base.
Fernando
Acho que ainda não entendi.
Um "File" armazena característica de uma único arquivo.
Onde entre o laço?
Novamente não ficou claro o problema!
Pode explicar a necessidade?
Vai receber vários arquivos?
Por exemplo: se a informação da variavel for igual a "3273-EG3273000007" quero que ele grave no banco de dados pela variável idConvenios
o id do relacioamento correpondente a informação 3273-EG3273000007 ou seja, se a informação for está 3273-EG3273000007 ele tem que gravar no banco pelo idConvenio ó código 7.
Fernando
Quando você usa TFile, ao clicar em enviar o arquivo é transferido para o diretório tmp da raiz do projeto.
Você consegue acessá-lo através do id criado no form.
Claro que existem mais conceitos a serem aplicados e com certeza vc não vai comparar a string inteira para saber se é o não que precisa, mas segue um exemplo básico de como pegar os dados de um TFile. Lembrando que o nome do arquivo é composto também pela sua extensão.
$data = $this->form->getData(); // get form data as array
if ($data->arquivo == '3273-EG327300001120200624.CNV'){
$data->idConvenios = 11;
}
Fiz da forma como relatou porém da um erro com se ele não esta armazenando na variável idConvenios.
Erro: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'idConvenio' cannot be null
Achei o problema, desculpe o código é este mesmo que vc me passou, muito obrigado deu certo aqui.
Abaixo o código da forma que eu esta precisando, onde eu usei o substr para pegar somente a parte que eu preciso do arquivo e depois
fazer uma verificação.
$data->arquivo = substr($data->arquivo,0,17);
if ($data->arquivo == '3273-EG3273000011' ){
$data->idConvenio = 10;
}
Fernando
Que bom que deu certo!
Os arquivos tem sempre o mesmo nome?
Eles irão mudar somente o final que corresponde a agência,
mais a quantidade de caracteres sempre será a mesma.
Fernando
Vai funcionar enquanto o número de caracteres forem os mesmo!
Sucesso.
Sim, mais sempre será padrão, por isso os zeros a esquerda.
Mais muito obrigado mesmo.
Opa. No que puder ajudar, estou à disposição.
Sucesso!