I have a form passing on two values by two input fields with data coming from 16 fields preloaded from a database table. The purpose of this form is to pass on the db fields and data to a php script which will make a sql query depending on these input fields and values and will print the filtered table entries using the given filters
My database table structure is like this:
field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16
I am currently using this:
<?php
$searchfield1='';
$searchfield2='';
$searchquery1='';
$searchquery2='';
//setting value of variable $searchquery1 depending on the incoming value
if ($_POST=['field1Name1']) {$searchfield1='field1'; $searchquery1='field1Data';}
else if ($_POST=['field2Name1']) {$searchfield1='field2'; $searchquery1='field2Data';}
else if ($_POST=['field3Name1']) {$searchfield1='field3'; $searchquery1='field3Data';}
else if ($_POST=['field4Name1']) {$searchfield1='field4'; $searchquery1='field4Data';}
else if ($_POST=['field5Name1']) {$searchfield1='field5'; $searchquery1='field5Data';}
else if ($_POST=['field6Name1']) {$searchfield1='field6'; $searchquery1='field6Data';}
else if ($_POST=['field7Name1']) {$searchfield1='field7'; $searchquery1='field7Data';}
else if ($_POST=['field8Name1']) {$searchfield1='field8'; $searchquery1='field8Data';}
else if ($_POST=['field9Name1']) {$searchfield1='field9'; $searchquery1='field9Data';}
else if ($_POST=['field10Name1']) {$searchfield1='field10'; $searchquery1='field10Data';}
else if ($_POST=['field11Name1']) {$searchfield1='field11'; $searchquery1='field11Data';}
else if ($_POST=['field12Name1']) {$searchfield1='field12'; $searchquery1='field12Data';}
else if ($_POST=['field13Name1']) {$searchfield1='field13'; $searchquery1='field13Data';}
else if ($_POST=['field14Name1']) {$searchfield1='field14'; $searchquery1='field14Data';}
else if ($_POST=['field15Name1']) {$searchfield1='field15'; $searchquery1='field15Data';}
else if ($_POST=['field16Name1']) {$searchfield1='field16'; $searchquery1='field16Data';}
//setting value of variable $searchquery2 depending on the incoming value
if ($_POST=['field1Name2']) {$searchfield2='field1'; $searchquery2='field1Data';}
else if ($_POST=['field2Name2']) {$serachfield2='field2'; $searchquery1='field2Data';}
else if ($_POST=['field3Name2']) {$serachfield2='field3'; $searchquery1='field3Data';}
else if ($_POST=['field4Name2']) {$serachfield2='field4'; $searchquery1='field4Data';}
else if ($_POST=['field5Name2']) {$serachfield2='field5'; $searchquery1='field5Data';}
else if ($_POST=['field6Name2']) {$serachfield2='field6'; $searchquery1='field6Data';}
else if ($_POST=['field7Name2']) {$serachfield2='field7'; $searchquery1='field7Data';}
else if ($_POST=['field8Name2']) {$serachfield2='field8'; $searchquery1='field8Data';}
else if ($_POST=['field9Name2']) {$serachfield2='field9'; $searchquery1='field9Data';}
else if ($_POST=['field10Name2']) {$serachfield2='field10'; $searchquery1='field10Data';}
else if ($_POST=['field11Name2']) {$serachfield2='field11'; $searchquery1='field11Data';}
else if ($_POST=['field12Name2']) {$serachfield2='field12'; $searchquery1='field12Data';}
else if ($_POST=['field13Name2']) {$serachfield2='field13'; $searchquery1='field13Data';}
else if ($_POST=['field14Name2']) {$serachfield2='field14'; $searchquery1='field14Data';}
else if ($_POST=['field15Name2']) {$serachfield2='field15'; $searchquery1='field15Data';}
else if ($_POST=['field16Name2']) {$serachfield2='field16'; $searchquery1='field16Data';}
include 'dbase.php';
$data = "SELECT * FROM SOMETABLE WHERE $searchfield1='$searchquery1' AND $serachfield2='$searchquery2' ORDER BY ID DESC";
$result = $conn->query($data);
if ($result->num_rows > 0) {
// display data in table
echo 'table HTML code goes here'; ?>
Though, I am able to get the desired results by the above code, But i know there must be better way to achieve this, my question to the stack community is, that is there a better way of doing this?? so i can shorten this code or can make it more effective and precise. Actually i would like to use more filters in this script to sort the data but the code will get lengthier and lengthier as i will apply filters using the above format, i have used for defining the variables.
Let me clarify, that the field are not numbered like shown in code above, they are named as, some text fields, for example, customer, address, products, godowns, sales, despatch etc.
Use a for loop:
for ($i=1; $i<=16; $i++) {
if ($_POST=['field'.$i.'Name1']) {
$searchfield1='field'.$i;
$searchquery1='field'.$i.'Data';
}
if ($_POST=['field'.$i.'Name2']) {
$searchfield2='field'.$i;
$searchquery2='field'.$i.'Data';
}
}