RAILS question, sql statements

hey, i want to created an sql statement with rails for a search engine

this is the code, u can search on first name and last name

firm_id = @session[:user].id
  #last_name = params[:employee][:last_name]
  #first_name = params[:employee][:first_name]
  last_name = "Creytens"
  first_name = "b"
  @employee_pages, @employees = paginate (:employee, :conditions =>
["firm_id = ? and first_name like ? and last_name like ?" , firm_id,
first_name, last_name] , :order_by => "last_name ASC", :per_page => 10)

i have a few question:

-how can i make, that the user doesnt need to fill in the full name, just
1st or a couple of letters, in php i can use the % ==> '%first_name%', seems
not to work here

-the search engine is on the same page as the results, but the first time
the parameters arent there, so i just want to show all employees, if the
parameters are there then i show those.
How can i check if the parameters are there, in php u can u isset(
*_POST["last_name"] ), what is that here?

Hi :slight_smile:

i have a few question:

-how can i make, that the user doesnt need to fill in the full name, just
1st or a couple of letters, in php i can use the % ==> '%first_name%', seems
not to work here

You can use:

@employee_pages, @employees = paginate (:employee, :conditions =>
["firm_id = ? and first_name like '%#{first_name}%' and last_name like
'%#{first_name}%'" , firm_id, :order_by => "last_name ASC", :per_page
=> 10)

-the search engine is on the same page as the results, but the first time
the parameters arent there, so i just want to show all employees, if the
parameters are there then i show those.
How can i check if the parameters are there, in php u can u isset(
*_POST["last_name"] ), what is that here?

if @params['last_name']
  #parameter given
else
   #parameter not given
end

You could also just add the % characters to the passed value and use
the ? in the sql statement.

q_firstname = '%' + first_name + '%'
q_lastname = '%' + last_name + '%'

@employee_pages, @employees = paginate (:employee, :conditions =>
["firm_id = ? and first_name like ? and last_name like ?" , firm_id,
q_firstname, q_lastname] , :order_by => "last_name ASC", :per_page =>
10)

This way, the value passed in as first_name and last_name will be
escaped properly.