Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/09/2013, 21:29
ariel_buc
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 4 meses
Puntos: 0
Problema con buscador que resalta resultados

Hola necesitaba que me ayuden.
Mas abajo les muestro un código que obtuve en esta pagina [URL="http://www.forosdelweb.com/f18/remarcar-palabras-busqueda-487357/"]http://www.forosdelweb.com/f18/remarcar-palabras-busqueda-487357/[/URL].
El problema en mi código es que muestra la leyenda " Se han encontrado coincidencias para" pero después de la palabra "encontrado" tendria que mostrar los datos de la base de datos (<strong><?=$mostrar?></strong>) y despues de "para" tendria que mostrar la palabra ingresada en el formulario (<strong><?=$palabra?></strong>).
Lo he revisado varias veces pero no descubro porque no funciona correctamente.

Código PHP:
<?php 
    
require_once('Connections/MiSitio.php'); // Este archivo contiene los datos de conexión a la BD 
     
     // creamos una función que resaltará todas las palabras que coincidan con la búsqueda realizada 
    
if(!function_exists('str_ireplace')) { 
    function 
str_ireplace($search,$replace,$subject) { 
    
$search preg_quote($search"/"); 
    return 
preg_replace("/".$search."/i"$replace$subject); } } 
     
    function 
resaltar($palabra$texto) { 
        
$aux=$reemp=str_ireplace($palabra,'%s',$texto); 
        
$veces=substr_count($reemp,'%s'); 
        if(
$veces==0)return $texto
        
$palabras_originales=array(); 
        for(
$i=0;$i<$veces;$i++){ 
              
$palabras_originales[]='<strong>'.substr($texto,strpos($aux,'%s'),strlen($palabra)).'</strong>'
              
$aux=substr($aux,0,strpos($aux,'%s')).$palabra.substr($aux,strlen(substr($aux,0,strpos($aux,'%s')))+2); 
        } 
        return 
vsprintf($reemp,$palabras_originales); 
  }  
     
    
// iniciamos el proceso de búsqueda 
    
if (isset($_POST["buscar"])) { 
        if(
$_POST['palabra'] == '') { 
            echo 
"No has ingresado ninguna palabra a buscar <a href='javascript:history.back()'>Regresar</a>"
        }else { 
            
$tabla "videos"
            
$campo "titulo"
             
            
// quitamos cualquier código malicioso de $_POST['palabra'] 
            
$palabra stripslashes($_POST['palabra']); 
            
$palabra strip_tags($palabra); 
             
            
// hacemos la consulta a la base de datos según la palabra encontrada 
            
$query mysql_query("SELECT * FROM $tabla WHERE $campo LIKE '%".$palabra."%'"); 
            
$mostrar mysql_num_rows($query); // obtenemos la cantidad de coincidencias encontradas 
            
if(mysql_num_rows($query) == "0") { 
                echo 
"No hay coincidencias encontradas para <strong>".$palabra."</strong> <a href='javascript:history.back()'>Regresar</a>"
            }else { 
?> 
                Se han encontrado <strong><?=$mostrar?></strong> coincidencias para <strong><?=$palabra?></strong> 
<?php             
                
while($datos mysql_fetch_array($query)) {         
                    
$str $datos["titulo"]; 
                    
//$pal = array($palabra); 
?>             
                <ul> 
                    <li><?=resaltar($palabra$str)?></li> 
                </ul> 
<?php 
                

            } 
        } 
    }else { 
?> 
    <form action="Untitled-1.php" method="post"> 
        <input name="palabra" type="text" /> 
        <input name="buscar" type="submit" value="Enviar" /> 
    </form> 
<?php 
    

?>
Desde ya muchas gracias.