(if / else if) with check box

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 it checks if only one of the boxes has been selected, and with good reason, because in my IFs I only search 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 error is to check if Test and Lose are contained in $ _POST, but how to check if Test only or only Léo are contained?

I hope I have been as clear as I can.

    
asked by anonymous 17.12.2015 / 02:48

2 answers

3

Perhaps it would be a case of simplifying 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 check:

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

17.12.2015 / 03:23
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

    
17.12.2015 / 02:59