Jump to content


Photo

[Resolvido] Problema Usando Foreach


  • Faça o login para participar
8 replies to this topic

#1 gremio10

gremio10

    Turista

  • Usuários
  • 27 posts
  • Sexo:Masculino

Posted 02/08/2010, 12:17

Galera , preciso de ajuda urgente , to com esse problema a uns 4 dias , nao consigo achar a solução

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 Alan Martini

Alan Martini

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:Campo Bom, RS
  • Interesses:De tudo um pouco

Posted 02/08/2010, 13:56

Fala ai, Tchê.

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.

Este post lhe ajudou/foi útil? Retribua(+)
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini

#3 gremio10

gremio10

    Turista

  • Usuários
  • 27 posts
  • Sexo:Masculino

Posted 02/08/2010, 14:13

cara é assim ,

<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">&nbsp;</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 Alan Martini

Alan Martini

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:Campo Bom, RS
  • Interesses:De tudo um pouco

Posted 02/08/2010, 14:38

Consegui, acho que esta não é a meneira mais correta de fazer este procedimento, mas funciona :lol:

<?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 ;)
Este post lhe ajudou/foi útil? Retribua(+)
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini

#5 gremio10

gremio10

    Turista

  • Usuários
  • 27 posts
  • Sexo:Masculino

Posted 02/08/2010, 14:54

somais uma perguntinha , pra me salvar total , como faço para que ele nao adicione campos em branco ?

abrção

#6 Alan Martini

Alan Martini

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:Campo Bom, RS
  • Interesses:De tudo um pouco

Posted 02/08/2010, 15:12

Na hora de montar o while pode ser feita a verificação:
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. ^_^
Este post lhe ajudou/foi útil? Retribua(+)
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini

#7 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 02/08/2010, 15:27

Cuidado com SQL Injection, pessoal. E não precisa fazer dois while.

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.

#8 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 02/08/2010, 15:34

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

:ponder:
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#9 gremio10

gremio10

    Turista

  • Usuários
  • 27 posts
  • Sexo:Masculino

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

:ponder:


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)

IPB Skin By Virteq