Foros del Web » Programando para Internet » PHP »

dos o mas consultas en 1

Estas en el tema de dos o mas consultas en 1 en el foro de PHP en Foros del Web. hola a todos. tengo el siguiente problema. estoy haciendo un buscador con php- ajax en el cual cuando escribo una palabra me tira una lista ...
  #1 (permalink)  
Antiguo 15/07/2013, 21:45
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 12 años
Puntos: 0
dos o mas consultas en 1

hola a todos.

tengo el siguiente problema.
estoy haciendo un buscador con php- ajax en el cual cuando escribo una palabra me tira una lista de resultados estilo google:

el problema es que tengo dos tablas por hacerles la consulta.
libro , autor

tengo la siguiente consulta.

$query = pg_query("SELECT nom_lib FROM libro WHERE UPPER(nom_lib) LIKE UPPER('%$variable%') LIMIT 4");

aqui va todo bien, si escribo una palabra que tenga similutud con el titulo del libro se me despliega la lista de resultados..

la duda que tengo es que no se como hacerle para q la palabra tambien tenga coincidencia con la tabla autor.

por q si pongo: $query = pg_query("SELECT nom_lib , nom_aut FROM libro,autor, WHERE UPPER(nom_lib) LIKE UPPER('%$variable%') OR UPPER(nom_aut) LIKE UPPER('%$variable%') LIMIT 4 ..

entonce en el While tendria q poner algo asi

while($resultado = pg_fetch_array($consulta){
$resultado['nom_lib]...
$resultado['nom_auto]...

}

lo cual me arrojaria dos resultados ejemplo.
el libro y el autor del libro..

y lo que quiero es un resultado ya sea el autor del libro o el titulo del libro segun coincida la palabra ...
  #2 (permalink)  
Antiguo 15/07/2013, 22:01
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 19 años, 1 mes
Puntos: 56
Respuesta: dos o mas consultas en 1

SELECT DISTINCT te puede servir
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 16/07/2013, 09:17
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 12 años
Puntos: 0
Respuesta: dos o mas consultas en 1

mm no creo q vaya a servir si no me equivoco distinct es para no duplicar registros y lo que necesito es q la consulta se haga en las dos tablas con un like y q me muestre la palabra mas similar ya sea q este en libros o en autor:

me explico . segun la palabra q escriba o se muestra el titulo del libro O el nombre del autor pero no puedo tener las dos..

asi como en google : si escribo una palabra el hace una consulta a muchas tablas y obtiene una lista de las mas similares.

lo que no se es como hacer esa consulta. a varias tablas y obtenera en una lista
  #4 (permalink)  
Antiguo 16/07/2013, 09:36
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años, 7 meses
Puntos: 19
Respuesta: dos o mas consultas en 1

Lo primero que tienes que hacer es definir en que se basara tu consulta si es por nombre del libro pues para que buscas en autor, si quieres obtener el autor del libro entonces el problema esta en la relación del libro con el autor o autores, debes tener una tabla que relacione el id del libro con el id del autor.
__________________
La estadística es una ciencia que demuestra que si mi vecino tiene dos coches y yo ninguno, los dos tenemos uno.
  #5 (permalink)  
Antiguo 16/07/2013, 09:39
 
Fecha de Ingreso: abril-2013
Ubicación: Lima
Mensajes: 83
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: dos o mas consultas en 1

pon esto donde quieras buscar:
Cita:
<form action="buscar-fotos.php." method="post">
<h3> Búsqueda de fotos por Actividad <input type="text" name="buscarnom" height='20'/>

<input type="submit" value="Buscar" height ='20'/>
</form>
y esto donde quieras recibir resultados

Cita:
<?php
$query = "SELECT a.fotcod,a.fotsec,a.fottxt,a.fotimg,b.actcod,b.act nom FROM Tfoto a, Tacti b where a.fotcod = b.actcod";
if ($_POST['buscarnom'] <> ''){
$query = $query . " AND actnom like '%". $_POST['buscarnom'] ."%'";

}

$query = $query . " order by fotsec desc";

$result = mysql_query($query) or die(mysql_error());
while ($rows = mysql_fetch_array($result)){
echo "<table border = '0' bordercolor='#006CB8' height='40'><tr><div align='center'><img src=Actividades/" .$rows['fotcod'].$rows['fotsec']. ".jpg width='350' height='300'></div></tr><tr><td><div align=center><strong><font size='-2'>" . utf8_encode($rows['fottxt']) . "</div></td></tr></table>";
}
mysql_free_result($result);
mysql_close($conn);
?>
  #6 (permalink)  
Antiguo 16/07/2013, 11:16
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 12 años
Puntos: 0
Respuesta: dos o mas consultas en 1

gracias por responder, pero ya creo q me las aregle de esta forma. aunque no se si sea lo mas adecuado pero funciona bien :)

lo malo es que en Ajax no me esta funcionando en Google Chrome :(

index.html ::

<html>
<head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jqueryUI.js"></script>
<link rel="stylesheet"type="text/css" href="css/ui-lightness/jquery-ui-1.8.23.custom.css">
<link rel="stylesheet" type="text/css" href="css/estilos.css">

<script type="text/javascript" language="javascript">

function llamadaAjax(str){
var http ;

if(window.XMLHttpRequest){
http = XMLHttpRequest();
}
else{
http = new ActiveXObject('Microsoft.XMLHTTP');
}

http.onreadystatechange = function(){
if(http.readyState == 4 && http.status == 200){
var respuesta = http.responseText;


document.getElementById('cajaAjax').innerHTML = respuesta;

}
}

http.open('GET','buscadorAjax.php?variable='+str,t rue);
http.send();
}


function pasar(str){
document.getElementById('palabra').value= str;
llamadaAjax() = false;
}

function finAjax(){
llamadaAjax() = false;
}



$(document).on('ready',function(){
$('#boton').on('click',function(){
$('#datos').load("buscador.php",{palabra:$('#palab ra').prop('value')}
);
});
});


</script>


</head>
<body>
<!-- capa central que contiene todo -->
<div id="contenedor">

<!-- Icono de Inicio casita Naranja-->
<div id="inicio"> <a href="menu_administrador.php"> <img src="../images/inicio.png" title="Regresar al inicio" id="inicioimage"></a></div>

<!-- cabecera primera capa color verde -->
<div id="cabecera">
<img src="../images/logoSena.png" id="logoSena"><br>C.I.D.M
</div>

<!-- Segunda capa color naranja-->
<div id="info">
Selecciona el tipo de consulta
</div>
<!-- Formulario para ingresar la palabra y realizar la busqueda-->
<div id="formulario" name="buscador">
<form method="POST" action="">
<strong>Palabra clave:</strong> <input type="text" name="palabra" id="palabra" autocomplete="of" size="40" onkeyup="llamadaAjax(this.value)"><input type="button" value="Buscar" id="boton"> <!-- Boton Buscar-->
</div>
<div id="cajaAjax"></div>
<!-- Capa donde aparece los registros obtenido mediante el archivo bucador.php-->
<div id="datos">
</div>
</div>


</body>
</html>


Archivo php:

<?php
header("Cache-Control: no-store, no-cache, must-revalidate");
include('conexion.php');

$variable = $_GET['variable'];

if($variable == "")
echo "";
else
{

$query = pg_query("SELECT DISTINCT nom_lib FROM libro WHERE UPPER(nom_lib) LIKE UPPER('%$variable%') LIMIT 4");

while($resultado = pg_fetch_array($query)){

echo'<option onclick="pasar(this.value)">'.$resultado['nom_lib'].'</option>'.'<p>libro</p>';
}

$query = pg_query("SELECT DISTINCT nom_aut FROM autor WHERE UPPER(nom_aut) LIKE UPPER('%$variable%') LIMIT 4");

while($resultado = pg_fetch_array($query)){

echo'<option onclick="pasar(this.value)">'.$resultado['nom_aut'].'</option>'.'<p>autor</p>';
}

$query = pg_query("SELECT DISTINCT nom_cub FROM cubiculo WHERE UPPER(nom_cub) LIKE UPPER('%$variable%') LIMIT 4");

while($resultado = pg_fetch_array($query)){

echo'<option onclick="pasar(this.value)">'.$resultado['nom_cub'].'</option>'.'<p>uvicacion</p>';
}
}

?>

estos codigo son solo para el buscador osea para la parte de Ajax ya los resultados como tal los tengo en otro archivo y funcionan bien.. el problema va en Chrome q no funciona Ajax:

como se puede ver hice 3 querys con el mismo nombre a diferentes tablas y funciona bien lo q no se si es lo mas adecuado .. y si saben halgo del problema con chrome se los agradeceria

Etiquetas: select, tabla, variable
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 21:36.