Wednesday, 11 September 2013

Get ID from ROW and include in a linkable result - PHP MYSQL

Get ID from ROW and include in a linkable result - PHP MYSQL

I have this code for a search engine. I need to make linkable the results,
only in the column name, but when I add the code ALL the colums turns as a
link.
Here is how the results looks like now: http://postimg.org/image/59y36mih7/
I need to construct the link for the column name in this way:
http://www.mysite.com/id, (coma included)
Can you help me how to make the query to get the info from id column and
make only the results from name column clickable? I´m quite lost.
> <?php
>
>
>
> $MySQLPassword = "*****";
> $HostName = "***";
> $UserName = "***";
> $Database = "****";
>
> mysql_connect($HostName,$UserName,$MySQLPassword)
> or die("ERROR: Could not connect to database!");
> mysql_select_db($Database) or die("cannot select db");
>
>
> $default_sort = 'ID';
> $allowed_order = array ('name','description');
>
> if (!isset ($_GET['order']) ||
> !in_array ($_GET['order'], $allowed_order)) {
> $order = $default_sort;
> } else {
> $order = $_GET['order'];
> }
>
>
> if (isset($_GET['keyword'])) {
>
> if(!$_GET['keyword']) {
> die('<p>Please enter a search term.</p>');
> }
>
>
>
>
>
> /////////////////////////HERE IS THE BEGINING OF CODE WHERE I THINK
> SHOULD BE THE PROBLEM ////////////////////////////
>
> $tables = 'reports';
> $return_fields = 'name organizer_id no_pages publication_date price';
> $check_fields = 'name description';
>
>
> $query_text = $_GET['keyword'];
>
> $clean_query_text =cleanQuery($query_text);
>
> $newquery=bq_simple ($return_fields, $tables, $check_fields,
$clean_query_text);
> $newquery = $newquery . " ORDER BY $order;";
>
> $result = mysql_query($newquery) or die(mysql_error());
>
>
> $numrows = mysql_num_rows($result);
> if ($numrows == 0) {
> echo "<H4>No data to display!</H4>";
> exit;
> }
> echo "<p>Your search '$query_text' returned ".$numrows. "
results.</p>\n";
> echo "<p>Click on the headings to sort.</p>\n";
>
> $row = mysql_fetch_assoc ($result);
> echo "<TABLE border=1>\n";
> echo "<TR>\n";
> foreach ($row as $heading=>$column) {
>
>
> echo "<TD><b>";
> if (in_array ($heading, $allowed_order)) {
> echo "<a
href=\"{$_SERVER['PHP_SELF']}?order=$heading&keyword=$query_text\">$heading</a>";
> } else {
> echo $heading;
> }
> echo "</b></TD>\n";
> }
> echo "</TR>\n";
>
mysql_data_seek ($result, 0); while ($row =
> mysql_fetch_assoc ($result)) {
> echo "<TR>\n";
> foreach ($row as $column) {
> echo "<TD><a href='http://mysite.com/(here should be the
ID)'>$column</TD>\n";
> }
> echo "</TR>\n"; } echo "</TABLE>\n"; }
>
> ////////////////////////FINISH OF THE CODE WITH PROBLEM
> ////////////////////////////
>
> /* * * * * * * * * * * * * * F U N C T I O N S * * * * * * * * * * *
> */
>
> function cleanQuery($string)
> {
> $string = trim($string);
> $string = strip_tags($string); // remove any html/javascript.
>
> if(get_magic_quotes_gpc()) // prevents duplicate backslashes
> {
> $string = stripslashes($string);
> }
> if (phpversion() >= '4.3.0')
> {
> $string = mysql_real_escape_string($string);
> }
> else
> {
> $string = mysql_escape_string($string);
> }
> return $string;
> }
>
>
> function bq_handle_shorthand($text) {
> $text = preg_replace("/ \+/", " and ", $text);
> $text = preg_replace("/ -/", " not ", $text);
> return $text; }
>
>
> function bq_explode_respect_quotes($line) {
> $quote_level = 0; #keep track if we are in or out of quote-space
> $buffer = "";
>
> for ($a = 0; $a < strlen($line); $a++) {
> if ($line[$a] == "\"") {
> $quote_level++;
> if ($quote_level == 2) { $quote_level = 0; }
> }
> else {
> if ($line[$a] == " " and $quote_level == 0) {
> $buffer = $buffer . "~~~~"; #Hackish
magic key
> }
> else {
> $buffer = $buffer . $line[$a];
> }
> }
>
> }
>
> $buffer = str_replace("\\", "", $buffer);
>
> $array = explode("~~~~", $buffer);
> return $array; }
>
>
> function bq_make_subquery($fields, $word, $mode) {
>
> if ($mode == "not") {
> $back = " LIKE '%$word%'))";
> }
> else {
> $back = " LIKE '%$word%')";
> }
>
> if ($mode == "not") {
> $front = "(NOT (";
> $glue = " LIKE '%$word%' AND ";
> }
> else {
> $front = "(";
> $glue = " LIKE '%$word%' AND ";
> }
>
> $text = str_replace(" ", $glue, $fields);
> $text = $front . $text . $back;
>
> return $text; }
>
>
>
> function bq_make_query($fields, $text) {
>
> $text = strtolower($text);
>
>
> $text = bq_handle_shorthand($text);
>
>
> $wordarray = bq_explode_respect_quotes($text);
>
> $buffer = "";
> $output = "";
>
> for ($i = 0; $i<count($wordarray); $i++) {
> $word = $wordarray[$i];
>
> if ($word == "and" or $word == "not" and $i > 0) {
> if ($word == "not") {
>
>
> $i++;
> if ($i == 1) { #invalid sql syntax to prefix the first
check with and/or/not
> $buffer = bq_make_subquery($fields, $wordarray[$i],
"not");
> }
> else {
> $buffer = " AND " . bq_make_subquery($fields,
$wordarray[$i], "not");
> }
> }
> else {
> if ($word == "and") {
> $i++;
> if ($i == 1) {
> $buffer = bq_make_subquery($fields,
$wordarray[$i], "");
> }
> else {
>
> $buffer = " AND " . bq_make_subquery($fields,
$wordarray[$i], "");
> }
> }
> else {
> if ($word == "and") {
> $i++;
> if ($i == 1) {
> $buffer = bq_make_subquery($fields,
$wordarray[$i], "");
> }
> else {
>
> $buffer = " AND " .
bq_make_subquery($fields, $wordarray[$i],
"");
> }
> }
> }
> }
> }
> else {
> if ($i == 0) { # 0 instead of 1 here because there was no
conditional word to skip and no $i++;
> $buffer = bq_make_subquery($fields, $wordarray[$i], "");
> }
> else {
> $buffer = " AND " . bq_make_subquery($fields,
$wordarray[$i], "");
> }
> }
> $output = $output . $buffer;
> }
> return $output; }
>
>
>
> function bq_simple ($return_fields, $tables, $check_fields,
> $query_text) {
>
>
> $return_fields = str_replace(" ", ", ", $return_fields);
> $tables = str_replace(" ", ", ", $tables);
>
>
> $query = "SELECT $return_fields FROM $tables WHERE ";
> $query = $query . bq_make_query($check_fields, $query_text);
>
> #
> # Uncomment to debug
> #
>
> return $query; }
>
>
>
> ?>

No comments:

Post a Comment