Member Avatar for patk570

I have a basic search result page going right now, but i want the code to generate a html link on the search name so I can see all the data associated with the customer name. I have a simple DB set up with Customer Name, Computer type, Model, etc. The search does show the name and if there is multiple in there for the customer but I am stuck on how to make the name clickable and show all the results of the DB for that user.

Here is the search code:

<?php // Get the search variable from URL $var = @$_GET['q'] ; $trimmed = trim($var); //trim whitespace from the stored variable // rows to return $limit=10; // check for an empty string and display a message. if ($trimmed == "") { echo "<p>Please enter a search...</p>"; exit; } // check for a search parameter if (!isset($var)) { echo "<p>We dont seem to have a search parameter!</p>"; exit; } //connect to your database ** EDIT REQUIRED HERE ** mysql_connect("","",""); //(host, username, password) //specify database ** EDIT REQUIRED HERE ** mysql_select_db("") or die("Unable to select database"); //select which database we're using // Build SQL Query $query = "select * from Client_Computer_Info where Customer_Name like \"%$trimmed%\" order by ID"; // EDIT HERE and specify your table and field names for the SQL query $numresults=mysql_query($query); $numrows=mysql_num_rows($numresults); // If we have no results, offer a google search as an alternative if ($numrows == 0) { echo "<h4>Results</h4>"; echo "<p>Sorry, your search: &quot;" . $trimmed . "&quot; returned zero results</p>"; // google echo "<p><a href=\"http://www.google.com/search?q=" . $trimmed . "\" target=\"_blank\" title=\"Look up " . $trimmed . " on Google\">Click here</a> to try the search on google</p>"; } // next determine if s has been passed to script, if not use 0 if (empty($s)) { $s=0; } // get results $query .= " limit $s,$limit"; $result = mysql_query($query) or die("Couldn't execute query"); // display what the person searched for echo "<p>You searched for: &quot;" . $var . "&quot;</p>"; // begin to show results set echo "Results"; $count = 1 + $s ; // now you can display the results returned while ($row= mysql_fetch_array($result)) { $title = $row["Customer_Name"]; echo "$count.)&nbsp;$title" ; $count++ ; } $currPage = (($s/$limit) + 1); //break before paging echo "<br />"; // next we need to do the links to other results if ($s>=1) { // bypass PREV link if s is 0 $prevs=($s-$limit); print "&nbsp;<a href=\"$PHP_SELF?s=$prevs&q=$var\">&lt;&lt; Prev 10</a>&nbsp&nbsp;"; } // calculate number of pages needing links $pages=intval($numrows/$limit); // $pages now contains int of pages needed unless there is a remainder from division if ($numrows%$limit) { // has remainder so add one page $pages++; } // check to see if last page if (!((($s+$limit)/$limit)==$pages) && $pages!=1) { // not last page so give NEXT link $news=$s+$limit; echo "&nbsp;<a href=\"$PHP_SELF?s=$news&q=$var\">Next 10 &gt;&gt;</a>"; } $a = $s + ($limit) ; if ($a > $numrows) { $a = $numrows ; } $b = $s + 1 ; echo "<p>Showing results $b to $a of $numrows</p>"; ?>
Member Avatar for diafol

Sorry the explanation is a little difficult to follow.
A user makes a search and you log the search keywords - is that right? Along with the user_id?

You want to get a list of users that have searched for a search term?

You want to get a list of search terms for the user?

Member Avatar for patk570

Sorry, it is a lil confusing.

I want to run the query, and when it shows the results, i want it to have a clickable link on the name(Customer_Name) when it generates. When i click on the name i want it to show all results of the DB for that Customer, I have 8 Fields defined and i want to be able to see the results.

Member Avatar for diafol

OK I see a lookup search for users?

Search forms usually use the $_GET method, so the form:

<form id="fsearch" name="fsearch"> <label for="search">Search user:</label> <input type = "text" name="search" id="search" placeholder="Enter the user..." /> <input type = "submit" name="submit" id="submit" value="Search Users" /> </form>

Then to grab the search name:

//assume you include mysql connection details here if(isset($_GET['search'])){ $search = mysql_real_escape_string($_GET['search']); $r = mysql_query("SELECT cust_id, customer_name FROM customers WHERE customer_name LIKE '%{$search}%'"); if(mysql_num_rows($r)>0){ $output = "\n<ul>"; while($d = mysql_fetch_array($r)){ $output .= "\n\t<li><a href=\"profile.php?id={$d['cust_id']}\">{$d['customer_name']}</a></li>" } $output .= "\n</ul>"; }else{ $output = "<p>Sorry no results for that name.</p>"; } }

You then echo the $output in the relevant part of the page.
Then your profile page picks up the id from the url ($_GET).
This is used to extract info from the DB and then display this data in the profile page.

Like that?

Member Avatar for patk570

Yeppers, but where do I include that code at? I have it set for the form to be this:

<div align="center"> <form name="form" action="search.php" method="get"> Please enter &quot;CLIENT NAME&quot; into search box<br> <input type="text" name="q"> <input type="submit" name="Submit" value="Search"> </form> </div>

Then i do have a DB connection string attached to the PHP code i supplied. just omitted it...But where do i insert that at for the code to work properly with the existing code i have.

Member Avatar for diafol

Depends - is the search form visible on all pages? Which pages do you have?

Member Avatar for patk570

Upon logging into the DB, You come to a screen that has 2 buttons, One to add information and the other to search. I have the search on its own page and that's it. Its an internal DB for my company and I got this far but that's it. lol. I am not a php programmer or anything. I just want it to show the details for the information i have in there. The search box is only one page then it renders the other page with the results.

Member Avatar for diafol

OK - you seem to have a dedicated page for searching. There are a couple of ways to do this, but perhaps the easiest would be to combine the search and display details on the same page.

I used LIKE '%{$customer_name}%' , which could well give multiple results. If you change that to = '$customer_name' , you should just get the entry for which you specifically searched.

Anyway.

Your profile/search page (let's call it search.php):

//assume you include mysql connection details here $output = ""; if(isset($_GET['search'])){ $search = mysql_real_escape_string($_GET['search']); $r = mysql_query("SELECT cust_id, customer_name FROM customers WHERE customer_name LIKE '%{$search}%'"); if(mysql_num_rows($r)>0){ $output .= "\n<ul>"; while($d = mysql_fetch_array($r)){ $output .= "\n\t<li><a href=\"search.php?id={$d['cust_id']}\">{$d['customer_name']}</a></li>" } $output .= "\n</ul>"; }else{ $output = "<p>Sorry no results for that name.</p>"; } }elseif(isset($_GET['id'])){ $id = intval($_GET['id']); $r = mysql_query("SELECT cust_id, customer_name ...(all fields you want)... FROM customers WHERE customer_id = $id LIMIT 1"); if(mysql_num_rows($r) == 1){ $d = mysql_fetch_array($r); $output .= "\n<p>ID: {$d['customer_id']}</p> \n<p>Name: {$d['customer_name']}</p> \n<p>Address: {$d['addr1']}, {$d['addr2']}, {$d['postcode']}</p> \n<p>Tel: {$d['tel']}</p> \n<p>Email: {$d['email']}</p>"; }else{ $output = "<p>Sorry the ID supplied for the customer does not exist.</p>"; } }

That goes above the Doctype declaration and html/head area

The form goes into the body.

The below the form:

<?php echo $output;?>
Member Avatar for patk570

OK so i amended the PHP code for what you had, i inserted the Connection string that i have and it doesn't work. to connect to the db. Like i said i am kinda a noob at this. Can you affix the connection string to the code as well? so i know where it goes...

Member Avatar for diafol

That goes above the first bit of php code. As for being a noob - it's not a crime, but you can get this info from a million different websites and the php.net site.

Member Avatar for patk570
Parse error: syntax error, unexpected T_STRING in /homepages/36/d301143136/htdocs/MyDB/search.php on line 3
Member Avatar for diafol

That's all well and good, but what's on line 3?

Member Avatar for patk570

My SQL connect string

Member Avatar for patk570

Here is the code like you said to put it in with my connect string. But i am getting the error described above. Any ideas?

<? PHP session_start(); //connect to your database ** EDIT REQUIRED HERE ** mysql_connect("localhost","omit","omit"); //(host, username, password) //specify database ** EDIT REQUIRED HERE ** mysql_select_db("omit") or die("Unable to select database"); //select which database we're using $output = ""; if(isset($_GET['search'])){ $search = mysql_real_escape_string($_GET['search']); $r = mysql_query("SELECT ID, Customer_Name FROM customers WHERE Customer_Name LIKE '%{$search}%'"); if(mysql_num_rows($r)>0){ $output .= "\n<ul>"; while($d = mysql_fetch_array($r)){ $output .= "\n\t<li><a href=\"search.php?id={$d['cust_id']}\">{$d['Customer_Name']}</a></li>" } $output .= "\n</ul>"; }else{ $output = "<p>Sorry no results for that name.</p>"; } }elseif(isset($_GET['Customer_Name'])){ $id = intval($_GET['ID']); $r = mysql_query("SELECT Customer_Name, Computer_Type, Computer_Make, Computer_Model, Serial_Number, Product_Number, OS, `Key` FROM customers WHERE customer_id = $id LIMIT 1"); if(mysql_num_rows($r) == 1){ $d = mysql_fetch_array($r); $output .= "\n<p>Name: {$d['Customer_Name']}</p> \n<p>Computer Type {$d['Computer_Type']}</p> \n<p>Computer Make {$d['Computer_Make']}</p> \n<p>Computer Model {$d['Computer_Model']}</p> \n<p>Serial Number {$d['Serial_Number']}</p> \n<p>Product Number {$d['Product_Number']}</p> \n<p>OS {$d['OS']}</p> \n<p>Key {$d['Key']}</p>"; }else{ $output = "<p>Sorry the ID supplied for the customer does not exist.</p>"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>Search</title> </head> <body> <form id="fsearch" name="fsearch"> <label for="search">Search user:</label> <input type = "text" name="search" id="search" placeholder="Enter the user..." /> <input type = "submit" name="submit" id="submit" value="Search Users" /> </form> <?php echo $output;?> </body> </html>
Member Avatar for urtrivedi

1) remove space between <? PHP, it should read <?PHP
2) add semicolon to line number 17 in above code in the end

Member Avatar for patk570

OK Guys, one last error and it should work like a charm. I am now getting error: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /homepages/36/d301143136/htdocs/MyDB/search.php on line 12

I used the code above, Ill repost it with changes:

<?PHP session_start(); //connect to your database ** EDIT REQUIRED HERE ** mysql_connect("localhost","omit","omit"); //(host, username, password) //specify database ** EDIT REQUIRED HERE ** mysql_select_db("omit") or die("Unable to select database"); //select which database we're using $output = ""; if(isset($_GET['search'])){ $search = mysql_real_escape_string($_GET['search']); $r = mysql_query("SELECT ID, Customer_Name FROM customers WHERE Customer_Name LIKE '%{$search}%'"); if(mysql_num_rows($r)>0){ $output .= "\n<ul>"; while($d = mysql_fetch_array($r)){ $output .= "\n\t<li><a href=\"search.php?id={$d['cust_id']}\">;{$d['Customer_Name']}</a></li>" } $output .= "\n</ul>"; }else{ $output = "<p>Sorry no results for that name.</p>"; } }elseif(isset($_GET['Customer_Name'])){ $id = intval($_GET['ID']); $r = mysql_query("SELECT Customer_Name, Computer_Type, Computer_Make, Computer_Model, Serial_Number, Product_Number, OS, `Key` FROM customers WHERE customer_id = $id LIMIT 1"); if(mysql_num_rows($r) == 1){ $d = mysql_fetch_array($r); $output .= "\n<p>Name: {$d['Customer_Name']}</p> \n<p>Computer Type {$d['Computer_Type']}</p> \n<p>Computer Make {$d['Computer_Make']}</p> \n<p>Computer Model {$d['Computer_Model']}</p> \n<p>Serial Number {$d['Serial_Number']}</p> \n<p>Product Number {$d['Product_Number']}</p> \n<p>OS {$d['OS']}</p> \n<p>Key {$d['Key']}</p>"; }else{ $output = "<p>Sorry the ID supplied for the customer does not exist.</p>"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>Search</title> </head> <body> <form id="fsearch" name="fsearch"> <label for="search">Search user:</label> <input type = "text" name="search" id="search" placeholder="Enter the user..." /> <input type = "submit" name="submit" id="submit" value="Search Users" /> </form> <?php echo $output;?> </body> </html>

Any ideas?

Member Avatar for patk570

OK so i solved the issue i was getting. But this new thing is presenting its self. When I click on the name i want...it doesnt render any information on the page, its just blank. I am going to upload my code as it is in my DB and see if there is an issue that i am overlooking....Hope it is small....

<?PHP mysql_connect("omit","omit","omit"); mysql_select_db("omit") or die("Unable to select database"); $output = ""; if(isset($_GET['search'])){ $search = mysql_real_escape_string($_GET['search']); $r = mysql_query("SELECT ID, Customer_Name FROM Client_Computer_Info WHERE Customer_Name LIKE '%{$search}%'"); if(mysql_num_rows($r)>0){ $output .= "\n<ul>"; while($d = mysql_fetch_array($r)){ $output .= "\n\t<li><a href=\"search.php?id={$d['ID']}\">{$d['Customer_Name']}</a></li>"; } $output .= "\n</ul>"; }else{ $output = "<p>Sorry no results for that name.</p>"; } }elseif(isset($_GET['Customer_Name'])){ $id = intval($_GET['ID']); $r = mysql_query("SELECT Customer_Name, Computer_Type, Computer_Make, Computer_Model, Serial_Number, Product_Number, OS, `Key` FROM Client_Computer_Info WHERE Customer_Name = $id LIMIT 1"); if(mysql_num_rows($r) == 1){ $d = mysql_fetch_array($r); $output .= "\n<p>Name: {$d['Customer_Name']}</p> \n<p>Computer Type {$d['Computer_Type']}</p> \n<p>Computer Make {$d['Computer_Make']}</p> \n<p>Computer Model {$d['Computer_Model']}</p> \n<p>Serial Number {$d['Serial_Number']}</p> \n<p>Product Number {$d['Product_Number']}</p> \n<p>OS {$d['OS']}</p> \n<p>Key {$d['`Key`']}</p>"; }else{ $output = "<p>Sorry the ID supplied for the customer does not exist.</p>"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>Search</title> </head> <body> <form id="fsearch" name="fsearch"> <label for="search">Search user:</label> <input type = "text" name="search" id="search" placeholder="Enter the user..." /> <input type = "submit" name="submit" id="submit" value="Search Users" /> </form> <?php echo $output;?> </body> </html>

Most likely your code crashes somewhere. Either echo some messages to see where you get, or enable error reporting while testing.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.