My search results are now printing out each and every entry whenever there is a matched field with my txt file; it's not printing out the filtered result. How can I change my if statements so that I can achieve the narrowing down function? Thank you!
here's my handle_search.php:
$delimiter = ' | '; if(isset($_POST['submit'])){ $seasonsr = $_POST["seasonsr"]; $numbersr = $_POST["numbersr"]; $titlesr = $_POST["titlesr"]; $directorsr = $_POST["directorsr"]; $datesr = $_POST["datesr"]; $file = fopen("park.txt", "r"); if (!$file) { die("There was a problem opening the park.txt file"); } $search = file("park.txt"); $isfound = false; foreach($search as $find){ $match = false; $explode = explode($delimiter, $find); if ($seasonsr == $explode [0] && $_POST['seasonsr'] != "") { print $explode [0]. " " . $explode[1]. " " . $explode[2]. " " . $explode[3]. " " . $explode[4]; print ("<br/>"); $isfound = true; $match = true; } if ($numbersr == $explode [1] && $_POST['numbersr'] != "" && !$match) { print $explode [0]. " " . $explode[1]. " " . $explode[2]. " " . $explode[3]. " " . $explode[4]; print ("<br/>"); $isfound = true; $match = true; } if ($titlesr == $explode [2] && $_POST['titlesr'] != "" && !$match) { print $explode [0]. " " . $explode[1]. " " . $explode[2]. " " . $explode[3]. " " . $explode[4]; print ("<br/>"); $isfound = true; $match = true; } if ($directorsr == $explode [3] && $_POST['directorsr'] != "" && !$match) { print $explode [0]. " " . $explode[1]. " " . $explode[2]. " " . $explode[3]. " " . $explode[4]; print ("<br/>"); $isfound = true; $match = true; } $itemdate= $explode[4]; //print("<p>search: $datesr item: $itemdate match: </p>"); if (trim($datesr) == trim($explode [4]) && $_POST['datesr'] != "" && !$match) { print $explode [0]. " " . $explode[1]. " " . $explode[2]. " " . $explode[3]. " " . $explode[4]; print ("<br/>"); $isfound = true; $match = true; } } if(!$isfound){ echo ("Sorry! No search found."); } } fclose($file); }
fgetcsv()functionality to more easily read each line into an array. That also makes it to where you don't have to read the whole file into memory like you are currently doing. Just work with one line at a time.