ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> php-db
php-db
[PHP-DB] search error
by Asif Qureshi other posts by this author
Nov 22 2006 6:19AM messages near this date
Re: Fwd: Re: [PHP-DB] search error | [PHP-DB] search error
search error and code has been posted
  --------------------------
  Got error 28 from table handler
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home2
/wwwabcde/public_html/multipurposechain/searchfuncs.php on line 294
Got error 28 from table handlerDisplaying results 1-10 of 4541 matches (12.77 seconds) 
  Result page: 1 2 3 4 5 6 7 8 9 10 Next
   
  
--------------------------------------------------------------------------------
   
<?
/*******************************************
  ********************************************/
  
error_reporting(E_ALL ^ E_NOTICE);
$include_dir = "include";
include "$include_dir/commonfuncs.php";
  
 function cmp($a, $b) {
  if ($a['weight'] == $b['weight'])
   return 0;
    return ($a['weight'] >  $b['weight']) ? -1 : 1;
 }
   function addmarks($a) {
  $a = eregi_replace("[ ]+", " ", $a);
  $a = str_replace(" +", "+", $a);
  $a = str_replace(" ", "+", $a);
  return $a;
 }
   function makeboollist($a) {
  global $entities;
  while ($char = each($entities)) {
   $a = eregi_replace($char[0], $char[1], $a);
  }
  $a = trim($a);
  $a = eregi_replace("&quot;", "\"", $a);
  $returnWords = array();
  //get all phrases
  $regs = Array();
  while (eregi("([-]?)\"([^\"]+)\"", $a, $regs)) {
   if ($regs[1] == '') {
    $returnWords['+s'][] = $regs[2];
    $returnWords['hilight'][] = $regs[2];
   } else {
    $returnWords['-s'][] = $regs[2];
   }
   $a = str_replace($regs[0], "", $a);
  }
  $a = strtolower(eregi_replace("[ ]+", " ", $a));
//  $a = remove_accents($a);
  $a = trim($a);
  $words = explode(' ', $a);
  if ($a=="") {
   $limit = 0;
  } else {
  $limit = count($words);
  }
  
  $k = 0;
  //get all words (both include and exlude)
  $includeWords = array();
  while ($k < $limit) {
   if (substr($words[$k], 0, 1) == '+') {
    $includeWords[] = substr($words[$k], 1);
   } else if (substr($words[$k], 0, 1) == '-') {
    $returnWords['-'][] = substr($words[$k], 1);
   } else {
    $includeWords[] = $words[$k];
    $returnWords['hilight'][] =  $words[$k];
   }
   $k++;
  }
  //add words from phrases to includes
  if (isset($returnWords['+s'])) {
   foreach ($returnWords['+s'] as $phrase) {
    $phrase = strtolower(eregi_replace("[ ]+", " ", $phrase));
    $phrase = trim($phrase);
    $temparr = explode(' ', $phrase);
    foreach ($temparr as $w)
     $includeWords[] = $w;
   }
  }
    foreach ($includeWords as $word) {
   if (!($word =='')) {
    if (ignoreWord($word)) {
       $returnWords['ignore'][] = $word;
    } else {
     $returnWords['+'][] = $word;
    } 
   }
    }
    return $returnWords;
 }
   function ignoreword($word) {
  global $common;
  global $min_word_length;
  global $index_numbers;
  if ($index_numbers == 1) {
   $pattern = "[a-z0-9]+";
  } else {
   $pattern = "[a-z]+";
  }
  if (strlen($word) < $min_word_length || (!eregi($pattern, remove_accents($word))) || ($com
mon[$word] == 1)) {
   return 1;
  } else {
   return 0;
  }
 }
   function search($searchstr, $category, $start, $per_page, $type) {
  global $length_of_link_desc,$mysql_table_prefix, $show_meta_description;
    //find all sites that should not be included in the result
  if (count($searchstr['+']) == 0) {
   return null;
  }
  $wordarray = $searchstr['-'];
  $notlist = array();
  $not_words = 0;
  while ($not_words < count($wordarray)) {
   $searchword = addslashes($wordarray[$not_words]);
     $query1 = "SELECT link_id from ".$mysql_table_prefix."link_keyword, ".$mysql_table_pref
ix."keywords where ".$mysql_table_prefix."link_keyword.keyword_id= ".$mysql_table_prefix."ke
ywords.keyword_id and keyword='$searchword'";
   echo mysql_error();
   $result = mysql_query($query1);
     while ($row = mysql_fetch_row($result)) { 
    $notlist[$not_words]['id'][$row[0]] = 1;
   }
   $not_words++;
  }
  
    //find all sites containing the search phrase
  $wordarray = $searchstr['+s'];
  $phrase_words = 0;
  while ($phrase_words < count($wordarray)) {
   $searchword = addslashes($wordarray[$phrase_words]);
   $query1 = "SELECT link_id from ".$mysql_table_prefix."links where fulltxt like '% $search
word%'";
   echo mysql_error();
   $result = mysql_query($query1);
   $num_rows = mysql_num_rows($result);
   if ($num_rows == 0) {
    return null;
   }
   while ($row = mysql_fetch_row($result)) { 
    $phraselist[$phrase_words]['id'][$row[0]] = 1;
   }
   $phrase_words++;
  }
  
    if ($category>  0) {
   $allcats = get_cats($category);
   $catlist = implode(",", $allcats);
   $query1 = "select link_id from ".$mysql_table_prefix."links, ".$mysql_table_prefix."sites
, ".$mysql_table_prefix."categories, ".$mysql_table_prefix."site_category where ".$mysql_tab
le_prefix."links.site_id = ".$mysql_table_prefix."sites.site_id and ".$mysql_table_prefix."s
ites.site_id = ".$mysql_table_prefix."site_category.site_id and ".$mysql_table_prefix."site_
category.category_id in ($catlist)";
   $result = mysql_query($query1);
   echo mysql_error();
   $num_rows = mysql_num_rows($result);
   if ($num_rows == 0) {
    return null;
   }
   while ($row = mysql_fetch_row($result)) { 
    $category_list[$row[0]] = 1;
   }
  }
    //find all sites that include the search word 
  $wordarray = $searchstr['+'];
  $words = 0;
  $starttime = getmicrotime();
  while ($words < count($wordarray)) {
   $searchword = addslashes($wordarray[$words]);
   $query1 = "SELECT distinct link_id, weight from ".$mysql_table_prefix."link_keyword, ".$m
ysql_table_prefix."keywords where ".$mysql_table_prefix."link_keyword.keyword_id= ".$mysql_t
able_prefix."keywords.keyword_id and keyword='$searchword' order by weight desc";
   $result = mysql_query($query1);
   $num_rows = mysql_num_rows($result);
   if ($num_rows == 0) {
    return null;
   }
   if ($type == "or") {
    $indx = 0;
   } else {
    $indx = $words;
   }
   
   while ($row = mysql_fetch_row($result)) { 
    $linklist[$indx]['id'][] = $row[0];
    $linklist[$indx]['weight'][$row[0]] = $row[1];    }
   $words++;
  }
    if ($type == "or") {
   $words = 1;
  }
  $result_array = Array();
   
    if ($words == 1 && $not_words == 0 && $category < 1) { //if there is only one search wor
d, we already have the result
   $result_array = $linklist[0]['weight'];
  } else { //otherwise build an intersection of all the results
   $j= 1;
   $min = 0;
   while ($j < $words) {
    if (count($linklist[$min]['id']) >  count($linklist[$j]['id'])) {
     $min = $j;
    }
    $j++;
   }
     $j = 0;
  
   $temp_array = $linklist[$min]['id'];
   $count = 0;
   while ($j < count($temp_array)) {
    $k = 0; //and word counter
    $n = 0; //not word counter
    $o = 0; //phrase word counter
    $weight = 1;
    $break = 0;
    while ($k < $words && $break== 0) {
     if ($linklist[$k]['weight'][$temp_array[$j]] >  0) {
      $weight = $weight + $linklist[$k]['weight'][$temp_array[$j]];
     } else {
      $break = 1;
     }
     $k++;
    }
    while ($n < $not_words && $break== 0) {
     if ($notlist[$n]['id'][$temp_array[$j]] >  0) {
      $break = 1;
     }
     $n++;
    }    
      while ($o < $phrase_words && $break== 0) {
     if ($phraselist[$n]['id'][$temp_array[$j]] != 1) {
      $break = 1;
     }
     $o++;
    }
    if ($break== 0 && $category >  0 && $category_list[$temp_array[$j]] != 1) {
     $break = 1;
    }
      if ($break == 0) {
     $result_array[$temp_array[$j]] = $weight;
     $count ++;
    }
    $j++;
   }
  }//word == 1
    $end = getmicrotime()- $starttime;
    $results = count($result_array);
  if ($results == 0) {
   return null;
  }
  arsort ($result_array);
  
  $keys = array_keys($result_array);
  $maxweight = $result_array[$keys[0]];
    for ($i = ($start -1)*$per_page; $i <min($results, ($start -1)*$per_page + $per_page) ; 
$i++) {
   $in[] = $keys[$i];
    }
  
  if (!is_array($in)) {
   $res['results'] = $results;
   return $res;
  }
    $inlist = implode(",", $in);
  
  if ($length_of_link_desc == 0) {
   $fulltxt = "fulltxt";
  } else {
   $fulltxt = "substring(fulltxt, 1, $length_of_link_desc)";
  }
    $query1 = "SELECT distinct link_id, url, title, description,  $fulltxt, size FROM ".$mys
ql_table_prefix."links WHERE link_id in ($inlist)";
  $result = mysql_query($query1);
  echo mysql_error();
                                       
    $i = 0;
  while ($row = mysql_fetch_row($result)) {
   $res[$i]['title'] = $row[2];
   $res[$i]['url'] = $row[1];
   if ($row[3] != null && $show_meta_description == 1)
    $res[$i]['fulltxt'] = $row[3];
   else 
    $res[$i]['fulltxt'] = $row[4];
  
   $res[$i]['size'] = $row[5];
   $res[$i]['weight'] = $result_array[$row[0]];
   $i++;
  }
if(count($res)!=0)
  
    usort($res, "cmp");
   
   
                                           echo mysql_error();
  $res['maxweight'] = $maxweight;
  $res['results'] = $results;
  return $res;
 /**/
 }
?> 


 
---------------------------------
Sponsored Link

Mortgage rates near 39yr lows. $510,000 Mortgage for $1,698/mo -   Calculate new house payme
nt
Thread:
Asif Qureshi
Asif Qureshi
Chris

Privacy Policy | Email Opt-out | Feedback | Syndication
© 2004 ActiveState, a division of Sophos All rights reserved