Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Problema com IF dentro FOREACH


Ricardo T. do Prado

Question

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;

Edited by Ricardo T. do Prado
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 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
      652k
×
×
  • Create New...