Comunidad de diseño web y desarrollo en internet online

autocomplete que busque por frase

Citar            
MensajeEscrito el 05 Abr 2011 11:08 pm
buenas tardes, estoy haciendo un autocomplete, tome un codigo de jquery y funciona perfecto, pero solo busca por la primera letra ingresada en el buscador, aqui esta el archivo donde se configura esa parte y ademas donde se conecta a la base de datos.
bueno mi pregunta es como puedo agregar para que busca por la frase por ejemplo United states, que busque tambien si ingreso states, ademas como puedo agregar otro parametro a $result , aqui solo agrego producto.
bueno espero haberme explicado bien.
gracias







<?php

// PHP5 Implementation - uses MySQLi.
// mysql('localhost', 'root', '', 'database');
$db = new mysqli('localhost', 'root' , 'datos');

if(!$db) {
// Show error if we cannot connect.
echo 'ERROR: Could not connect to the database.';
} else {
// Is there a posted query string?
if(isset($_POST['queryString'])) {
$queryString = $db->real_escape_string($_POST['queryString']);

// Is the string length greater than 0?

if(strlen($queryString) >0) {
// Run the query: We use LIKE '$queryString%'
// The percentage sign is a wild-card, in my example of countries it works like this...
// $queryString = 'Uni';
// Returned data = 'United States, United Kindom';

// YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
// eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10

$query = $db->query("SELECT producto FROM tabla WHERE producto LIKE '$queryString%' LIMIT 10");
if($query) {
// While there are results loop through them - fetching an Object (i like PHP5 btw!).
while ($result = $query ->fetch_object()) {
// Format the results, im using <li> for the list, you can change it.
// The onClick function fills the textbox with the result.

// YOU MUST CHANGE: $result->value to $result->your_colum
echo '<a href="http://www.dominio.com/autocomplete.php?search='.$result->producto.'" style="z-index:0;margin-top:-20px" onClick="fill(\''.$result->producto.'\');">'.$result->producto.'</a><br>';
}
} else {
echo 'ERROR: There was a problem with the query.';
}
} else {
// Dont do anything.
} // There is a queryString.
} else {
echo 'There should be no direct access to this script!';
}
}
?>

Por nihao

46 de clabLevel



 

msie8
Citar            
MensajeEscrito el 06 Abr 2011 03:08 am
creo que modificamdo la consulta SQL

Código PHP :

$query = $db->query("SELECT producto FROM tabla WHERE producto LIKE '$queryString%' LIMIT 10");

pero tienes que procesar tu queryString tienes que divir tu frase por el numero de palabbraas que quieras por ejemplo LIKE usa comodines de porcentaje "%" para indicar que sea cualquier tipo de caracter(es) por ejemplo para buscar united o states como dices te dejo un jemplo en sql
[sql]
SELECT producto FROM tabla WHERE producto LIKE '%united%' OR producto LIKE '%states%' LIMIT 10
[/sql]
mira que uso comodines a los extremos

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Abr 2011 03:59 pm
ok, funciona perfecto
separé las frases asi ;
$query = $db->query("SELECT producto FROM tabla WHERE producto LIKE '%$queryString%' OR producto LIKE '$queryString%' LIMIT 10");

funciona perfecto, pero ahora quiero agregar otra columna (precio) a la busqueda ej:


$query = $db->query("SELECT producto, precio FROM tabla WHERE producto LIKE '%$queryString%' OR producto LIKE '$queryString%' OR precio LIKE '%$queryString%' OR precio LIKE '$queryString%' LIMIT 10");


lo que escribi arriba sobre el precio esta bien asi?
y respecto a lo que sigue, como agrego la nueva columna precio abajo?

// YOU MUST CHANGE: $result->value to $result->your_colum
echo '<a href="http://www.dominio.com/autocomplete.php?search='.$result->producto.'" style="z-index:0;margin-top:-20px" onClick="fill(\''.$result->producto.'\');">'.$result->producto.'</a><br>';
}
} else {
echo 'ERROR: There was a problem with the query.';

Por nihao

46 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Abr 2011 04:10 pm
aumenta el campo de tu sql
SELECT producto FROM
ya que ahi solo estas pidiendo que te retorne la columna de producto para precio solo aumenta a
SELECT producto,precio FROM
y tu php estas usando que te retorne los resultados en un objeto los objetos tiene propieades
$result->producto.
eso te retorn el resultado de tu sql por logica para sacar precio solo llamas a su propiedad
$result->precio

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Abr 2011 05:36 pm
perfecto lo primero lo entiendo super bien, pero lo segundo respecto a los objetos, como los agrego ? en el mismo echo separados por comas? trate pero no me resulto, o con otro echo
asi?, funciona casi bien, lo unico es que me aparece lo que sale por ejemplo en la fila producto junto con lo que sale en la fila precio en el autocomplete

// YOU MUST CHANGE: $result->value to $result->your_colum
echo '<a href="http://www.dominio.com/autocomplete.php?search='.$result->producto.'" style="z-index:0;margin-top:-20px" onClick="fill(\''.$result->producto.'\');">'.$result->producto.'</a><br>';
echo '<a href="http://www.dominio.com/autocomplete.php?search='.$result->precio.'" style="z-index:0;margin-top:-20px" onClick="fill(\''.$result->precio.'\');">'.$result->precio.'</a><br>';
}




quedo atento , saludos

Por nihao

46 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Abr 2011 07:16 pm
en si tu variable $result es un objeto debido a que usas
$query ->fetch_object()[\b]
cada campo de la consulta obtenida ser un objeto que tengal las pripiedades en si haciendo esto
[b]SELECT producto,precio FROM

tu objeto tendra las propieadedes de
*$result->producto
*$result->precio
ahora para mostrar los resultados lo haces con echo claro pero tienes la opcion de concatenar

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Abr 2011 09:30 pm
no me resulta , salen los valores repetidos de la misma fila, como puedo hacer para que busque o por precio o por producto, no juntos.
lo del select lo arregle puse lo que me dijiste
(" SELECT producto,precio FROM tabla WHERE producto LIKE '%$queryString%' OR precio LIKE '%$queryString%' LIMIT 10 ");
PERO AL IMPIRMIR CON LOS ECHO, ME SALE MAL
// YOU MUST CHANGE: $result->value to $result->your_colum
echo '<a href="http://www.dominio.com/autocomplete.php?search='.$result->producto.'" style="z-index:0;margin-top:-20px" onClick="fill(\''.$result->producto.'\');">'.$result->producto.'</a><br>';
echo '<a href="http://www.dominio.com/autocomplete.php?search='.$result->precio.'" style="z-index:0;margin-top:-20px" onClick="fill(\''.$result->precio.'\');">'.$result->precio.'</a><br>';
}

ALGUNA IDEA DE LO QUE ESTOY HACIENDO MAL?

Por nihao

46 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Abr 2011 01:38 am
que tienes en la variable $queryString? loq ue te puse de ejemplo mas arriab es por mi cosutmbre de spanglish
a lo que me referia como ejemplo era

Código PHP :

$frase_completa = $_POST['nombre_del_campo_de_texto'];
//obtenemos las palabras separando por el espacio y lo limitamos en 2
$palabra_busqueda = explode(' ',$frase_completa,2);
//precio vendria a ser un campo nuevo
$precio = $_POST['precio'];
/*
aca pones el resto de tus procesos
*/

$query = $db->query("SELECT producto, precio FROM tabla WHERE producto LIKE '%$palabra_busqueda[0]%' OR producto LIKE '%$palabra_busqueda[1]%' OR precio LIKE '%$precio%' LIMIT 10");

tienes que tomar en cuenta el proceso de LIKE es eficiente cuando se trata de campos del tipo cadena ya apra campos numericos es comveniente usar los operadores de menor y mayor o la funcion BETWEN de SQL

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 11 Abr 2011 02:07 pm
perfecto, con eso no hay problema, me arroja los resultados bien, el problema es como hacerlo con los objetos abajo en los echos
eso no me resulta, un ejemplo si arriba al principiop tenia solo SELECT producto WHERE...
y despues agregue otro campo, ejemplo precio, entocnes arriba quedaria SELECT producto, precio WHERE....
entocnes mi pregunta respecto a los objetos como agrego cuando tengo mas de un objeto en los echos: asi en el ejemplo de abajo solo tengo 1 objeto que es producto, ahora tengo que agregar el objeto precio, como se agrega dentro de ese mismo echo u en otro echo.
esa es mi duda.
echo '<a href="http://www.dominio.com/autocomplete.php?search='.$result->producto.'" style="z-index:0;margin-top:-20px" onClick="fill(\''.$result->producto.'\');">'.$result->producto.'</a><br>';



saludos

Por nihao

46 de clabLevel



 

msie8
Citar            
MensajeEscrito el 11 Abr 2011 04:05 pm

Código PHP :

<?php echo $result->precio; ?>

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.