Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

duvida de input

Bom dia, tenho um formulário, onde vou realizar uma atualização de uma tabela, porém o usuário deve informar o código do produto (que no meu caso é o ID). Qual o motivo? Vou explicar, tenho um produto e preciso fazer uma especie de etiqueta, possuo um valor total, imaginamos que seja 10, esta etiqueta pode ser dividida, e a pessoa pode escolher quantas serão impressas, por exemplo: 3 etiquetas uma com 2 unidades outra com 3 e outra com 5, enfim. este formulário serve exatamente para isto, para inserir no banco a quantidade exata de etiquetas e numero respeitando o valor total. Porem criei um campo input para receber este ID e enviar ele para a pagina de impressão, porém não sei exatamente como fazer isto. view

<div class="form-group">
                      <label>codigo: </label>
                      <input type='text' name="producao_id" value="producao_id" class="form-control" required="" placeholder="Insira o codigo">
                    </div>

controller

public function etiqueta () {

        $producaos = Producao::find($id);
        if(empty($producaos)) {
            return "Esta OP não foi encontrada";
        }

        return view ('op.geraetiqueta')
            ->with('pr', $producao)
            ->with('produtos', Produto::all())
            ->with('categoria', Categoria::all())
            ->with('modelos', modelo::all())
            ->with('clientes', Cliente::all());
    }
4 respostas

Oi Celso, tudo bom?

Entendo que o código do produto seja um valor unico. Mas, acredito que a melhor abordagem para gestão desses dados seja criar uma coluna especifica para o ID.

Isso porque o código do produto é algo que está sendo gerenciado pelo usuario, ele insere esse dado. E o id é algo que costumamos deixar para que o banco gerencie (auto increment).

Ao juntarmos as duas coisas teriamos que abrir mão do auto increment do id ou abrir mão do campo para preenchimento pelo usuario.

Tendo uma coluna para cada a gente pode ter os dois =)

É sempre legal deixar a coluna id como um recurso interno do sistema para gestão dos dados. Assim a gente evita confusão com a regra de negocio.

Nesse caso, você poderia receber pelo formulario o codigo do produto e deixar com que o banco gerenciasse o id apenas adicionando ele no banco.

Qualquer problema é só falar.

Abraço!

acho que você não entendeu... ao invés de fazer um select para retornar o id (que utilizo como código) quero que o usuário digite. pois tenho 42000 insert no banco... ai por exemplo quero editar o id 10 ao inves de selecionar quero digitar o id 10 e poder dar um update em 2 ou 3 colunas deste id... e para isto pensei no input... para capturar o id...

solução!

Ah, entendo... Nesse caso é até mais simples, você pode fazer um update passando a entidade toda. A gente só precisaria pegar o id que foi passado pelo formulario, algo como:

public function etiqueta () {
    // aqui pegamos o id do formulario e buscamos a entidade
    $id = $request->input('producao_id');
    // buscamos a entidade pelo id populada
        $producao = Producao::find($id);
        if(empty($producao)) {
            return "Esta OP não foi encontrada";
        }
    // agora precisamos puxar os dados dos outros inputs, algo como:
    $atributo = $request->input('nomeDoInput');
    // depois basta atualizar a entidade
    $producao->setAtributo($atributo);

    // se você quiser ainda podemos atualiza-la no banco
    $producao->save($producao);

        return view ('op.geraetiqueta')
         ->with('pr', $producao)
            ->with('produtos', Produto::all())
            ->with('categoria', Categoria::all())
            ->with('modelos', modelo::all())
            ->with('clientes', Cliente::all());
    }

Não sei se essa é a ideia exata desta rota pois não vi o formulario inteiro, mas se você possui outros inputs além do id para gerar a etiqueta basta repetir o código para o nomeDoInput e do respectivo $atributo, assim ele já virá atualizado na view 'op.geraetiqueta'.

isto mesmo que eu necessitava.. obrigado Ja tinha feito em javascript mais hora funcionava hora dava erro... fico muito grato pela sua ajuda...