0

I'm working on a advanced search function:

$colname_SokvansterImp = "-1"; 

mysql_select_db($database_Audiologiska, $Audiologiska);
if (isset($_POST['Personnummer_search'])) 
{   
    //Visa bara det som söks
     $searchword = $_POST['Personnummer_search'];
    $query_SokvansterImp = "SELECT * FROM patient left join person on person.Personnummer = patient.Patient left join vanster_implantat on vanster_implantat.Patv = patient.Patient WHERE vanster_implantat.patv LIKE '%".$searchword."%'";

}
else//Visa all data
{

    $query_SokvansterImp = "select * from patient left join person on person.Personnummer = patient.Patient left join vanster_implantat on vanster_implantat.patv = patient.Patient";

}
$SokvansterImp = mysql_query($query_SokvansterImp, $Audiologiska) or die(mysql_error());
$row_SokvansterImp = mysql_fetch_assoc($SokvansterImp);
$totalRows_SokvansterImp = mysql_num_rows($SokvansterImp);

This is working for searching with one parameters, however, I'm wondering how to make it accepts multiple parameters? "Personnummer_search" is the name of my field. How can I make so it can search for example Name and/or Surname? I'm using Dreamweaver

2
  • Dreamweaver has nothing to do with the question. Commented Aug 3, 2014 at 19:34
  • I'm using Dreamweaver to this. I can update my question. Commented Aug 3, 2014 at 19:46

3 Answers 3

1

Add a new conditional block ?

if (isset($_POST['Personnummer_search'])) 
{   
    //Visa bara det som söks
     $searchword = mysqli_real_escape_string($_POST['Personnummer_search']);
    $query_SokvansterImp = "SELECT * FROM patient left join person on person.Personnummer = patient.Patient left join vanster_implantat on vanster_implantat.Patv = patient.Patient WHERE vanster_implantat.patv LIKE '%".$searchword."%'";

}
else if(isset($_POST['Name_search']) && isset($_POST['Surname_search']))
{
    $name = mysqli_real_escape_string($_POST['Name_search']);
    $surname = mysqli_real_escape_string(($_POST['Surname_search']);
    $query_SokvansterImp = "YOUR SQL QUERY...";

}
else//Visa all data
{
    $query_SokvansterImp = "select * from patient left join person on person.Personnummer = patient.Patient left join vanster_implantat on vanster_implantat.patv = patient.Patient";
}
Sign up to request clarification or add additional context in comments.

4 Comments

Well, then just use $mysqli->real_escape_string()... I don't think the question was about this...
I guess I am a little biased.
No, you're right... just didn't took this into account. I'm editing the answer :)
I'm sorry if I was unclear in my question but your solution would not work because I want it to be able to search for one or multiple parameters and your "If, else if statement" will only run one of the queries but not both
0

Check out the PHP Site, There is a function called "func_get_args"

http://php.net/manual/en/function.func-get-args.php

Comments

0

Ok, to search for all possible filters, you can do:

$where = array();

if (isset($_POST['Personnummer_search'])) 
{   
    $searchword = mysqli_real_escape_string($_POST['Personnummer_search']);
    $where[] =  "vanster_implantat.patv LIKE '%".$searchword."%'";
}

if(isset($_POST['Name_search']))
{
    $name = mysqli_real_escape_string($_POST['Name_search']);
    $where[] =  "nameField LIKE '%".$name."%'";

}

if(isset($_POST['Surname_search']))
{
    $surname = mysqli_real_escape_string($_POST['Name_search']);
    $where[] =  "surnameField LIKE '%".$surname."%'";

}

if(count($where))
{
   $query_SokvansterImp = "SELECT * FROM patient left join person on person.Personnummer = patient.Patient
    left join vanster_implantat on vanster_implantat.Patv = patient.Patient
     WHERE ".implode(" AND ",$where);
}
else//Visa all data
{
    $query_SokvansterImp = "select * from patient left join person on person.Personnummer = patient.Patient left join vanster_implantat on vanster_implantat.patv = patient.Patient";
}

1 Comment

It didn't return any result

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.