Crear motor de búsqueda página web

Tengo un problema lo que pasa es que quiero realizar un motor de búsqueda para mi página, el código que tengo es el siguiente:
HTML (index.php)
<body>
<FORM METHOD=POST ACTION="buscar.php">
<input type="text" name="busqueda" />
<input type="submit" name="button" id="button" value="Enviar" />
</FORM>
</body>
PHP (buscar.php)
<?php
//cadena de conexion
mysql_connect("localhost","root","");
// DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
mysql_select_db("test");
if (!empty($_POST['busqueda'])){
$busqueda=$_POST['busqueda'];
//CUENTA EL NUMERO DE PALABRAS
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if ($numero==1) {
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
$cadbusca="SELECT * FROM articulos WHERE REFERENCIA LIKE '%$busqueda%' OR DESARROLLO LIKE '%$busqueda%' OR TITULO LIKE '%$busqueda%'";
} elseif ($numero>1) {
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
//busqueda de frases con mas de una palabra y un algoritmo especializado
$cadbusca="SELECT *, MATCH ( TITULO, DESARROLLO, REFERENCIA )
AGAINST ( '$busqueda' ) AS Score FROM articulos WHERE
MATCH ( TITULO, DESARROLLO, REFERENCIA ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result=mysql_query($cadbusca) or die (mysql_error());
while ( $row = mysql_fetch_object ($result)){
echo $row ->REFERENCIA."<br>"; //Aqui es lo que no sé si este bien
echo $row ->TITULO."<br>"; //Aqui es lo que no sé si este bien
echo $row ->DESARROLLO."<br>"; //Aqui es lo que no sé si este bien
echo "Encontro $numero registro(s)";
}
}
¿?>
Mi base de datos se llama test y cuenta con estos campos:
Referencia - int
Titulo - varchar (100)
Desarrollo - text
Autor – varchar (50)
Al hacer una consulta de un campo que si existe me manda estos errores:
Notice: Undefined property: stdClass::$REFERENCIA in C:\wamp\www\buscador2a\buscar.php on line 25
Notice: Undefined property: stdClass::$TITULO in C:\wamp\www\buscador2a\buscar.php on line 26
Notice: Undefined property: stdClass::$DESARROLLO in C:\wamp\www\buscador2a\buscar.php on line 27
Y cuando no existe no me manda nada pero eso significa que si no encontró nada, por esto no hay problema.
Espero me puedan decir que es lo que está mal.

1 Respuesta

Respuesta
1
Te está avisando del nombre de los campos, ¿es correcto en la tabla?
Si de hecho ese error solo lo manda cuando hago una consulta de algo que si existe
Te está hablado de las propertys... para simplificar y buscar una solución, empieza con una consulta más sencilla y ves aumentando la dificultad, es la forma de encontrar el error. Entiende que no puedo hacer muchas pruebas sin tener tu Bd...
Muchas gracias ya lo logre hacer de hecho si había seguido tu consejo de empezar por búsquedas sencillas, gracias.
Aquí dejo el código por si a alguien le funciona:
<?php
//cadena de conexion
mysql_connect("localhost","root","");
// DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
mysql_select_db("test");
if (!empty($_POST['busqueda'])){
$busqueda=$_POST['busqueda'];
//CUENTA EL NUMERO DE PALABRAS
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if ($numero==1) {
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
$cadbusca="SELECT * FROM articulos WHERE REFERENCIA LIKE '%$busqueda%' OR DESARROLLO LIKE '%$busqueda%' OR TITULO LIKE '%$busqueda%'";
} elseif ($numero>1) {
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
//busqueda de frases con mas de una palabra y un algoritmo especializado
$cadbusca="SELECT *, MATCH ( TITULO, DESARROLLO, REFERENCIA )
AGAINST ( '$busqueda' ) AS Score FROM articulos WHERE
MATCH ( TITULO, DESARROLLO, REFERENCIA ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result=mysql_query($cadbusca) or die (mysql_error());
while ( $row = mysql_fetch_assoc ($result)){
echo $row['REFERENCIA']."<br>";
echo $row['TITULO']."<br>";
echo $row['DESARROLLO']."<br>";
}
/* ESTA ES OTRA FORMA
while ( $row = mysql_fetch_array ($result)){
echo $row[0]."<br>";
echo $row[1]."<br>";
echo $row[2]."<br>";
} */
mysql_free_result($result); // Liberar la memoria
}
?>
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas