Ir para conteúdo
Fórum Script Brasil
  • 0

Inserir varias opcções da checkbox para a base de dados


kerias

Pergunta

A minha dúvida é esta, Tenho um formulário com checkbox:

<form action='registo.php' target='_self' method='post' name='ppostar'>";

<tr><td><input type='checkbox' name='comida[]' value=Pizza' >Pizza</td>";

<td><input type='checkbox' name='comida[]' value='Hamburguer'>Hamburguer</td>";

<td><input type='checkbox' name=comida[]' value='Cachorro'>Cachorro</td></tr>";

<input type='Submit' name='enviar2' value='Registar'>

</form>

O utilizador selecciona todas, como é que envio todas as opcções para um campo por exemplo 'comida' de tipo Varchar na B.D.

$comida=$_POST['comida[]] - desta maneira só uma opcção é apreendida pela variável..

eu ainda n consegui criar um array, pk depois a minha dificuldade é enviá-lo para a base de dados, se a solução for a criação de um array, explicam-me como fazê-lo!

if(mysql_query==TRUE){

INSERT INTO pratos( comida ) VALUES('".$comida."')";

}

Cumprimentos e Obrigado!

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Obrigado pela resposta.. mas eu antes queria verificar se o utilizador carregou em alguma checkbox e não estou a conseguir..

'comida[]' -->são os nomes das checkbox

if($_POST['comida[]']== ""){

echo "<script>";

echo "alert('Os campos obrigatórios têm que estar preenchidos!')";

echo "</script>";

exit(); //impede que o resto do código seja executado

}

como poderia fazer?

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela resposta.. mas não estou a conseguir..

<form action='registo.php' target='_self' method='post' name='ppostar'>";

<tr><td><input type='checkbox' name='comida' value='Pizza' >Pizza</td>";

<td><input type='checkbox' name='comida' value='Hamburguer'>Hamburguer</td>";

<td><input type='checkbox' name=comida' value='Cachorro'>Cachorro</td></tr>";

aqui está o formulário, ele está a enviar a action para a mesma página, porque é assim que quero..

A 1º pergunta, é se a checkbox, precisam no seu nome o parênteses recto [], visto a variavel ter k ser um array..

Depois quero meter uma condição que obrigue o utilizador a seleccionar pelo menos uma... tipo esta

if($_POST['comida']== ""){

echo "<script>";

echo "alert('Os campos obrigatórios têm que estar preenchidos!')";

echo "</script>";

exit(); //impede que o resto do código seja executado

}

no entanto não sei porquê não funciona, só dá sem parênteses recto no nome, mas ainda assim aparece este erro : "Notice: Undefined index: comida in C:\wamp\www\rs\registo.php on line 744...

Depois quero quando o utilizador seleccionar todas as checkbox ou mais que uma, haver uma variável que as guarde, como:

$comida =$_POST['comida'];

echo $comida - só aparece a primeira..

---------------------

desta forma tb não dá..

foreach($_POST['comida'] as $comida){

echo $comida;

}

aparece este erro: Invalid argument supplied for foreach() in C:\wamp\www\rs\registo.php on line 704

--------------------

Desta forma tb aparece outro erro, tanto com request ou com post..

$comida = $_REQUEST['comida'];

$comida = implode(";", $comida);

echo $comida;

Warning: implode() [function.implode]: Invalid arguments passed in C:\wamp\www\rs\registo.php on line 700

--------------------

não sei mais o k fazer :-(

Depois por fim queria meter a variável array, na base de dados num campo VARCHAR...

Aqui está um pequeno formulário se alguém quiser experimentar...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns=http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

</head>

<body>

<form action="teste.php" target="_self" method="post" name="postar">

<input type="checkbox" name="ola" value="bom dia" />bom dia

<input type="checkbox" name="ola" value="bom almoco" />bom almoco

<input type="checkbox" name="ola" value="bom tarde" />bom tarde

<input type="checkbox" name="ola" value="bom noite" />bom noite

<input type="submit" value="ok" name="ok"/>

</form>

<?php

if(isset($_POST['ok])){

$pergunta1 = $_POST['ola'];

$pergunta1 = implode(";", $pergunta1);

echo $pergunta1;

}

?>

</body>

</html>

Obrigado pela ajuda e cumprimentos!

Editado por kerias
Link para o comentário
Compartilhar em outros sites

  • 0

"A 1º pergunta, é se a checkbox, precisam no seu nome o parênteses recto [], visto a variavel ter k ser um array.."

Sim, o nome do input deve ser seguido de [] (colchetes) ex: name=comida[]'

Quando você nomeia um input seguido de colchetes, está automaticamente dando uma sequencia para o seu array conforme os mesmos são enviados por exemplo

<input type="checkbox" name="ola[]" value="valum" />bom dia
<input type="checkbox" name="ola[]" value="valdois" />bom almoco
<input type="checkbox" name="ola[]" value="valtres" />bom tarde
<input type="checkbox" name="ola[]" value="valquatro" />bom noite
se todos os checkbox forem checados, o array sera criado dessa forma: array( [0] => valum [1] => valdois [2] => valtres [3] => valquatro ) Agora se uma das opções não for checada o array sera contruído sequencialmente apenas excluindo aquela opção, por exemplo array( [0] => valum [1] => valtres [2] => valquatro ) ---------------*--------------------- Agora para você fazer a verificação se foi pelo menos checado uma opção, ou obrigar o usuário a escolher uma opção você deve se ater a como o php vai trabalhar com o array criado, vamos a um exemplo: Quando resgatamos uma variável ou array enviada de um form em method POST ou GET, esse objeto já é um array. $_POST[0] $_POST[1] $_POST[2] $_POST[3] ou no caso de checkboxs pode ser colocado assim $_POST['ola][0] $_POST['ola'][1] $_POST['ola'][2] $_POST['ola'][3] veja o exemplo HTML
<input type='text' name='cidade'>
<input type='text' name='nome'>
<input type='text' name='telefone'>

<input type="checkbox" name="ola[]" value="valum" />bom dia
<input type="checkbox" name="ola[]" value="valdois" />bom almoco
<input type="checkbox" name="ola[]" value="valtres" />bom tarde
<input type="checkbox" name="ola[]" value="valquatro" />bom noite
PHP
$cidade = $_POST['cidade'];
$nome = $_POST['nome'];
$telefone = $_POST['telefone'];
$ola = $_POST['ola'];

if(!is_array($ola)){//caso não seja array retorna false e executa o if por causa do ! no inicio
    echo "<script>";
    echo "alert('Escolha pelo menos uma das opções!')";
    echo "</script>"; 
}

os erro que estavam ocorrendo eram devido a ausência de [] apos o name dos inputs

e para salvar no banco o array em forma de string é da mandeira que eu falei usando o implode, e depois o explode para transforma novamente em array.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...