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

(Resolvido) Array no banco de dados


MTavares

Pergunta

Pessoal,

estou quase finalizando um projeto, porém esbarrei no seguinte desafio:

tenho um formulário, na verdade ele está dentro de um array do javascript, do qual estou usando um código aonde ao selecionar um determinado número de uma combobox, ele gera automaticamente o número de campos selecionados. Por ex. se o usuário em uma combobox selecionar dois integrantes, aparecerão dois campos conforme abaixo dentro de um javascript. Eu retirei o código javascript para facilitar o entendimento:

Nome: <input type='text' name='NomeUsuario[]'>
Idade: <input type='text' name='IdadeUsuario[]'>
Faz parte do clube? Sim <input type='text' name='Associado[]'>

Nome: <input type='text' name='NomeUsuario[]'>
Idade: <input type='text' name='IdadeUsuario[]'>
Faz parte do clube? Sim <input type='text' name='Associado[]'>
quando vou jogar para o banco através do PHP, uso o seguinte código:
if($_POST):

  for($i = 0; $i < count($_POST['NomeUsuario']); $i++):

    $sql = mysql_query("INSERT INTO tabela VALUES (null, '".$_POST[NomeUsuario][$i]."','".$_POST[Idade][$i]."','".$_POST[Associado][$i]."')");

  endfor;
endif;

Ocorre a inclusão perfeitamente, se não fosse um detalhe: Ao marcar que o segundo nome faz parte do clube, fica armazenado no banco de dados o primeiro nome e não o segundo como deveria ser....

Alguém saberia como resolver isso?

Obrigado.

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

12 respostass a esta questão

Posts Recomendados

  • 0

Pessoal,

acho que não fui claro nas minhas dúvidas. É o seguinte, eu tenho um formulário:

1 -Nome: <input type='text' name='NomeUsuario[]'>
Idade: <input type='text' name='IdadeUsuario[]'>
Faz parte do clube? Sim <input type='text' name='Associado[]'>

2 - Nome: <input type='text' name='NomeUsuario[]'>
Idade: <input type='text' name='IdadeUsuario[]'>
Faz parte do clube? Sim <input type='text' name='Associado[]'>

Gostaria que ao preencher o formulário e marcasse no segundo cadastro se é associado e clicar no botão "Enviar" do formulário ficasse dessa forma:

Rui Barbosa, 31

Fernando Pessoa, 47, S

Só que quando faço isso, a seleção do Associado fica com Rui Barbosa e não no Fernando Pessoa.

Alguém poderia me ajdudar?

Abs.

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

  • 0

Criei esse código, só que não está funcionando:

<?php
  if($_POST["submit"] == "Testar"){ 

  if($_POST){
      
     for($m = 0; $m < count($_POST["nome"]); $m++){
              if($_POST["teste"][$m] == TRUE){
                  $t[] = $_POST["teste"][$m];
              }
              echo "<br>".$_POST["nome"][$m]. " -> " .$t[$m];
     }
  }
}
?>
<form method="post">
<?php for($i = 0; $i <= 2; $i++){ ?>
  Nome: <input type="text" name="nome[]">  Teste: <input type="checkbox" name="teste[]" value="S"><br>
<?php } ?>  
<input type="submit" name="submit" value="Testar">
</form>

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal,

quando eu coloco dessa forma:

Sim: <input type="checkbox" name="teste[]" value="S"> Não: <input type="checkbox" name="teste[]" value="N">

funciona perfeitamente, porém não posso deixar duas opções, porque a pergunta do formulário é óbvia: É estudante?. Não será necessário marcar o não... como eu poderia contonar nisso?

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei usar o foreach, mas tb não consegui:

foreach($_POST["teste"] as $testar[$m]){
              
              
                  if($testar[$m] == "S"){
                     $t[] = $testar[$m];
                     echo $_POST["nome"][$m]. " RECEBE O VALOR: " .$t[$m]. "<br>";
                  }
                  if(!isset($testar[$m])){
                     $t[] = $testar[$m];
                     echo $_POST["nome"][$m]. " RECEBE O VALOR: N <br>";    
                  }
          
          }

Alguém poderia me ajudar nessa solução?

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Olá ESerra,

não entendi muito bem. Seria algo assim?

if($testar[$m] == "S"){
                     $t[$m] = $testar[$m];
                     echo $_POST["nome"][$m]. " RECEBE O VALOR: " .$t[$m]. "<br>";
                  }
                  if(!isset($testar[$m])){
                     $t[$m] = $testar[$m];
                     echo $_POST["nome"][$m]. " RECEBE O VALOR: N <br>";    
                  }

pois a variável $m cria esse número sequencial....

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Baseado no que você colocou no terceiro post:

<?php
  if($_POST["submit"] == "Testar"){

      
     foreach($_POST['nome'] as $ind=>$val){
          $sim_nao = (isset($_POST['teste'][$ind]))?'S':'N';
          echo "<br>".$val. " -> " .$sim_nao;
     }
}
?>
<form method="post">
<?php for($i = 0; $i <= 2; $i++){ ?>
  Nome: <input type="text" name="nome[]">  Teste: <input type="checkbox" name="teste[<?php echo $i;?>]" value="S"><br>
<?php } ?>  
<input type="submit" name="submit" value="Testar">
</form>

Link para o comentário
Compartilhar em outros sites

  • 0

Olá ESerra,

funcionou perfeitamente. Acompanhando o seu raciocínio, fiz da seguinte forma:

if($_POST):
    
$NumResponsavel = $mt->NumResponsavel; // esse valor vem do banco
$NumFilhos = $mt->NumFilhos;  // esse valor vem do banco
   
       for($i = 0; $i < count($_POST['Cadastro']); $i++):

                         $sim_nao = (isset($_POST["cursou"][$i]))?'S':'N';

                endfor;
endif;
Até aqui tudo bem, funcionou perfeitamente, porém estou esbarrando em um outro obstáculo. Gostaria que os campos dos responsáveis não tivessem essa validação. Por ex: O formulário está da seguinte forma. Vale ressaltar que os campos estão dentro do javascript, pois estou criando os campos a partir de um combobox:
// Aqui começa o nosso javascript com o laço

Responsáveis:

<input type="text" name="Cadastro[]">

<input type="text" name="Cadastro[]">

Filhos:

<input type="text" name="Cadastro[]"> <input type="checkbox" name="cursou["+i+"]" value="S">

<input type="text" name="Cadastro[]"> <input type="checkbox" name="cursou["+i+"]" value="S">


// Aqui termina o javascript
Gostaria que os campos dos Responsáveis não aparecessem na variável $sim_nao. Tentei criar da seguinte forma:
$NumResponsavel = $mt->NumResponsavel; // esse valor vem do banco
$NumFilhos = $mt->NumFilhos;  // esse valor vem do banco
   
       for($i = 0; $i < count($_POST['Cadastro']); $i++):

                         $sim_nao = (isset($_POST["cursou"][$i]) and $i > $NumResponsavel)?'S':'N';

                endfor;
endif;

Quebrando a cabeça e não consegui....

Obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0

Cria um hidden com o mesmo nome do checkbox e coloca um valor fixo nele:

<input type="text" name="Cadastro[]"> <input type="hidden" name="cursou["+i+"]" value="IGNORAR">

<input type="text" name="Cadastro[]"> <input type="hidden" name="cursou["+i+"]" value="IGNORAR">

Filhos:
<input type="text" name="Cadastro[]"> <input type="checkbox" name="cursou["+i+"]" value="S">

<input type="text" name="Cadastro[]"> <input type="checkbox" name="cursou["+i+"]" value="S">
if($_POST["cursou"][$i] != 'IGNORAR' AND isset($_POST["cursou"][$i])?'S':'N';

Link para o comentário
Compartilhar em outros sites

  • 0

Olá ESerra,

olha eu ressuscitando um tópico..rsrsrsrs.. me baseei no exemplo que você me passou:

<input type="text" name="Cadastro[]"> <input type="hidden" name="cursou["+i+"]" value="IGNORAR">

<input type="text" name="Cadastro[]"> <input type="hidden" name="cursou["+i+"]" value="IGNORAR">

Filhos:
<input type="text" name="Cadastro[]"> <input type="checkbox" name="cursou["+i+"]" value="S">

<input type="text" name="Cadastro[]"> <input type="checkbox" name="cursou["+i+"]" value="S">
E quando busco o resultado:
$sim_nao = ($_POST["AlunoEscola"][$i] != "N" and $_POST["AlunoEscola"][$i] != "")?'S':'N';
Até aqui funcionou perfeitamente, porém não estou conseguindo alinhar os resultados. Por ex: Vamos supor que eu tenho 3 candidatos, sendo que o primeiro e o terceiro cursaram o 1º grau. quando trago o resultado, ele me retorna dessa forma: primeiro candidato = "S" segundo candidato = "S" terceiro candidato = "N" quando era para retornar: primeiro candidato = "S" segundo candidato = "N" terceiro candidato = "S" Baseado no seu exemplo, como eu poderia ajustar essa visualização, levando em consideração o código abaixo:
<input type="text" name="Cadastro[]"> <input type="checkbox" name="cursou["+i+"]" value="S">

<input type="text" name="Cadastro[]"> <input type="checkbox" name="cursou["+i+"]" value="S">

Desde já lhe agradeço por mais essa força, pois não estou conseguindo resolver esse desafio...

Abraços

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...