Re: A function for building a where clause.
От | Gyozo Papp |
---|---|
Тема | Re: A function for building a where clause. |
Дата | |
Msg-id | 021d01c119b4$2d0fc360$7e48c5d5@jaguar обсуждение исходный текст |
Ответ на | A function for building a where clause. ("Ari Nepon" <anepon@verveinternet.com>) |
Список | pgsql-php |
Hello, the best I can suggest to you is to gather your search conditions into an array and use some magic array function such asjoin. Look what I'm talking about: if(!empty($f_you)) $sort[] = "tbl_all.employee_ID = \"$f_you\""; if(!empty($f_clients)) $sort[] = "tbl_all.client_ID = \"$f_clients\""; if(!empty($f_project)) $sort[] = "tbl_all.project_ID = \"$f_project\""; if(!empty($f_task)) $sort[] = "tbl_all.task_ID = \"$f_task\"; if(!empty($f_description)) $sort[] = "tbl_all.description LIKE '$f_description'"; if(!empty($f_hours)) $sort[] = "bl_all.hours = \"$f_hours\""; if(!empty($f_date)) $sort[] = "tbl_all.date LIKE \"$f_project\""; $finalsort = join(' AND ', $sort); echo "final sort:$finalsort"; return $finalsort; If you have to use such functions in a lot of place over in your site, you may arrange a co-called controll-array which tellsyour function what to do with what variables. This array holds information about what variable is bound to what columnof the table example (this is only a scratch not tested and not full-featured :) <?php $search = array( array ('var' => 'f_you', 'col' => 'employee_ID', 'rel' =>'='), /* ... other variable-column pairs for $f_clients, $f_project, $f_task ... */ array ('var' => 'f_description', 'col' => 'description', 'rel' =>' LIKE ')); array ('var' => 'f_hours', 'col' => 'hours', 'rel' => '='), /* $ctl is the control array, * $scope is the array which contains the values to be substituted * with unique keys such as variable names. ie.: $GLOBALS */ function make_where(&$ctl, &$scope) { foreach ($ctl => $row) { $value = $scope[$row['var']]; $conditions[] = $row['col'].' '.$row['rel'].' '.$value; } return 'WHERE '.join(' AND ', $conditions); } ?>
В списке pgsql-php по дате отправления: