Finish a website that uses PHP/MySQL/Smarty

Cancelled Posted Nov 10, 2010 Paid on delivery
Cancelled Paid on delivery

We are looking for someone to finish the existing website located at **http://www.onder++nemers++[url removed, login to view]** (remove ++ signs)

You can have a look at that website **using the following user/pass** : rentacoder / BTC8IqEtO5L}

We are looking for someone to finish an existing website in PHP/MySQL/Smarty. We already have an HTML/CSS design.

The FRONTEND requires a search/filter feature, basic user registration/login with a "update profile" like functionality and simple PayPal IPN implementation.

The BACKEND requires simple CRUD (Create, Read, Update, Delete) actions on 4 tables.

please read the entire bid request for more detailed information.

## Deliverables

**Finish a website that uses PHP/MySQL/Smarty**

We are looking for someone to finish the existing website located at http://www.onder++nemers++[url removed, login to view] (remove ++ signs)

You can have a look at that website using the following user/pass : rentacoder / BTC8IqEtO5L}

For your reference, the database scheme we have so far is attached below.

What needs to be done by you ?

**

GUEST FRONT END**

On the homepage/index page, there is a big search bar. This already has some jquery autocomplete functionality (as a sample), but your job is to make sure it uses the database to search in. The database already exists, and this search bar must search in the following fields in the database : [url removed, login to view], [url removed, login to view], [url removed, login to view] and do a google-style auto-suggest combining the data from these three fields in the database. For example when someone searches for "garage London", it must output the garages found in [url removed, login to view] that have the [url removed, login to view] of london only.

On the page that shows the search results, there should be a block on the right of the results that allows the visitor to set filters on: [url removed, login to view] (dropdown), [url removed, login to view] (text), [url removed, login to view] (text).

When a company name is clicked on the results page, the company details are shown (all contacts, twitter and facebook). Think eBay-like. All variables (search query and filters) should use GET parameters, so they appear in the URL.

For each company in the search results/listing, the company name should be clickable. This will redirect the visitor to the company details page, which is a separate page that contains all company info.

**COMPANY FRONT END**

Companies should be able to register and log-in in order to add their company to the database. Registration must be validated via email. Simple and secure username/password combination with "Remember Me" feature (using cookies).

We have already filled in the database with 900.000 companies. They have to enter their "ACCESS CODE" in an extra field during registration. Companies will receive letters via snailmail that contain an access code which they can enter on the website to check/edit their information (or add more detailed information). Those companies already have an entry in the "company" table. Using the access code during registration will therefor NOT insert an extra row in the tabel, it will simply fill in the username/password/email fields upon registering.

*

Side Note: This means the registration form has 5 fields: username, password, password (verify) email address and access code (optional). The login form has 3 fields: username, password, remember me (checkbox).*

Once logged in, the company can update their basic company information (name, address, zip, city, phone, fax, email, url) and select their SIC code (dropdown?).

They can also opt for a premium service (monthly payment) so they can add additional information, including: facebook, twitter, company logo, up to 10 contacts and up to 10 sic codes. After entering this additional information, a simple invoice is created. Once this invoice is marked as paid, the [url removed, login to view] field will be set to Active and the premium info will be shown on the website when visitors view the company details.

Simple PayPal IPN functionality must be included. Users should be able to press a PayPal Pay Now button. There are PHP classes available that allow you to implement this quick and fast.

*

Side Note: The users also have the option to pay by bank transfer. In this case it is the administrator's responsibility to manually mark the invoice as PAID in the admin section when a payment is received. Monthly fee is unknown at the moment, make sure this is a variable we can easily set (config file).*

**ADMIN BACK END**

The following tables must have simple CRUD (Create, Read, Update, Delete) functionality: company, contacts, invoice, sic_codes.

It must be possible to set filters on all fields in the datagrid. For the company listing, per row there should also be buttons:

- Invoices: shows grid with all invoices for that client

- Contacts: shows grid with all contacts for that client

And the obvious Edit and Delete buttons.

It's not obligated but we highly recommend using ExtJS datagrids for this. Those are fancy AND easy/fast to develop. They support server-side filter/sorting functionality as well as inline editting and multi-line select for the delete feature. It would make things a lot easier for the both of us.

*Side Note: For now, you don't have to implement admin user/pass authentication, just make sure this back-end functionality is in a separate directory so we can protect it with a .htaccess file.*

**CRON JOB**

A cron job will run once per day. Ten (10) days before the end of the billing cycle, a new invoice should be sent. It will also check for overdue invoices. If an invoice is overdue and the company premium status is still Active, it should be disabled.

**PROJECT SUMMARY**

So basically we want you to implement the following for the FRONTEND: database search/filter feature, basic user registration/login functionality, update forms for companies so they can edit their company information, simple invoice system with PayPal payments.

For the BACKEND we want you to implement: CRUD actions on some tables.

**

IMPORTANT EXTRA INFORMATION:**

- We already have a database layout. You can add extra tables and columns if you think this is required, however if you CHANGE anything (rename or remove tables/columns) please ask for permission first. The database has to stay compatible with our import script that we use to fill the database.

- Coding conventions and standards are important. We are aware that some developers have their own coding conventions. We don't mind, as long as your code is CONSISTENT, EASY TO READ, CLEAN and WELL DOCUMENTED. We only accept quality code that is professionally written.

- If ANYTHING is unclear or if you have ANY questions (or suggestions) please don't hesitate to add a comment and ask. We appreciate proper communication.

- For this project we won't hire coders with 0 ratings, sorry. If you want to bid, we also appreciate expert guarantee of 10%, but this is not obligatory.

- The deadline is 7 days for this project: we expect everything to be done within 5 days, after which we will do one day of bug testing and problem analasys, and on the 7th day you have time for all corrections/modifications/fixing bugs. By this time everything must be in finished state.

**

EXTRA NON-REQUIRED FEATURES:**

These are small features that are optional. The timeframe is limited so we want you to focus on everything above first. However if you implement (some of) these features, it might result in a nice bonus if we're satisfied with your overall work.

- All search queries are logged in the "searches" table.

- When an admin logs in, it's logged in the "adminlog" table.

- Limit the amount of searches/queries per IP per minute to prevent data mining scripts from "stealing" our database (and causing server load issues).

**

ADDEMDUM DATABASE SCHEME:**

--

-- Table structure for table `admin`

-- Description: Contains admin login information.

--

CREATE TABLE IF NOT EXISTS `admin` (

`id` int(11) NOT NULL auto_increment,

`username` varchar(50) NOT NULL,

`password` varchar(50) NOT NULL,

`email` varchar(100) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--

-- Table structure for table `company`

-- Description: Contains company information including

-- login info. Each company will be assigned a unique access

-- code which we will send to them via mail or email. This

-- access code allows them to access and edit their company

-- details (and purchase premium services for their company).

--

CREATE TABLE IF NOT EXISTS `company` (

`id` int(11) NOT NULL auto_increment,

`username` varchar(50) NOT NULL,

`password` varchar(50) NOT NULL,

`accesscode` varchar(50) NOT NULL,

`name` varchar(50) NOT NULL,

`address` varchar(255) NOT NULL,

`zip` int(11) NOT NULL,

`city` varchar(50) NOT NULL,

`phone` varchar(15) NOT NULL,

`fax` varchar(15) NOT NULL,

`email` varchar(100) NOT NULL,

`url` varchar(100) NOT NULL,

`facebook` varchar(255) NOT NULL,

`twitter` varchar(20) NOT NULL,

`logo` varchar(255) NOT NULL,

`premium` enum('Active','Inactive') NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--

-- Table structure for table `company_sic_code`

-- Description: Links company and sic_code tables

-- as a many-to-many relation.

--

CREATE TABLE IF NOT EXISTS `company_sic_code` (

`company_id` int(11) NOT NULL,

`sic_code` int(11) NOT NULL,

PRIMARY KEY (`company_id`,`sic_code`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--

-- Table structure for table `contact`

-- Description: A company can have multiple contacts.

--

CREATE TABLE IF NOT EXISTS `contact` (

`id` int(11) NOT NULL auto_increment,

`company_id` int(11) NOT NULL,

`name` varchar(50) NOT NULL,

`function` varchar(50) NOT NULL,

`phone` varchar(20) NOT NULL,

`fax` varchar(20) NOT NULL,

`email` varchar(100) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--

-- Table structure for table `invoice`

-- Description: When a company decides to opt for premium

-- services, an invoice will be created (monthly cycle).

--

CREATE TABLE IF NOT EXISTS `invoice` (

`id` int(11) NOT NULL auto_increment,

`company_id` int(11) NOT NULL,

`amount` double NOT NULL,

`invoicedate` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

`duedate` timestamp NOT NULL default '0000-00-00 00:00:00',

`paid` enum('No','Yes') NOT NULL,

`transaction` varchar(255) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--

-- Table structure for table `sic_code`

-- Description: Standard Industrial Classification codes

-- (and their description/label). Each company is assigned to 1

-- sic code by default. These codes are set up in the form of a

-- hierarchical tree. Leafs are normally on the 4th level.

--

CREATE TABLE IF NOT EXISTS `sic_code` (

`code` int(11) NOT NULL auto_increment,

`label` varchar(255) NOT NULL,

`parent_code` int(11) NOT NULL,

`level` int(11) NOT NULL,

PRIMARY KEY (`code`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Amazon Web Services CSS Engineering JavaScript MySQL PHP Project Management Software Architecture Software Testing Web Hosting Website Management Website Testing XML

Project ID: #3845894

About the project

17 proposals Remote project Active Dec 2, 2010

17 freelancers are bidding on average $405 for this job

NetzPro

See private message.

$680 USD in 7 days
(395 Reviews)
8.7
ilicotech

See private message.

$850 USD in 7 days
(71 Reviews)
7.4
WiPage

See private message.

$510 USD in 7 days
(172 Reviews)
6.9
maghetiuv2

See private message.

$340 USD in 7 days
(141 Reviews)
6.8
grupociberia

See private message.

$170 USD in 7 days
(128 Reviews)
6.2
ahmadnawaz121

See private message.

$297.5 USD in 7 days
(72 Reviews)
5.9
mrkrunaldoshi

See private message.

$425 USD in 7 days
(32 Reviews)
5.6
sneka

See private message.

$297.5 USD in 7 days
(3 Reviews)
3.9
praneeth87

See private message.

$297.5 USD in 7 days
(15 Reviews)
3.5
nitinmahendra

See private message.

$382.5 USD in 7 days
(5 Reviews)
3.2
vertechvw

See private message.

$297.5 USD in 7 days
(5 Reviews)
3.4
webseoexpertsvw

See private message.

$552.5 USD in 7 days
(6 Reviews)
2.9
findmyjob

See private message.

$765 USD in 7 days
(2 Reviews)
2.8
krashmi

See private message.

$85 USD in 7 days
(4 Reviews)
0.5
guardianpressinc

See private message.

$425 USD in 7 days
(3 Reviews)
0.0
erpoojasharma

See private message.

$297.5 USD in 7 days
(1 Review)
0.0
lovinglogic

See private message.

$212.5 USD in 7 days
(1 Review)
0.0