Filters with PHP - Search Form

4

How could I make a filter like that of the example image?

The part of the tables with the data and SELECT to look for is quiet. What I'm suffering from is how to assemble PHP code for this, maybe someone has a way for me to learn how to do those filters.

I'm learning this language yet, I've already looked into this subject but found nothing very enlightening, especially something that helps in the first steps.

ESTRUTURADOBANCO:TABELAATIVIDADES-COD_ATIVIDADE-CODOPERADOR_ATIVIDADE-NOME_ATIVIDADE-DATAINICIO_ATIVIDADE-DATAFIM_ATIVIDADE-STATUS_ATIVIDADETABELAOPERADORES-COD_OPERADOR-NOME_OPERADOR**EXEMPLODECÓDIGODERESULTADO:**<?phpsession_start();$Act=$_GET['act'];if(isset($Act)){if($Act=="filtraratv"){
$status = trim($_POST['STATUS_ATIVIDADE']);   
$operador = trim($_POST['CODOPERADOR_ATIVIDADE']);
$dataini = $_POST['DATAINICIO_ATIVIDADE'];
$datafim = ($_POST['DATAFIM_ATIVIDADE']);


if(file_exists("../../config.php")) {
    require "../../config.php";     
} else {
    echo "Arquivo config.php nao foi encontrado";
    exit;
}

if(!function_exists("Abre_Conexao")) {
    echo "Erro o arquivo config.php foi auterado, nao existe a função Abre_Conexao";
    exit;
}
Abre_Conexao();
$busca = mysql_query("select * from atividades WHERE status_atividade ='$status'");
$row = mysql_num_rows($busca);
    if ($row==0) {
        echo "Não há dados";
    } 
    else {
        wwhile($l = mysql_fetch_array($busca)) {
            $status   = $l["STATUS_ATIVIDADE"];
            echo "<option value=\"$status\">STATUS: $status</option>\n";
        }
    }


}
}

?>

NOTE: RETURN CODE: When you execute with some condition (Filter) that does not satisfy the search, it is displaying the message that says: "No results found with these criteria", but when you execute a search that there is a result, only a blank page ...

    
asked by anonymous 12.09.2015 / 23:53

3 answers

1

I managed this way:

<?php
error_reporting(0);
ini_set(“display_errors”, 0 );

$status = isset($_POST['status_atividade']) ? $_POST['status_atividade'] : '';
$operador = isset($_POST['codoperador_atividade']) ? $_POST['codoperador_atividade'] : '';
$dataini1 = isset($_POST['datainicio1_atividade']) ? $_POST['datainicio1_atividade'] : '';
$dataini2 = isset($_POST['datainicio2_atividade']) ? $_POST['datainicio2_atividade'] : '';
$datafim1 = isset($_POST['datafim1_atividade']) ? $_POST['datafim1_atividade'] : '';
$datafim2 = isset($_POST['datafim2_atividade']) ? $_POST['datafim2_atividade'] : '';

if(file_exists("../config.php")) {
    require "../config.php";        
} else {
    echo "Arquivo config.php nao foi encontrado";
    exit;
}

if(!function_exists("Abre_Conexao")) {
    echo "Erro o arquivo config.php foi auterado, nao existe a função Abre_Conexao";
    exit;
}
Abre_Conexao();
    $getatividades = 
    "SELECT * FROM atividades INNER JOIN operadores on cod_operador = codoperador_atividade WHERE cod_atividade > 0 ";

    if (strcmp(trim($status), "") != 0) { 
        $getatividades .= "AND status_atividade = '$status' ";
    }

    if (strcmp(trim($operador), "") != 0) { 
        $getatividades .= "AND codoperador_atividade = '$operador' ";
    }

    //Data Inicial Entre
    if ((strcmp(trim($dataini1), "") != 0) && (strcmp(trim($dataini2), "") != 0)) { 
        $getatividades .= "AND datainicio_atividade between '$dataini1' and '$dataini2' ";
    }
    else if (strcmp(trim($dataini1), "") != 0) { 
        $getatividades .= "AND datainicio_atividade >= '$dataini1' ";
    }
    else if (strcmp(trim($dataini2), "") != 0) { 
        $getatividades .= "AND datainicio_atividade <= '$dataini2' ";
    }

    //Data Fim Entre
    if ((strcmp(trim($datafim1), "") != 0) && (strcmp(trim($datafim2), "") != 0)) { 
        $getatividades .= "AND datafim_atividade between '$datafim1' and '$datafim2' ";
    }
    else if (strcmp(trim($datafim1), "") != 0) { 
        $getatividades .= "AND datafim_atividade >= '$datafim1' ";
    }
    else if (strcmp(trim($datafim2), "") != 0) { 
        $getatividades .= "AND datafim_atividade <= '$datafim2' ";
    }

    //Aqui
    $getatividadesquery = mysql_query($getatividades) or die(mysql_error());
    if (!$getatividadesquery) {
        echo "Não foi possível executar a consulta ($getatividadesquery) no banco de dados: " . mysql_error();
        exit;
    }

    if (mysql_num_rows($getatividadesquery) == 0) {
        echo "Não foram encontradas linhas, nada para mostrar, assim eu estou saindo";
        exit;
    }


    while($linha = mysql_fetch_assoc($getatividadesquery)) {
        echo '<tr>';
        echo '<td>'. $linha['STATUS_ATIVIDADE'] .'</td>';
        echo '<td>'. $linha['NOME_ATIVIDADE'] .'</td>';
        echo '<td>'. $linha['NOME_OPERADOR'] .'</td>';
        echo '<td>'. $linha['DATAINICIO_ATIVIDADE'] .'</td>';
        echo '<td>'. $linha['DATAFIM_ATIVIDADE'] .'</td>';
        echo '</tr>';
    }



?>

It worked !!

    
16.09.2015 / 15:35
4

According to the database mentioned above, I believe that this is what you would like to do, depending on whether you are selecting or populating the data, you are mounting SQL to execute.

// STATUS
if(isset($_POST['STATUS_ATIVIDADE'])) $STATUS_ATIVIDADE = "AND STATUS_ATIVIDADE = '".$_POST['STATUS_ATIVIDADE']."'"; else $STATUS_ATIVIDADE = "";

// OPERADOR
if(isset($_POST['COD_OPERADOR'])) $COD_OPERADOR = "AND CODOPERADOR_ATIVIDADE = '".$_POST['CODOPERADOR_ATIVIDADE']."'"; else $COD_OPERADOR = "";

// DATA_INICIO
if(isset($_POST['DATA_INICIOATIVIDADE'])) $DATA_INICIOATIVIDADE = "AND DATA_INICIOATIVIDADE = '".$_POST['DATA_INICIOATIVIDADE']."'"; else $DATA_INICIOATIVIDADE = "";

// DATA_FIM
if(isset($_POST['DATA_FIMATIVIDADE'])) $DATA_FIMATIVIDADE = "AND DATA_FIMATIVIDADE = '".$_POST['DATA_FIMATIVIDADE']."'"; else $DATA_FIMATIVIDADE = "";

// CONSULTA

$SQL = mysql_query("
    SELECT 
        *
    FROM
        ATIVIDADES AS C1
    WHERE 
        C1.COD_ATIVIDADE != '' 
        {$STATUS_ATIVIDADE} 
        {$COD_OPERADOR} 
        {$DATA_INICIOATIVIDADE} 
        {$DATA_FIMATIVIDADE}
") or print mysql_error();

while($row=mysql_fetch_array($sql)){
    echo "Atividade: ".$row['NOME_ATIVIDADE']."<br>";   
}

Try to work out this way.

    
14.09.2015 / 14:09
2

As I understand it, you want to show the data you want.

Let's go to one possible answer:

$busca=mysql_query("select * from Atividades");
$row = mysql_num_rows($query);

if ($row==0) {
    echo "Não há dados";
} else {
    while ($dados = mysql_fect_array($query) {
        echo "Nome: ". $dados['nomeDocampoNaTabelaAtividades'];
    }
}

You want to filter the data, for example: sort by id, name, etc. This would then be pagination.

Or do you just want to return all the data in an array and display its mode? For example, display by list, table, etc.

Actually, I still do not understand.

    
14.09.2015 / 13:38