lins.drt 0 Denunciar post Postado Agosto 27, 2011 Bom dia a todos! Estou com um problema ao tentar cadastrar dados no banco de dados - estou usando CodeIgniter. Tenho uma página/form que envia dados para um controle que faz uma solicitação a um model para executar o cadastro, no post tenho dados comuns (input texts, select option e textarea) e tenho checkboxes que vão em forma de vetor, no model (também tentei fazer o código direto no controle) tenho o código de insert dentro de dois loops, um vai ler o vetor cores[] e o outro o vetor tamanhos[]. O insert está dentro do loop mais interno. O código executa normalmente, pois antes de tentar fazer insert tinha dado um echo dentro do loop e os dados foram exibidos corretamente ... Segue o código: for($i=0;$i<count($data['cores']);$i++){ for($j=0;$j<count($data['tamanhos']);$j++){ $cod=random_string('nozero', 6).random_string('numeric', 10); $this->db->query(" INSERT INTO produtos( 'id', 'codigo', 'artigo', 'preco', 'categoria', 'modelagem', 'classe', 'cor', 'tamanho', 'observacao', 'ordem_tamanhos', 'desconto' ) VALUES( '', '".$cod."', '".$data['artigo']."', '".$data['preco']."', '".$data['categoria']."', '".$data['modelagem']."', '".$data['classe']."', '".$data['cores'][$i]."', '".$data['tamanhos'][$j]."', '','','') "); } } someone? Compartilhar este post Link para o post Compartilhar em outros sites
lins.drt 0 Denunciar post Postado Agosto 27, 2011 Bom dia a todos! Estou com um problema ao tentar cadastrar dados no banco de dados - estou usando CodeIgniter. Tenho uma página/form que envia dados para um controle que faz uma solicitação a um model para executar o cadastro, no post tenho dados comuns (input texts, select option e textarea) e tenho checkboxes que vão em forma de vetor, no model (também tentei fazer o código direto no controle) tenho o código de insert dentro de dois loops, um vai ler o vetor cores[] e o outro o vetor tamanhos[]. O insert está dentro do loop mais interno. O código executa normalmente, pois antes de tentar fazer insert tinha dado um echo dentro do loop e os dados foram exibidos corretamente ... Segue o código: for($i=0;$i<count($data['cores']);$i++){ for($j=0;$j<count($data['tamanhos']);$j++){ $cod=random_string('nozero', 6).random_string('numeric', 10); $this->db->query(" INSERT INTO produtos( 'id', 'codigo', 'artigo', 'preco', 'categoria', 'modelagem', 'classe', 'cor', 'tamanho', 'observacao', 'ordem_tamanhos', 'desconto' ) VALUES( '', '".$cod."', '".$data['artigo']."', '".$data['preco']."', '".$data['categoria']."', '".$data['modelagem']."', '".$data['classe']."', '".$data['cores'][$i]."', '".$data['tamanhos'][$j]."', '','','') "); } } someone? Resolvido! Eram as malditas aspas simples! Veja abaixo o correto: for($i=0;$i<count($data['cores']);$i++){ for($j=0;$j<count($data['tamanhos']);$j++){ $cod=random_string('nozero', 6).random_string('numeric', 10); $this->db->query(" INSERT INTO produtos( id, codigo, artigo, preco, categoria, modelagem, classe, cor, tamanho, observacao, ordem_tamanhos, desconto ) VALUES( '', '".$cod."', '".$data['artigo']."', '".$data['preco']."', '".$data['categoria']."', '".$data['modelagem']."', '".$data['classe']."', '".$data['cores'][$i]."', '".$data['tamanhos'][$j]."', '','','') "); } } Os campos da tabela não podem/devem ser referenciados entre aspas!... Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Agosto 28, 2011 Brother apenas uma dúvida, você está usando o FOR dentro do MODEL(o certo não seria fazer isso no controller ?), e outra porque não usa o ACTIVE RECORD do próprio CI ? $this->db->insert('produtos', $dados); Compartilhar este post Link para o post Compartilhar em outros sites
lins.drt 0 Denunciar post Postado Setembro 3, 2011 Pow André, até que eu queria utilizar de forma mais elegante os recursos do CodeIgniter mais não descubri uma forma de utilizar corretamente active records e respeitar o modelo MVC pra minha necessidade. É o seguinte: Tenho um form para cadastrar produtos (camisas), mais camisas tem modelagens diferentes, cores, tamanhos etc... A forma que fiz foi para fazer um cadastro rápido, caso contrário eu deveria cadastrar produto por produto, o que me consumiria um tempo precioso, por exemplo, ao cadastrar uma camisa eu tenho que especificar: codigo, artigo, preco, categoria, modelagem, classe, cor, tamanho, observacao e ordem_tamanhos, mas se eu utilizar AR, não consigo abrir o vetor cor e tamanho para cadastrar varios produtos em uma unica vez, porque uma camisa com nome A com preço B, da categoria C, modelagem D, da classe E pode ter os tamanhos P, M, G, GG, XGG etc e as cores azrul royal, branca, preto, verde bandeira etc que tornam um produto parecido com tamanhos e cores distintas...é complicado explicar isso, mas a unica forma que achei foi fazer foi abrir os vetores cor e tamanho com loop e cadastrar os produtos individualmente com um código único para cada um e o cadastro fica +- assim: 009863 | Camisa | 9.90 | Meia manga | Unissex | Produto | Preto | P 498575 | Camisa | 9.90 | Meia manga | Unissex | Produto | Preto | M 288765 | Camisa | 9.90 | Meia manga | Unissex | Produto | Preto | G 265492 | Camisa | 9.90 | Meia manga | Unissex | Produto | Preto | GG 356647 | Camisa | 9.90 | Meia manga | Unissex | Produto | Preto | XGG 986678 | Camisa | 9.90 | Meia manga | Unissex | Produto | Verde bandeira | P 238746 | Camisa | 9.90 | Meia manga | Unissex | Produto | Verde bandeira | M 019724 | Camisa | 9.90 | Meia manga | Unissex | Produto | Verde bandeira | G 875678 | Camisa | 9.90 | Meia manga | Unissex | Produto | Verde bandeira | GG O cadastro por AR é fácil e prático mas neste caso eu deveria cadastrar produto por produto, entendeu? você pode me ajudar nisso?...A ideia de utilizar AR para fazer isso seria excelente! o que me ajudaria também a respeitar nosso querido MVC...abrçs Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Setembro 5, 2011 Olá Lins, na verdade voce esta seguindo padrao MVC, ate porque você esta deixando a insercao no model e tals, o AR no caso seria apenas uma forma de insercao, que no caso você teria apenas que mudar o $this->db->query() para $this->db->insert(); Vou deixar um exemplo de uma forma de usar o ActiveRecord nessa situação: model function insert($table, $dados) { $this->db->insert($table, $dados); } controller function add_camisa() { // carega o model $this->load->model('camiseta_model', 'camiseta'); $data['codigo'] = random_string('nozero', 6).random_string('numeric', 10); $data['artigo'] = $this->input->post('codigo'); $data['preco'] = $this->input->post('codigo'); $data['categoria'] = $this->input->post('codigo'); $data['modelagem'] = $this->input->post('codigo'); $data['classe'] = $this->input->post('codigo'); $cores = $this->input->post('cores'); // Aqui você recebe os vetores $taman = $this->input->post('tamanho'); // Aqui você recebe os vetores // Aqui você addiciona os registros de acordo com a posicao dos vetores; for($i=0;$i<count($cores);$i++){ for($j=0;$j<count($taman);$j++){ $data['cores'] = $cores[$i]; $data['tamanho'] = $taman[$j]; // envia os dados para o model e salva no banco de dados $this->camisa->add_camisa('tabela_camisa', $data); } } } Abraços e até mais :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
lins.drt 0 Denunciar post Postado Setembro 9, 2011 puts André, tú é o cara!!! Pow cara, vlw mesmo, vou testar o código depois e posto se der tudo ok, aparentemente a lógica faz muito sentido e é o que eu queria fazer e não estava conseguindo...vou tentar e posto depois....abs Compartilhar este post Link para o post Compartilhar em outros sites