[Resolvido] Problema Usando Foreach
#1
Posted 02/08/2010, 12:17
olha só , tenho o campo nome e o campo email , e existe 10 campos de cada , ou seja 10 nome e 10 email
quando vou mandar inserir no bd ele nao consegue pegar o valor do nome e o valor do email da mesma pessoa ...
será que alguem sabe como me ajudar ?
obrigado
#2
Posted 02/08/2010, 13:56
Não sou muito fã de foreach, você pode utilizar um while, por exemplo:
<?php $arrayNome[] = $nomes; $arrayEmail[] = $emails; $i = 0; while ($i < 10){ $insert = mysql_query("UPDATE tabela SET campoNome = '.$arrayNome[$i].', campoEmail = '.$arrayEmail[$i].'") or die(mysql_error()); $i++; } ?>
Obs.: Esta maneira só irá funcionar se os índices do array de Nome e Email forem iguais, exemplo Nome: Pedrinho (posição 0) e Email:pedrinho@... (posição 0 também);
Obs2.: Este looping é estático, apenas para 10 elementos, caso tenha mais ou menos pode utilizar a função count:
<?php //pega a quantidade de itens no array. $numCampos = count($arrayNome); //agora o while será referente a quantidade de campos no array while ($i < $numCampos){ ?>
Espero ter ajudado, qualquer coisa posta ai.
Abraço
Edição feita por: Alan Martini, 02/08/2010, 14:08.
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini
#3
Posted 02/08/2010, 14:13
<table width="613" border="0" cellspacing="1" cellpadding="0" style="color:#FFF; font-family:Verdana, Geneva, sans-serif;font-size:10px"> <tr> <td width="199">Nome : <input type="text" name="nome[]" id="nome"/></td> <td width="201">E-mail : <input type="text" name="email[]" id="email"/></td> </tr> <tr> <td>Nome : <input type="text" name="nome[]" /></td> <td>E-mail : <input type="text" name="email[]" /></td> </tr> <tr> <td>Nome : <input type="text" name="nome[]" /></td> <td>E-mail : <input type="text" name="email[]" /></td> </tr> <tr> <td>Nome : <input type="text" name="nome[]" /></td> <td>E-mail : <input type="text" name="email[]" /></td> </tr> <tr> <td>Nome : <input type="text" name="nome[]" /></td> <td>E-mail : <input type="text" name="email[]" /></td> </tr> <tr> <td>Nome : <input type="text" name="nome[]" /></td> <td>E-mail : <input type="text" name="email[]" /></td> </tr> <tr> <td>Nome : <input type="text" name="nome[]" /></td> <td>E-mail : <input type="text" name="email[]" /></td> </tr> <tr> <td>Nome : <input type="text" name="nome[]" /></td> <td>E-mail : <input type="text" name="email[]" /></td> </tr> <tr> <td>Nome : <input type="text" name="nome[]" /></td> <td>E-mail : <input type="text" name="email[]" /></td> </tr> <tr> <td>Nome : <input type="text" name="nome[]" /></td> <td>E-mail : <input type="text" name="email[]" /></td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3" align="center"><input type="submit" value="Enviar"></td> </tr> </table>
esse seu codigo eh como se cada um tivesse nome diferente certo ?
jah tentei algo parecido nao foi , sera que tu nao pode me dar uma luz ?
abrçs
#4
Posted 02/08/2010, 14:38
<?php //verifica se foi acionado o botão if (isset($_GET['cadastrar'])){ $i = 0; //recebe os dados do $_GET de nome e email respectivamente while ($i < 10){ $arrayNome[] = $_GET['nome'.$i]; $arrayEmail[] = $_GET['email'.$i]; $i++; } $i = 0; //monta o query do mysql (deve ser adaptado para as tabelas do seu BD) while ($i < 10){ $insert = mysql_query("UPDATE tabela SET campoNome = '$arrayNome[$i]', campoEmail = '$arrayEmail[$i]'") or die(mysql_error()); $i++; } die; } ?> <form action="cadastro.php" method="get"> <table width="613" border="0" cellspacing="1" cellpadding="0" style="color:#FFF; font-family:Verdana, Geneva, sans-serif;font-size:10px"> <?php //repetição para montar a tabela for ($i = 0; $i < 10; $i++){ ?> <tr> <td width="199">Nome : <input type="text" name="nome<?php echo $i; ?>" id="nome"/></td> <td width="201">E-mail : <input type="text" name="email<?php echo $i; ?>" id="email"/></td> </tr> <?php } ?> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3" align="center"><input type="submit" name="cadastrar" value="Enviar"></td> </tr> </table> </form>
Adicionei um <form> no código pois era necessário enviar as informações;
Prontinho
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini
#5
Posted 02/08/2010, 14:54
abrção
#6
Posted 02/08/2010, 15:12
if (isset($_GET['cadastrar'])){ $i = 0; //recebe os dados do $_GET de nome e email respectivamente while ($i < 10){ if ($_GET['nome'.$i] != "" && $_GET['email'.$i] != ""){ //será cadastrado apenas se os dois campos não forem vazios $arrayNome[] = $_GET['nome'.$i]; $arrayEmail[] = $_GET['email'.$i]; $i++; } } $i = 0; $totalCampos = count($arrayNome); //pega o total de campos no array. //monta o query do mysql (deve ser adaptado para as tabelas do seu BD) while ($i < $totalCampos){ $insert = mysql_query("UPDATE tabela SET campoNome = '$arrayNome[$i]', campoEmail = '$arrayEmail[$i]'") or die(mysql_error()); $i++; } die; } ?>
Ta ai.
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini
#7
Posted 02/08/2010, 15:27
if(isset($_GET['cadastrar'])){
for($i=0;$i<10;$i++){
if($_POST['nome'.$i] != "" && $_POST['email'.$i] != ""){
mysql_query("INSERT INTO tabela (campoNome,campoEmail) VALUES ('" . mysql_real_escape_string($_POST['nome'.$i]) .
"','" . mysql_real_escape_string($_POST['email'.$i]) . "')") or die(mysql_error());
}
}
}
Mude também o form de GET pra POST, porque GET é muito limitado em quantidade de caracteres. Você corre o risco de ter os dados cortados em algumas situações.
- gremio10 likes this
#8
Posted 02/08/2010, 15:34
Porque você tem tantos campos? Você precisa realmente dessa quantidade de campos?
Não é legal colocar os campos de formulário dentro de tabelas... isso é coisa de quando o povo usava tabelas para fazer o site todo...
Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.
#9
Posted 02/08/2010, 15:59
Estou achando estranho você ter tantos campos para a mesma coisa...
Porque você tem tantos campos? Você precisa realmente dessa quantidade de campos?
Não é legal colocar os campos de formulário dentro de tabelas... isso é coisa de quando o povo usava tabelas para fazer o site todo...
Preciso sim , é um site de balada aonde pode cadastrar 10 pessoas simultaneamente , acelerando o processo de cadastro.
Pô galera , vocês são demais , funcionou direitinho , Obrigadaão Ae...
Abrçs
Edição feita por: gremio10, 02/08/2010, 15:59.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)