I have a form with 6 fields for filtering an array list in PHP.
On form submit I want the filter to be applied on the list and only show entries that matches the input of the 6 fields.
I use filter_array(), but need some code to apply all filters.
Can anyone help me?
I managed to apply the first field using an If-statement, but as soon as I apply the second field, the list now includes entries that doesn't fullfill the first filter.
My array looks like this
$o[] = array ('Sagsnummer' =>31400, 'Prod.ordrenummer' => 0101, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "RALF", 'Montageleder' => "JALU");
$o[] = array ('Sagsnummer' =>31400, 'Prod.ordrenummer' => 0102, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "RALF", 'Montageleder' => "JALU");
$o[] = array ('Sagsnummer' =>31400, 'Prod.ordrenummer' => 0103, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "RALF", 'Montageleder' => "JALU");
$o[] = array ('Sagsnummer' =>35683, 'Prod.ordrenummer' => 0101, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "EHA", 'Montageleder' => "DEKA");
$o[] = array ('Sagsnummer' =>35683, 'Prod.ordrenummer' => 0102, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "EHA", 'Montageleder' => "DEKA");
$o[] = array ('Sagsnummer' =>35683, 'Prod.ordrenummer' => 0103, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "EHA", 'Montageleder' => "DEKA");
$o[] = array ('Sagsnummer' =>36180, 'Prod.ordrenummer' => 0101, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "EHA", 'Montageleder' => "JALU");
$o[] = array ('Sagsnummer' =>36193, 'Prod.ordrenummer' => 0101, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "MKJE", 'Montageleder' => "HJHS");
$o[] = array ('Sagsnummer' =>31400, 'Prod.ordrenummer' => 0104, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "RALF", 'Montageleder' => "JALU");
$o[] = array ('Sagsnummer' =>31400, 'Prod.ordrenummer' => 0105, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "RALF", 'Montageleder' => "JALU");
$o[] = array ('Sagsnummer' =>31400, 'Prod.ordrenummer' => 0106, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "RALF", 'Montageleder' => "JALU");
$o[] = array ('Sagsnummer' =>36193, 'Prod.ordrenummer' => 0102, 'Status' => "Ordre", 'Fase' => "Produktion", 'Projektleder' => "MKJE", 'Montageleder' => "HJHS");
The filter fields is named
$fsagsnr;
$forside;
$status;
$fase;
$fprojektleder;
$fmontageleder;
I call filter_array() with
$new_array = array_filter($o, array(new Filter($fsagsnr, $forside, $status, $fase, $fprojektleder), 'filter'));
And my Filter class looks like this
class Filter {
private $sagsnr;
private $forside;
private $status;
private $fase;
private $projektleder;
function __construct($sn,$fo,$st,$fa,$pl) {
$this->sagsnr = $sn;
$this->forside = $fo;
$this->status = $st;
$this->fase = $fa;
$this->projektleder = $pl;
}
function filter($i) {
$result = false;
if($this->sagsnr != "" && ($i["Sagsnummer"] == $this->sagsnr)) $result = true;
elseif($this->forside != "" && ($i["Prod.ordrenummer"] == $this->forside)) $result = true;
return $result;
}
}
Aucun commentaire:
Enregistrer un commentaire