Jump to content
Fórum Script Brasil
  • 0

Array dentro de um foreach


moisesf

Question

Tenho um foreach que funciona perfeitamente com um único valor que vem do formulário de campos checkbox.

Se seleciono várias opções o foreach grava de um a um no banco de dados.

O problema é que no campo value preciso de passar dois valores.

Esse imput é preenchido no cadastro para o cliente fazer múltiplas escolhas, tenho que passar dois valores, código e nome da especialidade.

echo "<input type='checkbox' name='especialidade[]' value=$cod_especialidade,$especialidade' id='cod_especialidade'/>";

echo "<label for='checkbox' id='checkbox'> $especialidade</label><br />";

Quando o cliente clica em Registrar chama a função registra especialidades, como abaixo.

registra_especialidades($especialidade);

Se eu passar apenas um valor na propriedade value do checkbox, gravo cada escolha do cliente sem problemas, mas preciso de gravar dois valores como coloquei no value acima.

Só estou conseguindo pegar o primeiro valor, o segundo valor(cod_especialidade) não estou pegando($especialidade)

Ou seja acho que não está entendendo o separador.

Como posso arrumar isso?

Função Registra Especialidades

function registra_especialidadeS($especialidade){

foreach($_POST["especialidade] as $espec)

{

echo "$espec <br />";//APENAS PARA VERIFICAR OS DADOS SE ESTÃO SENDO ENVIADOS

$lista=array($espec);

$cod_especialidade = $lista[0];

$medico_especialidade = $lista[0][1];

$sql = "insert into medicos_especialidades (cod_especialidade,medico_especialidade)values('$cod_especialidade','$medico_especialidade')";

$sql = mysql_query($sql) or die ("Erro na Gravação dos Dados da Especialidade Médica!!!");

}

}

Este abaixo funciona perfeitamente, mas pega somente um valor de cada vez.

foreach($_POST["especialidade"] as $espec)

{

echo "$espec <br />";//APENAS PARA VERIFICAR OS DADOS SE ESTÃO SENDO ENVIADOS

$sql = "insert into medicos_especialidades (espec)values('$espec')";

$sql = mysql_query($sql) or die ("Erro na Gravação dos Dados da Especialidade Médica!!!");

}

}

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Uai, Primeiro joga num array os valores, independente se o cara selecionou 1 ou 1000 opções, depois você faz um loop nesse mesmo array

simplificando:

foreach($_POST['checkbox'] as $valor) {
 $opcoes [] = $valor;
}
depois é executar o mysql dentro do loop das opções
foreach($opcoes as $selecionados) {
  mysql_query("insert into table (espec) values ($selecionados)");
}

Não seria isso?

Link to comment
Share on other sites

  • 0
Uai, Primeiro joga num array os valores, independente se o cara selecionou 1 ou 1000 opções, depois você faz um loop nesse mesmo array

simplificando:

foreach($_POST['checkbox'] as $valor) {
 $opcoes [] = $valor;
}
depois é executar o mysql dentro do loop das opções
foreach($opcoes as $selecionados) {
  mysql_query("insert into table (espec) values ($selecionados)");
}

Não seria isso?

Não dá certo, pois o campo checkbox está passando dois valores em cada escolha que é cod_especialidade e medico_especialidade

O value está sendo passado assim: value='$cod_especialidade,$especialidade'

$sql = "insert into medicos_especialidades (cod_especialidade,medico_especialidade)values('$cod_especialidade','$medico_especialidade')";

Edited by moisesf
Link to comment
Share on other sites

  • 0

Olá amigos. Acabou que achei uma forma de dar certo, se houver uma forma melhor podem postar.

[cod]

foreach($_POST['especialidade'] as $valor) {

$opcoes [] = $valor;

}

foreach($opcoes as $selecionados) {

$lista = explode("/", $selecionados);

$cod_especialidade = $lista[0];

$medico_especialidade = $lista[1];

$sql = "insert into medicos_especialidades (cod_especialidade,medico_especialidade)values('$cod_especialidade','$medico_especialidade')";

$sql = mysql_query($sql) or die ("Erro na Gravação dos Dados da Especialidade Médica!!!");

}

[/cod]

}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...