Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Array no banco de dados


MTavares

Question

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.

Edited by MTavares
Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 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.

Edited by MTavares
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 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
      652.1k
×
×
  • Create New...