Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Busqueda en ajax en una base de datos Mysql

Estas en el tema de Busqueda en ajax en una base de datos Mysql en el foro de Frameworks JS en Foros del Web. Hola foreros. Tengo un problema que no consigo solucionar y por eso me dirijo a ustedes. Quiero realizar una busqueda a una tabla de una ...
  #1 (permalink)  
Antiguo 14/12/2007, 21:22
 
Fecha de Ingreso: noviembre-2006
Mensajes: 437
Antigüedad: 18 años
Puntos: 3
Busqueda en ajax en una base de datos Mysql

Hola foreros. Tengo un problema que no consigo solucionar y por eso me dirijo a ustedes. Quiero realizar una busqueda a una tabla de una base de datos con un criterio de busqueda y poder seleccionar el campo en el que quiro buscar. Me explico:
Teniendo una tabla con los campos id, nombre, apellidos, tengo que hacer un buscador que me permita escribir en un text el criterio de busqueda y en un select seleccionar el campo de la base de datos que quiero.

¿Como podria hacerlo?¿Sabeis de algun ejemplo?

He probado con lo siguiente pero sin resultado..
Buscador.php
Código PHP:
<?php
require('config.php');
require(
'include/conexion.php');
require(
'include/funciones.php');

$tabla="usuarios";
if(isset(
$_GET['campo'])){
$campo=$_GET['campo'];
}
else{
$campo="usuario";
}


if(isset(
$_GET['q']) and !eregi('^ *$',$_GET['q'])){
        
$q sql_quote($_GET['q']); //para ejecutar consulta
        
$busqueda htmlentities($q); //para mostrar en pantalla

        
$sqlStr "SELECT * FROM ".$tabla." WHERE ".$campo." LIKE '%$q%'";
        
$sqlStrAux "SELECT count(*) as total FROM ".$tabla." WHERE ".$campo." LIKE '%$q%'";
    }else{
        
$sqlStr "SELECT * FROM ".$tabla;
        
$sqlStrAux "SELECT count(*) as total FROM ".$tabla;
    }

$aux mysql_fetch_assoc(mysql_query($sqlStrAux,$link));
$query mysql_query($sqlStr$link);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Buscador en AJAX</title>
<script src="include/buscador.js" type="text/javascript" language="javascript"></script>
</head>

<body>
    <form action="index.php" onsubmit="return buscar()">
      <label>Buscar</label> <input type="text" id="q" name="q" value="<?php if(isset($q)) echo $busqueda;?>" onKeyUp="return buscar()">
      <select name="campo" onchange="return buscar()">
      <?php
      
for($i=0;$i<mysql_num_fields($query);$i++)
                                {
                                   echo 
"<option value=".mysql_field_name($query,$i).">".mysql_field_name($query,$i)."</option>";
                                }
      
?>
      </select>
      <input type="submit" value="Buscar" id="boton">
      <span id="loading"></span>
    </form>
    
    <div id="resultados">
    <p><?php
        
if($aux['total'] and isset($busqueda)){
                echo 
"{$aux['total']} Resultado".($aux['total']>1?'s':'')." que coinciden con: <strong>[ ".$busqueda." ]</strong>";
            }elseif(
$aux['total'] and !isset($q)){
                echo 
"Total de registros: {$aux['total']}";
            }elseif(!
$aux['total'] and isset($q)){
                echo
"No hay registros que coincidan con: <strong>[ ".$busqueda." ] </strong>";
            }
    
?></p>

    <?php 
        
if($aux['total']>0){
            echo 
"<table border='1'>";
            echo 
"<tr>";
            for(
$i=0;$i<mysql_num_fields($query);$i++)
                                {
                                   echo 
"<td>".mysql_field_name($query,$i)."</td>";
                                }
            echo 
"</tr>";
            
$total_campos=mysql_num_fields($query);
            while(
$row mysql_fetch_array($query)){
          echo 
"<tr>";
          for(
$i=0;$i<$total_campos;$i++){
          echo 
"<td>".htmlentities($row[$i])."</td>";
                                          }
          echo 
"</tr>";
          }
           echo 
"</table>";
        }
    
?>
    </div>
</body>
</html>
Buscador.js
Código:
function xmlhttp(){
		var xmlhttp;
		try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
		catch(e){
			try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
			catch(e){
				try{xmlhttp = new XMLHttpRequest();}
				catch(e){
					xmlhttp = false;
				}
			}
		}
		if (!xmlhttp) 
				return null;
			else
				return xmlhttp;
	}

function buscar(){
		var query = document.getElementById('q').value;
		var query2= document.getElementById('campo').value;
		var A = document.getElementById('resultados');
		var B = document.getElementById('loading');
		var ajax = xmlhttp();

		ajax.onreadystatechange=function(){
				if(ajax.readyState==1){
						B.innerHTML = "<img src='images/loading.gif' alg='Loading...'>";
					}
				if(ajax.readyState==4){
						A.innerHTML = ajax.responseText;
						B.innerHTML = "";
					}
			}
		ajax.open("GET","busqueda.php?q="+encodeURIComponent(query)"&campo="+encodeURIComponent(query2),true);
		ajax.send(null);
		return false;
	}
busqueda.php
Código PHP:
<?php
require('config.php');
require(
'include/conexion.php');
require(
'include/funciones.php');

$tabla="usuarios";
if(isset(
$_GET['campo'])){
$campo=$_GET['campo'];
}
else{
$campo="usuario";
}


if(isset(
$_GET['q']) and !eregi('^ *$',$_GET['q'])){
        
$q sql_quote($_GET['q']); //para ejecutar consulta
        
$busqueda htmlentities($q); //para mostrar en pantalla

        
$sqlStr "SELECT * FROM ".$tabla." WHERE ".$campo." LIKE '%$q%'";
        
$sqlStrAux "SELECT count(*) as total FROM ".$tabla." WHERE ".$campo." LIKE '%$q%'";
    }else{
        
$sqlStr "SELECT * FROM ".$tabla;
        
$sqlStrAux "SELECT count(*) as total FROM ".$tabla;
    }

$aux mysql_fetch_assoc(mysql_query($sqlStrAux,$link));
$query mysql_query($sqlStr$link);
?>    <p><?php
        
if($aux['total'] and isset($busqueda)){
                echo 
"{$aux['total']} Resultado".($aux['total']>1?'s':'')." que coinciden con:<strong>[ ".$busqueda." ]</strong>";
            }elseif(
$aux['total'] and !isset($q)){
                echo 
"Total de registros: {$aux['total']}";
            }elseif(!
$aux['total'] and isset($q)){
                echo
"No hay registros que coincidan con:<strong>[ ".$busqueda." ]</strong>";
            }
    
?></p>

    <?php 
        
if($aux['total']>0){
            echo 
"<table border='1'>";
            echo 
"<tr>";
            for(
$i=0;$i<mysql_num_fields($query);$i++)
                                {
                                   echo 
"<td>".mysql_field_name($query,$i)."</td>";
                                }
            echo 
"</tr>";
            
$total_campos=mysql_num_fields($query);
            while(
$row mysql_fetch_array($query)){
          echo 
"<tr>";
          for(
$i=0;$i<$total_campos;$i++){
          echo 
"<td>".htmlentities($row[$i])."</td>";
                                          }
          echo 
"</tr>";
          }
           echo 
"</table>";
        }
    
?>
Un saludo y grácias de antemano, espero que puedan ayudarme
  #2 (permalink)  
Antiguo 17/12/2007, 14:22
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 17 años
Puntos: 14
Re: Busqueda en ajax en una base de datos Mysql

Hola
creo que la linea:
Código:
ajax.open("GET","busqueda.php?q="+encodeURIComponent(query)"&campo="+encodeURIComponent(query2),true);
esta donde no es, deberia ir antes de la linea

Código:
ajax.onreadystatechange=function(){
ya que no crea sea correcto esperar un arespuesta del servidor sin antes haber hecho una peticion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:49.