Question: Complete the function param() based on prototype, calls, and definition. Complete the function 'param()' based on the prototype, calls, and definition, which are already in

Complete the function param() based on prototype, calls, and definition.

Complete the function 'param()' based on the prototype, calls, and definition, which are already in place. The function 'param()'s job is to match the field name passed in its parameter to the corresponding array struct element. Once the appropriate structure is matched, the value for that field can be returned.

Return "" (an empty string) if the element for that name is not found in the array - (no match from the html form).

Use your own fields by modifying the html code appropriately (first, last, and color are not required, just examples) .

As a final touch, return the data received back to the browser in some creative way. For example the color chosen by the user could be used to change the background color of the page. Again, this is only an example - be creative.

#include

#include

#include

#include

#include

using namespace std;

struct FIELDS

{

string name;

string value;

};

const int cnt = 3; //cnt should be set to the number of fields the

html form contains

// Prototypes

void parse(string, FIELDS []);

string param(string, FIELDS [], int);

//main begins

int main()

{

FIELDS name_value_pairs [cnt];

string qs(getenv("QUERY_STRING"));

//string qs("first=fred&last=flint&color=red");

cout << "Content-type:text/html ";

cout << "debug with qs: " << qs << "

" << endl;

parse(qs, name_value_pairs);

// debug to show content of name_value_pairs

cout << "debug to show content of name_value_pairs array: " <<

endl << " ";

for (int index = 0; index

cout << "name: " << name_value_pairs[index].name << " ";

cout << "value: " << name_value_pairs[index].value << endl <<

" ";

}

/*

// Three fields data are retrieved from the param function

string first = param("first", name_value_pairs, cnt);

string last = param("last", name_value_pairs, cnt);

string color = param("color", name_value_pairs, cnt);

*/

// code an HTML page, which includes the three fields

// received.

return 0;

}

//*******************************************

//******** Functions begin ******************

//*******************************************

//*******************************************

// parse()

// This will separate the name/value pairs found after the ? in

// the URL and populate the name_value_pairs array of structures

//*******************************************

void parse (string qs, FIELDS f_name_value_pairs [])

{

cout << "debug in parse " << endl;

string name, value;

int start_pos = 0, pos;

for (int counter=0; counter < cnt; counter++) {

pos = qs.find("=", start_pos);

name = qs.substr(start_pos, pos - start_pos);

cout << "name: " << name << " " << endl;

f_name_value_pairs[counter].name = name;

start_pos = pos + 1;

pos = qs.find("&", start_pos);

if (pos == string::npos) {

pos = qs.length();

}

value = qs.substr(start_pos, pos - start_pos);

cout << "value: " << value << " " << endl;

start_pos = pos + 1;

f_name_value_pairs[counter].value = value;

}

}

//*******************************************

// param()

// This will find the field value based on the

// field name

//*******************************************

string param(string lookUp, FIELDS f_name_value_pairs[], int f_cnt)

{

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!