(if/if) with check box

Asked

Viewed 148 times

0

I have the following problem: I have a decision structure that checks the check box.

However, when I select the two boxes, the code still executes the commands that checks if only one of the boxes was selected, and rightly so, because in my Ifs I only look if the word is contained. With the code it becomes clearer to understand:

if(empty($array_membro)){
    echo("Você não selecionou nenhum membro.");
}else{
    if(in_array("Teste",$_POST["membroarray"]) && in_array("Léo",$_POST["membroarray"])){
        echo "<form action='especifica_procura_dissertacao_publicacao_ordenada.php' method='POST'>
        Ordenar por:<br/><br/>
        <input type='checkbox' name='ordenarpor[]' value='decrescente' /> Mais antigos
        <input type='checkbox' name='ordenarpor[]' value='crescente' /> Mais recentes
        <input type='submit' value='Pesquisar' />
        </form>";
        $result = pg_query('SELECT dissertacoes.titulo, dissertacoes.id, data, autor_nome, orientador, arquivo, autor_sobrenome, subtitulo, quant_folhas, area, local, instituicao, localizacao FROM dissertacoes, membros WHERE (membros.id = 1 OR membros.id = 2)');
        for ($i = 0; $i < pg_num_rows($result); $i ++){
            include("chama_dissertacoes.php");
        }
    }if(in_array("Teste",$_POST["membroarray"])){
        echo "<form action='especifica_procura_dissertacao_publicacao_ordenada.php' method='POST'>
        Ordenar por:<br/><br/>
        <input type='checkbox' name='ordenarpor[]' value='decrescente' /> Mais antigos
        <input type='checkbox' name='ordenarpor[]' value='crescente' /> Mais recentes
        <input type='submit' value='Pesquisar' />
        </form>";
        $result = pg_query('SELECT dissertacoes.titulo, dissertacoes.id, data, autor_nome, orientador, arquivo, autor_sobrenome, subtitulo, quant_folhas, area, local, instituicao, localizacao FROM dissertacoes, membros WHERE membros.id = "idmembro" AND membros.id = 2');
        for ($i = 0; $i < pg_num_rows($result); $i ++){
            include("chama_dissertacoes.php");
        }
    }if(in_array("Léo",$_POST["membroarray"])){
        echo "<form action='especifica_procura_dissertacao_publicacao_ordenada.php' method='POST'>
        Ordenar por:<br/><br/>
        <input type='checkbox' name='ordenarpor[]' value='decrescente' /> Mais antigos
        <input type='checkbox' name='ordenarpor[]' value='crescente' /> Mais recentes
        <input type='submit' value='Pesquisar' />
        </form>";
        $result = pg_query('SELECT dissertacoes.titulo, dissertacoes.id, data, autor_nome, orientador, arquivo, autor_sobrenome, subtitulo, quant_folhas, area, local, instituicao, localizacao FROM dissertacoes, membros WHERE membros.id = "idmembro" AND membros.id = 1');
        for ($i = 0; $i < pg_num_rows($result); $i ++){
            include("chama_dissertacoes.php");
        }
    }
}

That is, I understand that my mistake is to check if Teste and Léo are contained in $_POST, but how to check if only Teste or Léo are contained?

I hope I’ve been as clear as possible.

2 answers

3


Perhaps it was the case to simplify using elseif in all conditions:

if(empty($array_membro)){
   echo("Você não selecionou nenhum membro.");
} elseif (in_array("Teste",$_POST["membroarray"]) && in_array("Léo",$_POST["membroarray"])){
   echo "<form action='especifica_procura_dissertacao_publicacao_ordenada.php' method='POST'>
   Ordenar por:<br/><br/>
   <input type='checkbox' name='ordenarpor[]' value='decrescente' /> Mais antigos
   <input type='checkbox' name='ordenarpor[]' value='crescente' /> Mais recentes
   <input type='submit' value='Pesquisar' />
   </form>";
   $result = pg_query('SELECT dissertacoes.titulo, dissertacoes.id, data, autor_nome, orientador, arquivo, autor_sobrenome, subtitulo, quant_folhas, area, local, instituicao, localizacao FROM dissertacoes, membros WHERE (membros.id = 1 OR membros.id = 2)');
   for ($i = 0; $i < pg_num_rows($result); $i ++){
      include("chama_dissertacoes.php");
   }
} elseif (in_array("Teste",$_POST["membroarray"])){
   echo "<form action='especifica_procura_dissertacao_publicacao_ordenada.php' method='POST'>
   Ordenar por:<br/><br/>
   <input type='checkbox' name='ordenarpor[]' value='decrescente' /> Mais antigos
   <input type='checkbox' name='ordenarpor[]' value='crescente' /> Mais recentes
   <input type='submit' value='Pesquisar' />
   </form>";
   $result = pg_query('SELECT dissertacoes.titulo, dissertacoes.id, data, autor_nome, orientador, arquivo, autor_sobrenome, subtitulo, quant_folhas, area, local, instituicao, localizacao FROM dissertacoes, membros WHERE membros.id = "idmembro" AND membros.id = 2');
   for ($i = 0; $i < pg_num_rows($result); $i ++){
      include("chama_dissertacoes.php");
   }
} elseif (in_array("Léo",$_POST["membroarray"])){
   echo "<form action='especifica_procura_dissertacao_publicacao_ordenada.php' method='POST'>
   Ordenar por:<br/><br/>
   <input type='checkbox' name='ordenarpor[]' value='decrescente' /> Mais antigos
   <input type='checkbox' name='ordenarpor[]' value='crescente' /> Mais recentes
   <input type='submit' value='Pesquisar' />
   </form>";
   $result = pg_query('SELECT dissertacoes.titulo, dissertacoes.id, data, autor_nome, orientador, arquivo, autor_sobrenome, subtitulo, quant_folhas, area, local, instituicao, localizacao FROM dissertacoes, membros WHERE membros.id = "idmembro" AND membros.id = 1');
   for ($i = 0; $i < pg_num_rows($result); $i ++){
      include("chama_dissertacoes.php");
   }
}

In this way, only the first block that meets the conditions will be executed, excluding the others.

Other points to review:

  • membros.id = "idmembro" AND membros.id = 2 will never be true, and will not bring results

  • the block contained in elseifs can be put only once in the code, and the changing parts exchanged by $variaveis.

2

if(in_array("Teste",$_POST["membroarray"]) &&    in_array("Léo",$_POST["membroarray"])){

}
elseif(in_array("Teste",$_POST["membroarray"]) xor     in_array("Léo",$_POST["membroarray"])){

    if(in_array("Teste",$_POST["membroarray"])){

    }

    elseif(in_array("Léo",$_POST["membroarray"])){

    }
}

Reference

Browser other questions tagged

You are not signed in. Login or sign up in order to post.