Ir para conteúdo

POWERED BY:

Arquivado

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

nboportune

[Resolvido] Pegar valores checkbox

Recommended Posts

Ola Pessoal...

 

Já faz mais ou menos 3 semanas que estou tentando resvolver isso e não consigo já procurei em tudo qualquer canto pela internet...

 

Oque acontece é o seguinte...

 

Tenho os valores de umas checkbox's que eu preciso pegar de uma pagina... não sabia como pegar dois valores, no caso o nome e preço, mas agora estou conseguindo mas o ruim é que preciso separar esses valores para inserir no banco de dados.... quando eu pego os valores ele aparece um do lado do outro ai vi o comando explode tentei usar ele, mas não tive resultado nenhum pois ele em vez de separar " Milho, Alho e Catupiry" ele separa assim "MAC" Ai tem o comando que eu coloco a variavel por exemplo "$opcao[1]" ele vai aparecer "ila" ele pega as segundo caracteres de cada nome... e se eu coloco "$opcao[2]" aparece o 3° caracter de cada um e por ai vai... preciso separar eles com um nome inteiro para inserir no banco de dados....

 

Segue os codigos que estou usando:

 

<form method="POST" action="recebe.php">
  <p>
        <input type="checkbox" name="nome[Milho]" value="3">
        <input type="checkbox" name="nome[Alho]" value="10">
        <input type="checkbox" name="nome[Catupiry]" value="5">
    <input type="submit" value="Enviar">
  </p>
</form>

e ai no recebe.php está o seguinte código...

 

<?PHP


$total = $_POST['nome'];

while(List($key, $value)=each($total)){
list( $opcao ) = explode( " ", $key);
        echo $opcao[0];


}
?>

esse é só um teste que estou fazendo pra tentar pegar os valores pra depois jogar no arquivo certo... pra ficar mais limpo de visualizar...

isso já esta deixando eu louco... porque não consigo entrar em um acordo de como fazer isso... por favor me ajudemmm

 

agradeço desde já

muito obrigado...

 

att

Neto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, faça com um foreach na página que recebe. Algo assim.

 

<?php
foreach($_POST['nome'] as $chave => $valor)
{
    echo 'Índice '.$chave.' e valor '.$valor.'<br/>';
}
?>

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção Carlos Eduardo...

 

Só que acontece que se eu fizer isso, na hora dele inserir no banco ele não ira inserir cada nome no campo indicado.... ele irá repetir o mesmo nome nos outros campos e criara uma nova linha com um novo id para as outras opcoes, ex:

 

teria que ficar assim:

 

op1= milho

op2=Alho

op3=catupiry

 

fazendo dessa forma que você me passou ele vai inserir:

op1=milho

op2=milho

op3=milho

ai ele cria uma nova linha

 

op1= alho

op2=alho e por ai vai ate criar a linha do catupiry tbm!

 

eu precisava separar eles de uma forma que eu pudesse fazer assim:

 

insert....... (op1, pc1, op2, pc2, op3, pc3) values ('$opcao[0]','$preco[0]', $opcao[1], '$preco1', '$opcao[2]','$preco[2]')

 

ta conseguindo entender a forma que estou dizendo?

 

onde qndo ele explodisse a variavel $opcao em 3 partes e essas partes levasse o nome...

 

se eu fizer assim: $opcao = "milho, alho, catupiry"; e pedir pra explodir ele separa certinho cada nome para cada opcao de numeros...

 

 

Agradeço mais uma vez pela sua atenção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tua modelagem está estranha... Pelo que eu percebi, se o cara não escolher as 3 opções como vai ficar? Vai gravar em branco? Se o cara não escolher a segunda opção, ela não vai ser enviada para a página que recebe o action, fazendo com que a terceira opção seja enviada como sendo a segunda.

 

Veja que o código que eu coloquei era somente um exemplo. Como você vai utilizar, vai depender do seu caso.

 

Tenta explicar o que você quer fazer e como está tentando fazer, pois poderemos sugerir uma modelagem melhor.

 

De qualquer forma, se quiser mesmo fazer como está fazendo, pode fazer algo assim.

 

$sql = 'INSERT INTO tabela (op1, pc1, op2, pc2, op3, pc3) VALUES (';
foreach($_POST['nome'] as $chave => $valor)
{
     $sql .= "'$chave','$valor'";
}
$sql .= ')';
echo $sql;
Veja que não estou tratando os dados que vêm do formulário, o que é altamente recomendável por questão de segurança.

Deve funcionar mais ou menos (acho que vai faltar uma vírgula entre os campos, mas aí é só pensar um pouco).

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tua modelagem está estranha... Pelo que eu percebi, se o cara não escolher as 3 opções como vai ficar? Vai gravar em branco? Se o cara não escolher a segunda opção, ela não vai ser enviada para a página que recebe o action, fazendo com que a terceira opção seja enviada como sendo a segunda.

 

Veja que o código que eu coloquei era somente um exemplo. Como você vai utilizar, vai depender do seu caso.

 

Tenta explicar o que você quer fazer e como está tentando fazer, pois poderemos sugerir uma modelagem melhor.

 

De qualquer forma, se quiser mesmo fazer como está fazendo, pode fazer algo assim.

 

$sql = 'INSERT INTO tabela (op1, pc1, op2, pc2, op3, pc3) VALUES (';
foreach($_POST['nome'] as $chave => $valor)
{
     $sql .= "'$chave','$valor'";
}
$sql .= ')';
echo $sql;
Veja que não estou tratando os dados que vêm do formulário, o que é altamente recomendável por questão de segurança.

Deve funcionar mais ou menos (acho que vai faltar uma vírgula entre os campos, mas aí é só pensar um pouco).

 

Carlos Eduardo

 

 

Opá, brigadoo novamento...

vou tentar explicar melhor...

 

Na verdade é um pedido online.. a pessoa compra a pizza e tem esses dados opicionais... quando ela clica em inserir a pizza ele grava no banco de dados na tabela carrinho, onde tem varios campos..... como o id da pizza, nome da pizza preco da pizza, etc...

 

entao quando ela adiciona a pizza vai adiconar as opcoes do checkbox junto para aquela pizza que ela ta comprando...

 

esse é o codigo do arquivo original que estou trabalhando:

$sql_add = "INSERT INTO carrinho (id_produto, nome_produto, desc_produto, comentario, selecione, preco_inteira, qtd_produto, op_milho, pc_milho, op_cat, pc_cat, op_queijo, pc_queijo, op_alho, pc_alho, sessao, tipo)
VALUES
('".$reg_prod['id_produto']."', '".$reg_prod['nome_produto']."', '".$reg_prod['desc_produto']."', '$comentario', '$selecione', '".$reg_prod['preco_inteira']."', 1, '".$opcao[0]."', '".$preco[0]."', '".$opcao[1]."', '".$preco[1]."', '".$opcao[2]."', '".$preco[2]."', '".$opcao[3]."', '".$preco[3]."', '".session_id()."', '".$reg_prod['tipo']."')";
esse é o codigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Carlos Eduardo,

 

No echo que você colocou, apareceu certinho do jeito que eu quero que cadastre no banco... mas não consegui e não entendi como coloco o codigo no inset para fazer ele gravar no banco de dados...

 

 

Cara obrigado mais uma vez....

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só executar a $sql, por exemplo

 

mysql_query($sql);

Carlos Eduardo

 

no case seria isso?


$sql = 'INSERT INTO opcao (op1, pc1, op2, pc2, op3, pc3) VALUES (';
foreach($_POST['nome'] as $chave => $valor)
{
     $sql .= "'$chave','$valor'";
}
$sql .= ')';
mysql_query($sql);


pq não esta gravando no banco...

Vlw pela atenção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte.

 

mysql_query($sql) or die('Erro na inserção. Query enviada - '.$sql.'<br/>Erro do Mysql - '.mysql_error());

Vai aparecer o erro do Mysql e a query enviada. Com certeza o erro vai ser de sintaxe, porque vai faltar , entre os campos. Aí você tenta entender a lógica que está sendo utilizada. Mas mesmo assim, você ainda vai ter um problema, porque se o camarada só marcar 2 opções, ou só uma, só vai passar 1 vez no foreach. Aí você tem que pensar em uma lógica diferente.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte.

 

mysql_query($sql) or die('Erro na inserção. Query enviada - '.$sql.'<br/>Erro do Mysql - '.mysql_error());

Vai aparecer o erro do Mysql e a query enviada. Com certeza o erro vai ser de sintaxe, porque vai faltar , entre os campos. Aí você tenta entender a lógica que está sendo utilizada. Mas mesmo assim, você ainda vai ter um problema, porque se o camarada só marcar 2 opções, ou só uma, só vai passar 1 vez no foreach. Aí você tem que pensar em uma lógica diferente.

 

Carlos Eduardo

 

entendi vou ver aqui mas a minha ideia era fazer isso com as arrat fosse separadas eu pegaria a variavel que ficaria quebrada e tentaria por a variavel como por ex. $opcao[0], $opcao[1], $opcao[2] ai colocaria dessa forma pra inserir no banco caso a pessoa selecionasse 2 opcao em vez de 3 a variavel $opcao[2] ficaria em branco e ai ele gravaria em branco tbmmm ... e ai na hora de calcular os ingredientes ele poderia calcular comecando da opcao[0] e nao somaria a ultima pq naum tem oque somar pois tem valor nenhum.... esta certo?

 

de qual forma você faria?

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Faça o seguinte.

 

mysql_query($sql) or die('Erro na inserção. Query enviada - '.$sql.'<br/>Erro do Mysql - '.mysql_error());

Vai aparecer o erro do Mysql e a query enviada. Com certeza o erro vai ser de sintaxe, porque vai faltar , entre os campos. Aí você tenta entender a lógica que está sendo utilizada. Mas mesmo assim, você ainda vai ter um problema, porque se o camarada só marcar 2 opções, ou só uma, só vai passar 1 vez no foreach. Aí você tem que pensar em uma lógica diferente.

 

Carlos Eduardo

 

entendi vou ver aqui mas a minha ideia era fazer isso com as arrat fosse separadas eu pegaria a variavel que ficaria quebrada e tentaria por a variavel como por ex. $opcao[0], $opcao[1], $opcao[2] ai colocaria dessa forma pra inserir no banco caso a pessoa selecionasse 2 opcao em vez de 3 a variavel $opcao[2] ficaria em branco e ai ele gravaria em branco tbmmm ... e ai na hora de calcular os ingredientes ele poderia calcular comecando da opcao[0] e nao somaria a ultima pq naum tem oque somar pois tem valor nenhum.... esta certo?

 

de qual forma você faria?

 

obrigado.

 

 

Opá volto aqui pra agradecer você Carlos Eduardo pela atenção que você me deu... e dizer que consegui resolver... pra todos ai que tvz estejam com o mesmo problema o soluçao é a seguinte:

 

$total = $_POST['nome'];

foreach ($total as $key => $val) {
        $opcao[] = $key;
        $preco[] = $val;
}

ai é só colocar $opcao[0] $opcao[1] e por ai vai...

pode colocar o nome da outra pessoa que me forneceu isso? é de outro forum...

 

e gostei do código que você me mostrou, aprendi que da para fazer tipo um pause no comando e continuar ele novamente com aquele ".=" não conhecia isso.

 

Grato.

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.