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>
   ";
   }
?>

Recommended Answers

All 6 Replies

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.

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

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.

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>';
}
?>

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:

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.