motor de búsqueda en el script php

  • sohang
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Mar 30, 2009
  • Mensajes: 6
  • Status: Offline

Nota Marzo 30th, 2009, 11:39 pm

Tengo problema en la creación de motores de búsqueda con PHP

i got error!

por favor ayuda

Código: [ Select ]
<?php
//This is a working script
//Make sure to go through it and edit database table filelds that you are seraching
//This script assumes you are searching 3 fields
$hostname_logon = "localhost" ;  
$database_logon = "FAQn" ;  
$username_logon = "root" ;  
$password_logon = "" ;  
//open database connection
 $connections = mysql_connect($hostname_logon, $username_logon, $password_logon) or die ( "Unabale to connect to the database" );
 //select database
 mysql_select_db($database_logon) or die ( "Unable to select database!" );
 
//specify how many results to display per page
$limit = 10;
 
// Get the search variable from URL
  $var = @$_GET['q'] ;
//trim whitespace from the stored variable
  $trimmed = trim($var);
//separate key-phrases into keywords
  $trimmed_array = explode(" ",$trimmed);
 
// check for an empty string and display a message.
if ($trimmed == "") {
  $resultmsg =  "<p>Search Error</p><p>Please enter a search...</p>" ;
  }
 
// check for a search parameter
if (!isset($var)){
  $resultmsg =  "<p>Search Error</p><p>We don't seem to have a search parameter! </p>" ;
  }
// Build SQL Query for each keyword entered
foreach ($trimmed_array as $trimm){
     
// EDIT HERE and specify your table and field names for the SQL query
     $query = "SELECT * FROM que WHERE id LIKE \"%$trimm%\" OR cat_name LIKE  \"%$trimm%\" OR que LIKE \" %$trimm%\"  OR datepos LIKE  \"%$trimm%\" ORDER BY field1   DESC" ;
     // Execute the query to  get number of rows that contain search kewords
     $numresults=mysql_query ($query);
     $row_num_links_main =mysql_num_rows ($numresults);
 
     // next determine if 's' has been passed to script, if not use 0.
     // 's' is a variable that gets set as we navigate the search result pages.
     if (empty($s)) {
         $s=0;
     }
 
      // now let's get results.
      $query .= " LIMIT $s,$limit" ;
      $numresults = mysql_query ($query) or die ( "Couldn't execute query" );
      $row= mysql_fetch_array ($numresults);
 
      //store record id of every item that contains the keyword in the array we need to do this to avoid display of duplicate search result.
      do{
 //EDIT HERE and specify your field name that is primary key
          $adid_array[] = $row[ 'fieldid' ];
      }while( $row= mysql_fetch_array($numresults));
 } //end foreach
 
if($row_num_links_main == 0 && $row_set_num == 0){
   $resultmsg = "<p>Search results for:" . $trimmed  ."</p><p>Sorry, your search returned zero results</p>" ;
}
   //delete duplicate record id's from the array. To do this we will use array_unique function
   $tmparr = array_unique($adid_array);
   $i=0;
   foreach ($tmparr as $v) {
       $newarr[$i] = $v;
       $i++;
   }
 
// now you can display the results returned. But first we will display the search form on the top of the page
?>
 
<form action="search.php" method="get" name="search">
  <div align="center">
      <input name="q" type="text" value=" <?php echo $q; ?> " size="15">
      <input name="search" type="submit" value="Search">
  </div>
</form>
 
<?php
// display what the person searched for.
 if( isset ($resultmsg)){
  echo $resultmsg;
  exit();
 }else{
  echo "Search results for: " . $var;
 }
 
foreach($newarr as $value){
 
// EDIT HERE and specify your table and field names for the SQL query
$query_value = "SELECT * FROM qye WHERE fieldid = '$value'";
 $num_value=mysql_query ($query_value);
 $row_linkcat= mysql_fetch_array ($num_value);
 $row_num_links= mysql_num_rows ($num_value);
 
//now let's make the keywods bold. To do that we will use preg_replace function.
//EDIT parts of the lines below that have fields names like $row_linkcat[ 'field1' ]
//This script assumes you are searching only 3 fields. If you are searching more fileds make sure that add appropriate line.
  $titlehigh = preg_replace ( "'($var)'si" , "<b></b>" , $row_linkcat[ 'field1' ] );
  $linkhigh = preg_replace ( "'($var)'si" , "<b></b>" , $row_linkcat[ 'field2' ] );
  $linkdesc = preg_replace ( "'($var)'si" , "<b></b>" , $row_linkcat[ 'field3' ] );
 
foreach($trimmed_array as $trimm){
    if($trimm != 'b' ){
//IF you added more fields to search make sure to add them below as well.
        $titlehigh = preg_replace( "'($trimm)'si" ,  "<b></b>" , $titlehigh);
        $linkhigh = preg_replace( "'($trimm)'si" , "<b></b>" , $linkhigh);
        $linkdesc = preg_replace( "'($trimm)'si" ,  "<b></b>" , $linkdesc);
     }
//end highlight
 
?>
 <p>
<?php echo $titlehigh; ?><br>
<?php echo $linkhigh; ?><br>
<?php echo $linkhigh; ?>
</p>
 
<?php
}   //end foreach $trimmed_array
   if($row_num_links_main > $limit){
   // next we need to do the links to other search result pages
      if ($s>=1) { // do not display previous link if 's' is '0'
        $prevs=($s-$limit);
         echo "<div align='left'><a href='$PHP_SELF?s=$prevs&q=$var&catid=$catid'>Previous " .$limit. "</a></div>";
      }
     // check to see if last page
     $slimit =$s+$limit;
       if (!($slimit >= $row_num_links_main) && $row_num_links_main!=1) {
     // not last page so display next link
          $n=$s+$limit;
           echo "<div align='right'><a href='$PHP_SELF?s=$n&q=$var&catid=$catid'>Next " .$limit. "</a></div>";
        }
    }
}  //end foreach $newarr
?>
  1. <?php
  2. //This is a working script
  3. //Make sure to go through it and edit database table filelds that you are seraching
  4. //This script assumes you are searching 3 fields
  5. $hostname_logon = "localhost" ;  
  6. $database_logon = "FAQn" ;  
  7. $username_logon = "root" ;  
  8. $password_logon = "" ;  
  9. //open database connection
  10.  $connections = mysql_connect($hostname_logon, $username_logon, $password_logon) or die ( "Unabale to connect to the database" );
  11.  //select database
  12.  mysql_select_db($database_logon) or die ( "Unable to select database!" );
  13.  
  14. //specify how many results to display per page
  15. $limit = 10;
  16.  
  17. // Get the search variable from URL
  18.   $var = @$_GET['q'] ;
  19. //trim whitespace from the stored variable
  20.   $trimmed = trim($var);
  21. //separate key-phrases into keywords
  22.   $trimmed_array = explode(" ",$trimmed);
  23.  
  24. // check for an empty string and display a message.
  25. if ($trimmed == "") {
  26.   $resultmsg =  "<p>Search Error</p><p>Please enter a search...</p>" ;
  27.   }
  28.  
  29. // check for a search parameter
  30. if (!isset($var)){
  31.   $resultmsg =  "<p>Search Error</p><p>We don't seem to have a search parameter! </p>" ;
  32.   }
  33. // Build SQL Query for each keyword entered
  34. foreach ($trimmed_array as $trimm){
  35.      
  36. // EDIT HERE and specify your table and field names for the SQL query
  37.      $query = "SELECT * FROM que WHERE id LIKE \"%$trimm%\" OR cat_name LIKE  \"%$trimm%\" OR que LIKE \" %$trimm%\"  OR datepos LIKE  \"%$trimm%\" ORDER BY field1   DESC" ;
  38.      // Execute the query to  get number of rows that contain search kewords
  39.      $numresults=mysql_query ($query);
  40.      $row_num_links_main =mysql_num_rows ($numresults);
  41.  
  42.      // next determine if 's' has been passed to script, if not use 0.
  43.      // 's' is a variable that gets set as we navigate the search result pages.
  44.      if (empty($s)) {
  45.          $s=0;
  46.      }
  47.  
  48.       // now let's get results.
  49.       $query .= " LIMIT $s,$limit" ;
  50.       $numresults = mysql_query ($query) or die ( "Couldn't execute query" );
  51.       $row= mysql_fetch_array ($numresults);
  52.  
  53.       //store record id of every item that contains the keyword in the array we need to do this to avoid display of duplicate search result.
  54.       do{
  55.  //EDIT HERE and specify your field name that is primary key
  56.           $adid_array[] = $row[ 'fieldid' ];
  57.       }while( $row= mysql_fetch_array($numresults));
  58.  } //end foreach
  59.  
  60. if($row_num_links_main == 0 && $row_set_num == 0){
  61.    $resultmsg = "<p>Search results for:" . $trimmed  ."</p><p>Sorry, your search returned zero results</p>" ;
  62. }
  63.    //delete duplicate record id's from the array. To do this we will use array_unique function
  64.    $tmparr = array_unique($adid_array);
  65.    $i=0;
  66.    foreach ($tmparr as $v) {
  67.        $newarr[$i] = $v;
  68.        $i++;
  69.    }
  70.  
  71. // now you can display the results returned. But first we will display the search form on the top of the page
  72. ?>
  73.  
  74. <form action="search.php" method="get" name="search">
  75.   <div align="center">
  76.       <input name="q" type="text" value=" <?php echo $q; ?> " size="15">
  77.       <input name="search" type="submit" value="Search">
  78.   </div>
  79. </form>
  80.  
  81. <?php
  82. // display what the person searched for.
  83.  if( isset ($resultmsg)){
  84.   echo $resultmsg;
  85.   exit();
  86.  }else{
  87.   echo "Search results for: " . $var;
  88.  }
  89.  
  90. foreach($newarr as $value){
  91.  
  92. // EDIT HERE and specify your table and field names for the SQL query
  93. $query_value = "SELECT * FROM qye WHERE fieldid = '$value'";
  94.  $num_value=mysql_query ($query_value);
  95.  $row_linkcat= mysql_fetch_array ($num_value);
  96.  $row_num_links= mysql_num_rows ($num_value);
  97.  
  98. //now let's make the keywods bold. To do that we will use preg_replace function.
  99. //EDIT parts of the lines below that have fields names like $row_linkcat[ 'field1' ]
  100. //This script assumes you are searching only 3 fields. If you are searching more fileds make sure that add appropriate line.
  101.   $titlehigh = preg_replace ( "'($var)'si" , "<b></b>" , $row_linkcat[ 'field1' ] );
  102.   $linkhigh = preg_replace ( "'($var)'si" , "<b></b>" , $row_linkcat[ 'field2' ] );
  103.   $linkdesc = preg_replace ( "'($var)'si" , "<b></b>" , $row_linkcat[ 'field3' ] );
  104.  
  105. foreach($trimmed_array as $trimm){
  106.     if($trimm != 'b' ){
  107. //IF you added more fields to search make sure to add them below as well.
  108.         $titlehigh = preg_replace( "'($trimm)'si" ,  "<b></b>" , $titlehigh);
  109.         $linkhigh = preg_replace( "'($trimm)'si" , "<b></b>" , $linkhigh);
  110.         $linkdesc = preg_replace( "'($trimm)'si" ,  "<b></b>" , $linkdesc);
  111.      }
  112. //end highlight
  113.  
  114. ?>
  115.  <p>
  116. <?php echo $titlehigh; ?><br>
  117. <?php echo $linkhigh; ?><br>
  118. <?php echo $linkhigh; ?>
  119. </p>
  120.  
  121. <?php
  122. }   //end foreach $trimmed_array
  123.    if($row_num_links_main > $limit){
  124.    // next we need to do the links to other search result pages
  125.       if ($s>=1) { // do not display previous link if 's' is '0'
  126.         $prevs=($s-$limit);
  127.          echo "<div align='left'><a href='$PHP_SELF?s=$prevs&q=$var&catid=$catid'>Previous " .$limit. "</a></div>";
  128.       }
  129.      // check to see if last page
  130.      $slimit =$s+$limit;
  131.        if (!($slimit >= $row_num_links_main) && $row_num_links_main!=1) {
  132.      // not last page so display next link
  133.           $n=$s+$limit;
  134.            echo "<div align='right'><a href='$PHP_SELF?s=$n&q=$var&catid=$catid'>Next " .$limit. "</a></div>";
  135.         }
  136.     }
  137. }  //end foreach $newarr
  138. ?>




Tengo este error masaje

Warning: mysql_query (): suministrado argumento no es un recurso válido del resultado de MySQL en C: \ xampp \ htdocs \ FAQn \ extra.php on line 146
Couldnt ejecutar la consulta
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Marzo 30th, 2009, 11:39 pm

  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de Usuario
  • Registrado: Jul 25, 2005
  • Mensajes: 2735
  • Loc: Nashville, TN
  • Status: Offline

Nota Marzo 31st, 2009, 4:49 pm

Trate de poner algunos | | muere allí, porque usted es la ejecución de una consulta thats algún defecto antes de intentar recuperar el número de filas resultado.
I'd love to change the world, but they won't give me the source code.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8212
  • Loc: USA
  • Status: Offline

Nota Marzo 31st, 2009, 7:40 pm

UPSGuy escribió:
Trate de poner algunos | | muere ahí porque se está ejecutando una consulta en algún lugar thats no antes de intentar recuperar el número de filas de resultados.

Lo que está hablando es de poner or die (mysql_error ()); inmediatamente después de mysql_query ($ sql) . Así que sobre todo, su mysql_query (); funciones se vería como...
Código: [ Select ]
$result = mysql_query($sql) or die(mysql_error());

Esta es una forma rápida de solucionar a través del problema.
"Bring forth therefore fruits meet for repentance:" Matthew 3:8

Publicar Información

  • Total de mensajes en este tema: 3 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 160 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC