Ir para conteúdo

Arquivado

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

Carcleo

lógica

Recommended Posts

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:

0.jpg

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):

1.jpg

Depois de submetido, o form envia os dados para o carrinho:

2.jpg

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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