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

(Resolvido) Problema com IF dentro FOREACH


Ricardo T. do Prado

Pergunta

Por lógica, o loop tinha que me trazer 3 inputs do tipo TEXT e 1 do tipo PASSWORD, mas só retorna 1 input do tipo text, Alguma luz ae?

<?php
$fields = array(
                                "text"=>"nome",
                                "text"=>"login",
                                "password"=>"senha",
                                "text"=>"e-mail"
                            );

$input = array();

    foreach ($fields as $key=>$value) {
        
        if($key == "text") {    
                $input[] =  "<input type=text name=$value/> $value </br>";
        } 
        if($key == "password") {
            $input =   "<input type=password name=$value/> $value </br>";
        } 
        if($key == "textarea") {
            $input[] = "<textarea name=$value/> </textarea> </br>";
        } 
        if($key == "select") {        
            $var = explode(',',$value);
            conexao();    
            $wizard = "<select name=".$var[4]."> <option> ---selecione --- </option>";    
            $sql = mysql_query("select ".$var[1].", ".$var[2]." from ".$var[0]."") or die (mysql_error());
            while($row = mysql_fetch_row($sql)) {
                $wizard.="<option value=".$row[0].">  ".$row[1]." </option>";
            }    
            $wizard.=" </select>";
            $input[] = $wizard;
        }
    }
    
    foreach($input as $saida) {
        echo $saida;
    }

?>

Abs;

Editado por Ricardo T. do Prado
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Tente assim:

if($key == "text") {    
                $input[] = "<input type='text' name='".$value."' /> '".$value."' </br>";
        }
        if($key == "password") {
            $input[] = "<input type='password' name='".$value."' /> '".$value."' </br>";
        }
        if($key == "textarea") {
            $input[] = "<textarea name='".$value."' /> </textarea> </br>";
        }

Só o '[]' do campo 'password' tá faltando.

Pode ser que o vetor tinha todos os elementos, mas o HTML tava com alguma tag conflitando... Pessoalmente, sempre dos os 'escapes' quando uso variáveis em strings. Recomendo o mesmo.

E na dúvida, dá um 'print_r($input);'.

Link para o comentário
Compartilhar em outros sites

  • 0

grato pela observação, mas já tinha visto isso e não é isso, mesmo q faltasse ´[]' os 3 inputs tinham que aparecer,

me parece que se ele encontrar no primeiro loop == "text" ele dá um break, tava lendo isso, mas não sei como resolver. até tentei

if($key == "password") {
            $input[] = "<input type='password' name='".$value."' /> '".$value."' </br>";
        } continue;

mas não virou;

=(

Link para o comentário
Compartilhar em outros sites

  • 0

Só me toquei agora disso

$fields = array(
                                "text"=>"nome",
                                "text"=>"login",
                                "password"=>"senha",
                                "text"=>"e-mail"
                            );

Você possui três elementos com o mesmo índice ("text"), ou seja, "nome" é sobrescrito por "login", que é sobrescrito por "e-mail". No final, $fields só possui dois elementos: $fields['password'] que tem o valor "senha", e $fields['text'] que tem o valor "e-mail".

Simplesmente mude o nome dos índices.

Link para o comentário
Compartilhar em outros sites

  • 0

como resolver isso? to sem idéia de vez mano.

Resolvi, só inverti CHAVE/VALOR, segue solução

<?php
$fields = array(
                                "nome"=>"text",
                                "login"=>"text",
                                "senha"=>"password",
                                "email"=>"text"
                            );

$input = array();

    foreach ($fields as $key=>$value) {
        
        if($value == "text") {    
            $input[] =  "<input type=text name=$key/> $key </br>";
         } 
         if($value == "password")  {
            $input[] =   "<input type=password name=$key/> $key </br>";
        }  
        if($value == "textarea") {
             $input[] = "<textarea name=$key/> </textarea> </br>";
        }  
        if($value == "select") {        
             $var = explode(',',$key);
            conexao();    
            $wizard = "<select name=".$var[4]."> <option> ---selecione --- </option>";    
            $sql = mysql_query("select ".$var[1].", ".$var[2]." from ".$var[0]."") or die (mysql_error());
            while($row = mysql_fetch_row($sql)) {
                $wizard.="<option value=".$row[0].">  ".$row[1]." </option>";
            }    
            $wizard.=" </select>";
            $input[] = $wizard;
        } 
    }
    
    foreach($input as $saida) {
        echo $saida;
    }
print_r($input);
?>

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,1k
    • Posts
      651,9k
×
×
  • Criar Novo...