Re: A function for building a where clause. - Mailing list pgsql-php

From Timothy_Maguire@hartehanks.com
Subject Re: A function for building a where clause.
Date
Msg-id OFDC68B869.791D9EB6-ON85256A8E.005D28F9@hartehanks.com
Whole thread Raw
In response to A function for building a where clause.  ("Ari Nepon" <anepon@verveinternet.com>)
List pgsql-php
I would not include the WHERE and AND statements in your snippet here.
Take all the "table.field = '$some_var'" and push them into an array and
then create the query on the fly and plug the WHERE and AND as you go.

for example,
$query_array = array();
if (!empty($f_you))
{
     array_push($query_array, "tbl_all.employee_id = '$f_you'");
}
if (!empty($next_var))
{
     array_push($query_array, "tbl_all.somefield = '$some_var'");
}
...and so on.....

then take that array and plug the WHERE and AND in.

$query = "SELECT * FROM tbl_all WHERE ";
for($i=0;$i<sizeof($query_array);$i++)
{
     $query .= $query_array[$i];
     if($i < sizeof($query_array) - 1)
     {
          // this will plug the AND into the $query inbetween all the array
elements except for the last one
          $query .= " AND ";
     }
}

There could be a better way to do this.  I would be interested in any other
solutions.

Tim.

Timothy P. Maguire
Web Developer II
Harte-Hanks
978 436 3325




                    "Ari Nepon"
                    <anepon@verveinterne       To:     <pgsql-php@postgresql.org>
                    t.com>                     cc:
                    Sent by:                   Subject:     A function for building a where clause.
                    pgsql-php-owner@post
                    gresql.org


                    07/19/01 12:46 PM
                    Please respond to
                    anepon






Does anyone know of a function that I could use to take form data and build
a where clause for my SQL query based on their choices (which can be from
text fields, memo fields, dropdowns of numbers or letters, and radio
buttons
or check boxes).

Here is something I wrote, but i know is not correct, and would fail unless
the first choice is chosen. But it gives an idea of what I am trying to do.

function searchparams()
{
global $f_you;
global $f_clients;
global $f_project;
global $f_task;
global $f_description;
global $f_hours;
global $f_date;

     if(!empty($f_you))
     $sort1="WHERE tbl_all.employee_ID = \"$f_you\"";
     if(!empty($f_clients))
     $sort2="AND tbl_all.client_ID = \"$f_clients\"";
     if(!empty($f_project))
     $sort3="AND tbl_all.project_ID = \"$f_project\"";
     if(!empty($f_task))
     $sort4="AND tbl_all.task_ID = \"$f_task\";
     if(!empty($f_description))
     $sort5="AND tbl_all.description LIKE '$f_description'";
     if(!empty($f_hours))
     $sort6="AND  bl_all.hours = \"$f_hours\"";
     if(!empty($f_date))
     $sort7="AND tbl_all.date LIKE \"$f_project\"";
     $finalsort="$sort1  $sort2  $sort3  $sort4  $sort5  $sort6  $sort7";
     echo "final sort:$finalort $f_project";
     return $finalsort;

}

Problem with this function is that I am getting a where clause that has AND
sometable.somecolumn="" and its screwing up my query.

Thanks,

Ari


~~~~~~~~~~~~~~~~~~~~~~~~~
Ari Nepon
MRB Communications
4520 Wilde Street, Ste. 2
Philadelphia, PA 19127
p: 215.508.4920
f: 215.508.4590
http://www.mrbcomm.com

-----------------------------------------------------------------------
Sign up for our email list and receive free information about
topics of interest to nonprofit communications, marketing, and
community building professionals. Free resources, articles, tips.
Go to http://www.mrbcomm.com and use the Mailing List form.
-----------------------------------------------------------------------


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly




pgsql-php by date:

Previous
From: "Ari Nepon"
Date:
Subject: A function for building a where clause.
Next
From: Andrew McMillan
Date:
Subject: Re: A function for building a where clause.