www.webdeveloper.com
Results 1 to 4 of 4

Thread: Compining Search Criteria

  1. #1
    Join Date
    Sep 2013
    Posts
    2

    Compining Search Criteria

    Am Stranded and am requesting for help.
    I am developing a car sales system but am unable to compine search criteria e.g the model of the car and price range; body, category and pricerange; model, transmission, fueltype and condition e.t.c
    Someone Kindly help me.
    The code below is able to search each individual feature on its own.


    <?php
    require("DbConnection.php");
    $tbl="vehicle";
    mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL");
    mysql_select_db($db_name);
    $body=$_POST['Body_Type'];
    $category = $_POST['Category'];
    $Model=$_POST['Model'];
    $price=$_POST['price'];
    $Transmission=$_POST['Transmission'];
    $Fuel=$_POST['Fuel_Type'];
    $Colour=$_POST['Colour'];
    $Condition=$_POST['Condition'];
    //default form values
    $body_default="-select-";
    $category_default ="-select-";
    $Model_default="-select-";
    $price_default="-select-";
    $Transmission_default="-select-";
    $Fuel_default="-select-";
    $Colour_default="-select-";
    $Condition_default="-select-";

    $default_values = array($body_default, $category_default, $Model_default, $price_default, $Transmission_default, $Fuel_default, $Colour_default,$Condition_default );

    $search = array($body, $category, $Model,$price, $Transmission, $Fuel, $Colour, $Condition);


    foreach( $default_values as $default)
    {
    foreach ($search as $value)
    {

    $sql="SELECT * FROM $tbl where body='".$search[0]."' || category = '".$search[1]."' || model = '".$search[2]."' || pricerange = '".$search[3]."'
    || transmission = '".$search[4]."' || fueltype = '".$search[5]."' || color = '".$search[6]."' || carcondition = '".$search[7]."' && status='Available' ";
    }

    }

    $result = mysql_query($sql);

    $count=mysql_num_rows($result);


    ?>

  2. #2
    Join Date
    Jul 2013
    Location
    Voorheesville NY USA
    Posts
    558
    You are misunderstanding how the foreach works.

    When you build a foreach loop, only ONE element of the array is available in each loop iteration. YOu are trying to use multiple $search[] elements all at once in each pass of your two loops.

    Since you never use $value or $search in your query, just what exactly are you doing with the foreach statements?

    I think what you want to do is build your Where clause by looping thru the known POST fields and building the Where list in a string variable.

    Code:
    $where_vals = array();
    foreach ($_POST as $k=>$v)
    {
       switch ($k)
         case "Body_Type":
             $where_vals[] = "body = '$v';
             break;
         case "Category":
             $where_vals[] = "category = '$v';
             break;
    and so on for each item you want to be able to include in your search.

    Then:

    Code:
    $where_list = implode(" && ",$where_vals);
    Then in your query you would then have:
    Code:
    $q = "select * from $tbl where = $where_list";

  3. #3
    Join Date
    Sep 2013
    Posts
    221
    Here is the sample query for you. just give you an idea how to write your query.

    $query = "SELECT * FROM `wp_pelleresuser` WHERE `status`=1";
    if(isset($profile) && !empty($profile))
    {
    $length_profile = explode(',',$profile);
    for($i=0;$i<count($length_profile);$i++)
    {
    $query.= " AND FIND_IN_SET('".$length_profile[$i]."',profile_type)";
    }
    }
    if(isset($name) && !empty($name))
    {
    $query.= " AND `first_name` LIKE '".$name."'";
    }
    if(isset($city) && !empty($city))
    {
    $query.= " AND `city_trainer` LIKE '".$city."' OR `city_studio` LIKE '".$city."' OR `city_reseller` LIKE '".$city."'";
    }
    if(isset($state) && !empty($state))
    {
    $query.= " AND `state_trainer` LIKE '".$state."' OR `state_studio` LIKE '".$state."' OR `state_reseller` LIKE '".$state."'";
    }
    if(isset($postal) && !empty($postal))
    {
    $query.= " AND `postal_trainer` LIKE '".$postal."' OR `postal_studio` LIKE '".$postal."' OR `postal_reseller` LIKE '".$postal."'";
    }

    Hope it helps you.

  4. #4
    Join Date
    Sep 2013
    Posts
    2
    Much appreciation. Applying ur noble suggestions.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles