1,105,644 Community Members

php newbie - passing search results to detail page

Member Avatar
tsp003
Newbie Poster
19 posts since Jul 2010
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Hi, i've been going round in circles for an answer to this one.

Basically, i've downloaded a search application for my website here http://hvn.org.uk/searchengine. This all works fine. What i now need to do is take the link on the results page and populate a new details.php page will display the full database records and fields, as this has to be based on what the user clicks.

As you can see from the site i have managed to get the search.php page to pass the unique ID to the details.php, so that looks to be fine, to me anyway :?:

I'm lost as to how to get the details.php to display the associated data for the record selected. I really dont know where to start past the <?php at the top of the page.

As i say any help would be greatly appreciated. I enclose the search.php code if it helps.

<?php


//get data
$button = $_GET['submit'];
$search = $_GET['search'];
$id = $_GET['profileid'];

$s = $_GET['s'];
if (!$s)
$s = 0;


$e = 10; // Just change to how many results you want per page


$next = $s + $e;
$prev = $s - $e;




 if (strlen($search)<=2)
  echo "Must be greater then 3 chars";
 else
 {
  echo "<br /><table><tr><td><img src='juzzy.jpg' /></td><td><form action='search.php' method='GET'><input type='text' onclick=value='' size='100' name='search' value='$search'> <input type='submit' name='submit' value='Search'></form></td></tr></table>";
  
  //connect to database
  mysql_connect("localhost","user","password1");
  mysql_select_db("database");
   
   //explode out search term
   $search_exploded = explode(" ",$search);
   
   foreach($search_exploded as $search_each)
   {
   
        //construct query
    $x++;
    if ($x==1)
     $construct .= "keywords LIKE '%$search_each%'";
    else
     $construct .= " OR keywords LIKE '%$search_each%'";
   
   }
   
  //echo outconstruct
  $constructx = "SELECT * FROM job_profile WHERE $construct";
  
  $construct = "SELECT * FROM job_profile WHERE $construct LIMIT $s,$e";
  $run = mysql_query($constructx);
  
  $foundnum = mysql_num_rows($run);


  $run_two = mysql_query("$construct");
  
  if ($foundnum==0)
   echo "No results found for <b>$search</b>";
  else
  {
   echo "<table bgcolor='#0000FF' width='100%' height='1px'><br /></table><table bgcolor='#f0f7f9' width='100%' height='10px'><tr><td><div align='right'>Showing 1-10 of <b>$foundnum</b> results found for <b>$search.</b></div></td></tr></table><p>";
   
   while ($runrows = mysql_fetch_assoc($run_two))
   {
    //get data
  $id = $runrows['profileid'];
  $title = $runrows['jobtitle'];
   $desc = $runrows['jobdescription'];
   $url = $runrows['url'];
   
   echo "<table width='650px'>
   <h4><a href='details.php?id=$id'><b>$title</b></a><br />
   $desc<br>
   <font color='00CC00'>$url</font></table></h4>
   ";
   }
?>
Member Avatar
hielo
Veteran Poster
1,131 posts since Dec 2007
Reputation Points: 55 [?]
Q&As Helped to Solve: 246 [?]
Skill Endorsements: 0 [?]
 
0
 

it should like in your db field `profileid` you have PHP code instead of just a number. Make sure you have a unique number in it.

Member Avatar
tsp003
Newbie Poster
19 posts since Jul 2010
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

it should like in your db field `profileid` you have PHP code instead of just a number. Make sure you have a unique number in it.

Thanks for the reply. I understand that i need to tell details.php to retrieve the unique profileid that the user clicked in search.php and then display the results, i'm just not quite getting what the php code should be to kick start that process and show some database output on the details page.

Any help greatly appreciated. I think i may be thinking too hard and im gonna kick myself in the end, but if someone could point me in the right direction i'd be really grateful.

Thank

Member Avatar
hielo
Veteran Poster
1,131 posts since Dec 2007
Reputation Points: 55 [?]
Q&As Helped to Solve: 246 [?]
Skill Endorsements: 0 [?]
 
0
 

I meant to write "it looks like in your db field `profileid`..."

Based on the link you posted, your links have

href="http://hvn.org.uk/searchengine/details.php?id=<?php echo 1; ?>"

but it should be simply:

href="http://hvn.org.uk/searchengine/details.php?id=1"

hence my suspicion that your table field has PHP code instead of just a unique numeric value.

Member Avatar
tsp003
Newbie Poster
19 posts since Jul 2010
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

I meant to write "it looks like in your db field `profileid`..."

Based on the link you posted, your links have

href="http://hvn.org.uk/searchengine/details.php?id=<?php echo 1; ?>"

but it should be simply:

href="http://hvn.org.uk/searchengine/details.php?id=1"

hence my suspicion that your table field has PHP code instead of just a unique numeric value.

Ah i see. No my table's profileid is unique autonumber/autoincrement field. I copied that bit of code from somewhere else, but have changed it as you suggest, thanks.

Still looking for suggestions on how to build the details.php to display the full database record based on $ID/profileid selected. Any help would still be very much appreciated.

Member Avatar
hielo
Veteran Poster
1,131 posts since Dec 2007
Reputation Points: 55 [?]
Q&As Helped to Solve: 246 [?]
Skill Endorsements: 0 [?]
 
0
 

In details.php you would need something similar to:

<?php
mysql_connect("localhost", "username", "password") or die( mysql_error() );
mysql_select_db("dbname")  or die( mysql_error() );

$sql =sprintf('SELECT * FROM job_profile WHERE id=%d', intval($_GET['id']);
$result = mysql_query( $sql ) or die( "Error executing:<br>$sql<br>".mysql_error() ) ;

if( mysql_num_rows($result) )
{
  echo '<div>No records found</div>';
}
else
{
  $row=mysql_fetch_assoc($result);
  echo '<table><thead>';
  echo '<tr><th>' . implode('</th><th>', array_keys($row)) . '</th></tr></thead><tbody>';
  do{
    echo '<tr><td>' . implode('</th><th>', $row) . '</td></tr>';
  }while($row=mysql_fetch_assoc($result));
  echo '</tbody></table>';
}
?>
Member Avatar
tsp003
Newbie Poster
19 posts since Jul 2010
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Excellent, worked a treat, was only expecting a point in the right direction, but that bit of code has saved me so much time. Thank you so much :icon_biggrin:

Question Answered as of 3 Years Ago by hielo
You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: