Carcleo 4 Denunciar post Postado Outubro 19, 2011 Olá pessoal, preciso de uma Ajuda com lógica aqui. Seguinte: Tenho um form que lista produtos separados por fornecedor e por lista de produtos. Esse form ofereçe ainda a possibilidade de o cliente enviar uma mensagem nao fornecedor daquele produto naquela lista. A seguência seria assim: Aqui, o cliente escolhe a lista de produtos: Aqui, o cliente tem os produtos separados por fornecedor naquela lista de produtos, escolhe os produtos colocando a quantidade e deixa uma mensagem ao fornecedor(caso queira): Depois de submetido, o form envia os dados para o carrinho: Agora preciso, voltar para escolher outro produto que esqueci de escolher naquela lista e clciko em voltar. Aqui esta a minha dificuldade: Gostaria aqui de, chegando á lista escolhida, entregar os valores já gravados no carrinho aos campos observação do cliente ao fornecedor e já setar qual opção de pagamento escolhi quando enviei os produtos, se foi à vista ou á prazo no campos Condição de pagamento. Alguém me ajuda? Grato a quem ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 19, 2011 nesse caso então que tal gravar uma SESSION? qndo o cara for para o ponto em que ele escolhe a opção de pagamento, você grava numa SESSION oq ele escolheu. E então qndo ele voltar, apenas mostre o valor da SESSION para ele. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 20, 2011 Entendi. Mas minha dificuldade esta exatamente ai: Na tela que exibe os produtos, você pode notar que tem listando os produtos, por fornecedor, para a lista selecionada. Para exibir o primeiro while com os dados do fornecedor, eu uso essa query: $sql_fornece = " SELECT fornecedores.id, concat( IFNULL(fornecedores.nome, ''), IFNULL (fornecedores.razaosocial, '' )), concat( IFNULL(fornecedores.cpf, ''), IFNULL (fornecedores.cnpj, '' )), produtos_lista.id_lista, fornecedores.pgto_forma, fornecedores.pgto_prazo from produtos_lista inner join produtos on produtos_lista.id_produto = produtos.id inner join fornecedores on fornecedores.id = produtos.fornecedor inner join grupos on produtos.grupo = grupos.id_grupo where produtos_lista.id_lista = $id_lista group by fornecedores.id order by concat( IFNULL(fornecedores.nome, ''), IFNULL (fornecedores.razaosocial , '' )), produtos.nome "; Depois, para cada fornecedor mostrado nesse query, eu listo os produtos dele: $sql_produtos = " SELECT pl.id_lista, p.foto, pl.id_produto, p.nome, f.id, concat( IFNULL(f.nome, ''), IFNULL (f.razaosocial , '' )), g.nome, p.quantidadecaixa, pl.preco_produto, pl.condicao, pl.observacao, pl.imposto from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo where pl.id_lista = $lista_fornece and f.id=$id_fornece order by concat(f.nome, f.razaosocial), p.nome "; Acontece, que na hora de enviar para o carrinho, eu envio apenas os dados que constam no while dos produtos. E ai, não estou sabendo montar: Até onde eu cheguei: Criei uma função dentro do carrinho, que guarda os codigos dos produtos, as listas, deles, e os fornecedores. isso, nesse teste que fiz, retornou um array assim: 2 produtos adicinados ao carrinho até agora: Array ( [0] => Array ( [0] => 83 - codigo produto [1] => Vai - mensagem [2] => 2 - lista [3] => 2 - tipo de pagamento [4] => 7 - codigo fornedor. ) [1] => Array ( [0] => 89 [1] => [2] => 1 [3] => 2 [4] => 13 ) Analisando a figura segunda imagem, como eu poderia verificar qual mensagem, tipo de pagamento, escolhido para aquele fornecedor naquela lista? Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 21, 2011 Bom, criei essa função que varre o array e procura por uma combinação de valores entre os fornecedor e lista da vez do while e uma combinaçao com o conteudo do carrinho: function array_array2($MeuCarrinho, $id_fornecedor, $id_lista ) { $par_item = $MeuCarrinho->getParItemObservavp(); for( $cl = 0; $cl< count( $par_item ); $cl++ ) { if( $id_fornecedor == $par_item[ $cl ] [ 4 ] and $id_lista == $par_item[ $cl ] [ 2 ] ) { return true; } } return false; } Se, ao chamar a funçao, tiver true como resposta, como faço para, no moe da array que houve combinação, pegar os valores dos indices, 1 (mensagem) e 3(tipo de pagamento, mas só o nó da combinaçao? Array ( [0] => Array ( [0] => 83 - codigo produto [1] => Vai - mensagem [2] => 2 - lista [3] => 2 - tipo de pagamento [4] => 7 - codigo fornedor. ) [1] => Array ( [0] => 89 [1] => [2] => 1 [3] => 2 [4] => 13 ) Puxa pessoal. Ninguem? Ainda não consegui! Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 21, 2011 Bom, estou colocando um js dentro do valor de uma variavel php. Mas, quando chamo a variavel php, envez de ela executar o codigo js, esta imprimindo. O que est errado? $mensagem1= $resultadodoarray[0][1]; $mensagem = "<script>document.getElementById('{$i}[observa_cli]')].value=$mensagem1</script>"; $marcado= $resultadodoarray[0][3]; if($marcado==1){ echo "<script>document.getElementById('{$i}[radio_pgto]')[0].checked=true</script>";} if($marcado==2){ echo "<script>document.getElementById('{$i}[radio_pgto]')[1].checked=true</script>";} Ideia 1: chamar $mensagem dentro do value de um type text. Esta mostrando o texto e não executa o js Idéia 2: marcar um radio button de dois indices. Não esta marcando Grato a quem puder ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 21, 2011 aperte Ctrl+U e analise o código HTML gerado. você verá q tem vários erros nisso ai. corrija até esse HTML gerado ficar correto. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 21, 2011 Corrigi que não era para imprimir a variavel $mensagem dentro do value do campo(cansasso) e sim dar um echo nela. Gerou isso: <script>document.getElementById('0[observa_cli]').value='Teste'1;</script> Não é possível definir a propriedade 'value': o objeto é nulo ou não <script>document.getElementById('0[radio_pgto]')[1].checked=true;</script> Não é possível definir a propriedade 1 : o objeto é nulo ou não Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 21, 2011 você só consegue acessar um elemento com js, depois q ele existir. e para inserir strings, você precisa colocar aspas: <script>document.getElementById('0[observa_cli]').value='Teste';</script> ou você coloca esses scripts, depois de criar os elementos, ou você usa um window.onload para esperar o documento carregar, e só ai atingir o elemento com js. além disso, você não deve iniciar IDs com numeros. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 21, 2011 Certo. Agora é o seguinte|: <script>document.getElementById('0[radio_pgto]')[1].checked=true;</script> Aqui, a idéia é pegar entre dois radio butons 0[radio_pgto] ou marcar o primeiro ou o segundo. Não seria assim? getElementById('0[radio_pgto]')[1].checked Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 21, 2011 você não deve duplicar IDs. logo, getElementById(), só retorna um unico elemento. Por isso q essa tua tentativa com o [1], não faz sentido. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 21, 2011 Então como fazer para marcar um ou outro radio com o mesmo name? <input type=\"radio\" name=\"{$i}[radio_pgto]\" id=\"{$i}[radio_pgto]\" value=\"1\" onclick=\"abre('{$i}[div_pgto_prazo]'); entrega_valores($numrows,$i, this.value,'radio_pgto' )\"\"> À vista <input type=\"radio\" name=\"{$i}[radio_pgto]\" id=\"{$i}[radio_pgto]\" value=\"2\" onclick=\"abre('{$i}[div_pgto_prazo]'); entrega_valores($numrows,$i, this.value,'radio_pgto' )\" > À prazo Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 21, 2011 qndo você quer marcar ele ? o script vai marcar sem interação do usuario ? pq ? o usuario vai fazer alguma coisa ? oque ? Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 21, 2011 Porque, ja vem do banco um valor que ja foi enviado anteriormente. Entendeu. O usuario ja passou nesse form e agora, ele quer ter a chance de alterar, só que ele quer saber qual foi a opçao marcada na hora que ele marcou Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 21, 2011 então marque com php, e não com js. simplesmente imprimindo um checked="checked" com php na tag correspondente. você não precisa e nem deve usar js para isso. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 21, 2011 Não dá: $marcado= $resultadodoarray[0][3]; //marcado aqui retorno: ou 1 ou 2, que são os values dos radio buttons. if($marcado==1){ echo "<script>document.getElementById('{$i}[radio_pgto]')[0].checked=true;</script>";} if($marcado==2){ echo "<script>document.getElementById('{$i}[radio_pgto]')[1].checked=true;</script>";} Como saio dessa? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 21, 2011 dá sim cara, faça com php. esquece o js, ok ? vamos lá.. vamos fazer com php. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 21, 2011 Então da uma dica de como seria pois estou boiando. Com js já esta pronto, só descobrir como chamar o indice certo do radio button Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 21, 2011 me diz como você sabe q tal dado é referente a tal radio. como está o loop q lista todos os radios ? é uma duvida diferente do começo do topico ne?! Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 21, 2011 A dúvida é conseguencia do começo. Fiz com js assim: <input type=\"radio\" name=\"{$i}[radio_pgto]\" id=\"{$i}[radio_pgto]1\" value=\"1\" onclick=\"abre('{$i}[div_pgto_prazo]'); entrega_valores($numrows,$i, this.value,'radio_pgto' )\"> À vista <input type=\"radio\" name=\"{$i}[radio_pgto]\" id=\"{$i}[radio_pgto]2\" value=\"2\" onclick=\"abre('{$i}[div_pgto_prazo]'); entrega_valores($numrows,$i, this.value,'radio_pgto' )\"> À prazo Apenas troquei os ids e chamei assim: $marcado= $resultadodoarray[0][3]; if($marcado==1){ echo "<script>document.getElementById('{$i}[radio_pgto]1').checked=true;</script>";} if($marcado==2){ echo "<script>document.getElementById('{$i}[radio_pgto]2').checked=true;</script>";} Como não há nenhuma validaçao pronta usando o id deu certo. valeu. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 21, 2011 com php, você faria assim: function check_radio( $value, $save ){ return $value==$save ? ' checked="checked"' : ''; } e ai, em cada radio: echo '<input type="radio" name="{$i}[radio_pgto]" value="1" '.check_radio( $resultadodoarray[0][3], 1 ).'> À vista'; echo '<input type="radio" name="{$i}[radio_pgto]" value="2" '.check_radio( $resultadodoarray[0][3], 2 ).'> À prazo'; Entendeu ? assim uso apenas php, sem usar js Compartilhar este post Link para o post Compartilhar em outros sites