Categoria: Programacion Tema: Php Titulo: Buscador para nuestra pagina
Fecha del Tema: 2012-04-16 18:38:43Este buscador esta diseñado para que trabaje con una base de datos. Primero crearemos un fichero donde pondremos nuestro form: por ej. index.php <form name="buscar" action="buscador.php" method="post"> <font face=`Ubuntu,sans-serif` size=`2` color="white"> Buscar: </font><input style="font-size:11px; margin:0px;" class="buscar" type="text" size="28" maxlength="50" value="<?php echo $_POST[`frase`]?>" name="frase" /> <input style="width:30px;height:22px;" type="submit" name="buscar" value="?" /> </form> luego crearemos otro que se llamara buscador.php que es donde haremos nuestra select y el que nos mostrara si hemos encontrado la frase buscada. <?php $bdservidor = "localhost";//dominio o url de nuestro servidor de bd $bdunombre = "nombre";//nombre con el cual hacemos nos conectamos a la bd $bdpass = "contraseña";//contraseña de conexión $bdnombre = "bd";//nombre de nuestra bd $conexion=mysql_connect("$bdservidor","$bdunombre","$bdpass"); $db=mysql_select_db("$bdnombre",$conexion); $frase = addslashes($_POST[`frase`]);//es la variable que va a recibir //nuestra frase $piesasfrase = explode(" ", $frase); $tamanofrase = sizeof($piesasfrase); // hacemos la consulta de busqueda // ver explicación mas abajo //Creamos una tabla que se llama Tema con los campos titulo y //contenido. //tendremos que crearle un indice full text a los campos donde busquemos //nuestra frase //ALTER TABLE Tema ADD FULLTEXT combinado(Titulo,Contenido); esto deberemos //de ponerlo por consola en nuestra bd sql $sqlBuscar = mysql_query("SELECT Titulo, Contenido, MATCH (Titulo, Contenido) AGAINST (`$frase` IN BOOLEAN MODE) AS coincidencias FROM Tema WHERE MATCH (Titulo, Contenido) AGAINST (`$frase` IN BOOLEAN MODE) ORDER BY coincidencias DESC", $conexion); $totalRows = mysql_num_rows($sqlBuscar); // Enviamos un mensaje // indicando la cantidad de resultados ($totalRows) // para la frase busada ($frase) if(!empty($totalRows)) { $total=$totalRows; echo stripslashes("<p>Su búsqueda arrojó <strong>$total</strong> resultados para <strong>$frase</strong></p><br>"); // mostramos los resultados $t=0; $m=0; for($i=0;$i<$total;$i++){ $row = mysql_fetch_array($sqlBuscar); if(round($row[`coincidencias`])){ ?>Titulo del tema: <font size=4 color="blue" face=`Ubuntu,sans-serif`><?php echo $row[`Titulo`]." ";?></font> (Coincidencias: <?php echo round($row[`coincidencias`]) .")<br>"; $pieces = explode(" ", $row[`Contenido`]); $tamano = sizeof($pieces); for($j=0;$j<$tamano;$j++){ $a=1; for($k=0;$k<$tamanofrase;$k++){ if (strcasecmp($pieces[$j], $piesasfrase[$k]) == 0) { $a=0; break;} else { $a=1; } } if($a==0) { echo "<strong><b><u> $pieces[$j] </u></b></strong>"; } else { echo " $pieces[$j] "; } } ?><br><br><?php $m=$m+1; mysql_data_seek($sqlBusca,$t); } } } // si se ha enviado vacio el formulario // mostramos un mensaje del tipo Oops...! elseif(empty($_POST[`frase`])){ echo "Debe introducir una palabra o frase."; } // si no hay resultados // //otro mensaje del tipo Oops...! elseif($totalRows == 0 and $totalRowss == 0){ echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>"); } else echo stripslashes("Su busqueda no arrojo resultados"); ?> Con esto cerraríamos nuestro fichero buscar.php, al ingresar una frase en nuestro form debería buscarla y si esta mostrarla en caso contrario lanzar una mensaje como que no ha encontrado nuestra frase.
Este buscador esta diseñado para que trabaje con una base de datos. Primero crearemos un fichero donde pondremos nuestro form: por ej. index.php <form name="buscar" action="buscador.php" method="post"> <font face=`Ubuntu,sans-serif` size=`2` color="white"> Buscar: </font><input style="font-size:11px; margin:0px;" class="buscar" type="text" size="28" maxlength="50" value="<?php echo $_POST[`frase`]?>" name="frase" /> <input style="width:30px;height:22px;" type="submit" name="buscar" value="?" /> </form> luego crearemos otro que se llamara buscador.php que es donde haremos nuestra select y el que nos mostrara si hemos encontrado la frase buscada. <?php $bdservidor = "localhost";//dominio o url de nuestro servidor de bd $bdunombre = "nombre";//nombre con el cual hacemos nos conectamos a la bd $bdpass = "contraseña";//contraseña de conexión $bdnombre = "bd";//nombre de nuestra bd $conexion=mysql_connect("$bdservidor","$bdunombre","$bdpass"); $db=mysql_select_db("$bdnombre",$conexion); $frase = addslashes($_POST[`frase`]);//es la variable que va a recibir //nuestra frase $piesasfrase = explode(" ", $frase); $tamanofrase = sizeof($piesasfrase); // hacemos la consulta de busqueda // ver explicación mas abajo //Creamos una tabla que se llama Tema con los campos titulo y //contenido. //tendremos que crearle un indice full text a los campos donde busquemos //nuestra frase //ALTER TABLE Tema ADD FULLTEXT combinado(Titulo,Contenido); esto deberemos //de ponerlo por consola en nuestra bd sql $sqlBuscar = mysql_query("SELECT Titulo, Contenido, MATCH (Titulo, Contenido) AGAINST (`$frase` IN BOOLEAN MODE) AS coincidencias FROM Tema WHERE MATCH (Titulo, Contenido) AGAINST (`$frase` IN BOOLEAN MODE) ORDER BY coincidencias DESC", $conexion); $totalRows = mysql_num_rows($sqlBuscar); // Enviamos un mensaje // indicando la cantidad de resultados ($totalRows) // para la frase busada ($frase) if(!empty($totalRows)) { $total=$totalRows; echo stripslashes("<p>Su búsqueda arrojó <strong>$total</strong> resultados para <strong>$frase</strong></p><br>"); // mostramos los resultados $t=0; $m=0; for($i=0;$i<$total;$i++){ $row = mysql_fetch_array($sqlBuscar); if(round($row[`coincidencias`])){ ?>Titulo del tema: <font size=4 color="blue" face=`Ubuntu,sans-serif`><?php echo $row[`Titulo`]." ";?></font> (Coincidencias: <?php echo round($row[`coincidencias`]) .")<br>"; $pieces = explode(" ", $row[`Contenido`]); $tamano = sizeof($pieces); for($j=0;$j<$tamano;$j++){ $a=1; for($k=0;$k<$tamanofrase;$k++){ if (strcasecmp($pieces[$j], $piesasfrase[$k]) == 0) { $a=0; break;} else { $a=1; } } if($a==0) { echo "<strong><b><u> $pieces[$j] </u></b></strong>"; } else { echo " $pieces[$j] "; } } ?><br><br><?php $m=$m+1; mysql_data_seek($sqlBusca,$t); } } } // si se ha enviado vacio el formulario // mostramos un mensaje del tipo Oops...! elseif(empty($_POST[`frase`])){ echo "Debe introducir una palabra o frase."; } // si no hay resultados // //otro mensaje del tipo Oops...! elseif($totalRows == 0 and $totalRowss == 0){ echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>"); } else echo stripslashes("Su busqueda no arrojo resultados"); ?> Con esto cerraríamos nuestro fichero buscar.php, al ingresar una frase en nuestro form debería buscarla y si esta mostrarla en caso contrario lanzar una mensaje como que no ha encontrado nuestra frase.