Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Problemas con el buscador en tiempo real AJAX, PHP

Buenas,

Antes que nada, queria decir que el formateo de GetSQLValueString la tengo en un archivo funciones que lo tengo ligado al archivo conexion.php

Despues tengo los siguientes archivos.

res_buscador.php :
<?php require_once('../Connections/conexion.php'); ?>
<?php 

//Recogemos la cadena
$busqueda=$_POST['cadena'];

//Aquí hacer la consulta para la busqueda con LIKE $busqueda
$query = sprintf("SELECT * FROM posts WHERE titulo,portada LIKE %s", 
        GetSQLValueString("%" . $busqueda . "%", "text")); //Función GetSQLValueString al fina del tema


?>
buscador.php :
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
	function buscar_ajax(cadena){
		$.ajax({
		type: 'POST',
		url: 'buscador.php',
		data: 'cadena=' + cadena,
		success: function(respuesta) {
			//Copiamos el resultado en #mostrar
			$('#mostrar').html(respuesta);
	   }
	});
	}
</script>
<form id="form1" name="form1" method="get" action="<?php echo $urlWeb; ?>page/resultados.php">
 <input name="buscar" type="text" onkeyup="buscar_ajax(this.value);" class="barrabuscar" placeholder="Buscar.." id="buscar" size="32" />
 <input type="submit" name="button" class="btnbuscar" id="buscar" value="" />
</form>
<div id="mostrar">
	<?php 
	//Esto se pega en la div #mostrar
echo $busqueda;
?>
</div>
Salu2
0
Puntos
2975
Visitas
11
Resp
Por valentinchiflu hace 102 meses
Principiante
Respuesta #1
hola, esta explicado en un tema muy reciente https://datoweb.com/post/2514/mostrar-resultados-de-busqueda-con-php

salu2
0
Puntos
Por alber hace 102 meses
Administrador
Respuesta #2
He hecho la consulta a la base de datos pero sigue saliendo me: Undefined variable: busqueda
0
Puntos
Por valentinchiflu hace 102 meses
Principiante
Respuesta #3
a ver, con poner solo esto:
//Aquí hacer la consulta para la busqueda con LIKE $busqueda
$query = sprintf("SELECT * FROM posts WHERE titulo,portada LIKE %s", 
        GetSQLValueString("%" . $busqueda . "%", "text")); //Función GetSQLValueString al fina del tema
no basta, obviamente es el ejemplo de como ejecutar la consulta ademas estas usando una coma titulo,portada y es con un punto es decir titulo.portada

para sacar los resultados tienes que hacer algo como esto:
<?php require_once('../Connections/conexion.php');

$busqueda=$_POST['cadena'];

mysql_select_db($database_conexion, $conexion);
$query_buscar = sprintf("SELECT * FROM posts WHERE titulo LIKE %s", 
        GetSQLValueString("%" . $busqueda . "%", "text"));

$buscar = mysql_query($query_buscar, $conexion) or die(mysql_error());
$row_buscar = mysql_fetch_assoc($buscar);
$totalRows_buscar = mysql_num_rows($buscar);


if($totalRows_buscar!=''){
do {
  echo $row_buscar['titulo'].'<br>';
} while($row_buscar = mysql_fetch_assoc($buscar));
} else echo 'No hay resultados';


mysql_free_result($buscar);

?>
en realidad ya estaba solucionado en el otro tema...
0
Puntos
Por alber hace 102 meses
Administrador
Respuesta #4
He hecho la consulta como en el otro tema igual como en este ejemplo que tu lo has hecho y he quitado lo de portada para a ver si era eso el fallo, y sigue dandome ese error.
0
Puntos
Por valentinchiflu hace 102 meses
Principiante
Respuesta #5
ok, copia y pega aquí el error que te imprime ;)
0
Puntos
Por alber hace 102 meses
Administrador
Respuesta #6
Valentin utiliza los codigos del post que te comenta alber, con lo que me explico ami ahi me funciono de lujo.
;)
0
Puntos
Por zapikero hace 102 meses
Avanzado Sitio web
Respuesta #7

Notice: Undefined variable: busqueda inC:\xampp\htdocs\pelisvali\inc\buscador.phpon line 21
0
Puntos
Por valentinchiflu hace 102 meses
Principiante
Respuesta #8
Según he visto los resultados me los está sacando bien, pero si refresco la pagina sin escribir nada, me sale ese error, pero si escribo en el campo de texto desaparece el error y sale bien..
Lo seguire intentando a ver donde estara el fallo.

Gracias.
0
Puntos
Por valentinchiflu hace 102 meses
Principiante
Respuesta #9
vale, ahora por toooodo el código del fichero buscador.php
0
Puntos
Por alber hace 102 meses
Administrador
Respuesta #10
fichero buscador:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
	function buscar_ajax(cadena){
		$.ajax({
		type: 'POST',
		url: 'inc/res_buscar.php',
		data: 'cadena=' + cadena,
		success: function(respuesta) {
			//Copiamos el resultado en #mostrar
			$('#mostrar').html(respuesta);
	   }
	});
	}
</script>
<form id="form1" name="form1" method="get" action="<?php echo $urlWeb; ?>page/resultados.php">
 <input name="buscar" type="text" onkeyup="buscar_ajax(this.value);" class="barrabuscar" placeholder="Buscar.." id="buscar" size="32" />
 <input type="submit" name="button" class="btnbuscar" id="buscar" value="" />
</form>
<div id="mostrar">
	<?php
echo $busqueda;
?>
</div>
fichero res_buscar.php
<?php require_once('../Connections/conexion.php'); ?>
<?php 

$busqueda=$_POST['cadena'];

mysql_select_db($database_conexion, $conexion);
$query_buscarReal = sprintf("SELECT * FROM posts WHERE titulo LIKE %s", 
        GetSQLValueString("%" . $busqueda . "%", "text"));

$buscarReal = mysql_query($query_buscarReal, $conexion) or die(mysql_error());
$row_buscarReal = mysql_fetch_assoc($buscarReal);
$totalRows_buscarReal = mysql_num_rows($buscarReal);


if($totalRows_buscarReal !=''){
do {
  echo $row_buscarReal['titulo'].'<br>';
  echo $row_buscarReal['portada'].'<br>';
} while($row_buscarReal = mysql_fetch_assoc($buscarReal));
} else echo 'No hay resultados';


mysql_free_result($buscarReal);

?>
0
Puntos
Por valentinchiflu hace 102 meses
Principiante
Respuesta #11
por supuesto, es que esa pagina no se refresca solo esta preparada para recibir el parámetro de la busqueda, lo que tienes que hacer es no dejar entrar en caso de que el campo este vacio!

te pongo dos opciones la linea 5 y la 8, utiliza la que mas te interese y la otra la borrar:
<?php require_once('../Connections/conexion.php'); ?>
<?php 

//Si la cadena no existe no ejecutar
if(!isset($_POST['cadena'])) exit;

//Si la cadena no existe redireccionar
if(!isset($_POST['cadena'])) header('Location: http://tudominio.com');


$busqueda=$_POST['cadena'];

mysql_select_db($database_conexion, $conexion);
$query_buscarReal = sprintf("SELECT * FROM posts WHERE titulo LIKE %s", 
        GetSQLValueString("%" . $busqueda . "%", "text"));

$buscarReal = mysql_query($query_buscarReal, $conexion) or die(mysql_error());
$row_buscarReal = mysql_fetch_assoc($buscarReal);
$totalRows_buscarReal = mysql_num_rows($buscarReal);


if($totalRows_buscarReal !=''){
do {
  echo $row_buscarReal['titulo'].'<br>';
  echo $row_buscarReal['portada'].'<br>';
} while($row_buscarReal = mysql_fetch_assoc($buscarReal));
} else echo 'No hay resultados';


mysql_free_result($buscarReal);

?>
tema cerrado, salu2
0
Puntos
Por alber hace 102 meses
Administrador
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate