Foros del Web » Programando para Internet » PHP »

Consulta sobre buscador.

Estas en el tema de Consulta sobre buscador. en el foro de PHP en Foros del Web. Buenas noches señores, quisiera hacerles una consulta, estoy trabajando sobre el siguiente buscador, que lo he sacado de esta web: Código PHP:    <?php          ...
  #1 (permalink)  
Antiguo 04/10/2011, 20:37
 
Fecha de Ingreso: agosto-2009
Mensajes: 73
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta Consulta sobre buscador.

Buenas noches señores, quisiera hacerles una consulta, estoy trabajando sobre el siguiente buscador, que lo he sacado de esta web:
Código PHP:
  <?php
        
include ("server.php");
        
// varificamos que el formulario halla sido enviado
        
if(isset($_GET['encontrar']) && $_GET['encontrar'] == 'Encontrar'){
            
$movil addslashes($_GET['movil']);
            
//$rubro = addslashes($_GET['Rubro']);
            
            // hacemos la consulta de busqueda
            // ver explicación mas abajo
            //$buscar=$_POST[’palabra’];
            
if(isset($_GET['movil'])){
            
$sqlBuscar mysql_query(("SELECT *, 
            MATCH (callsign)
            AGAINST ('$movil' IN BOOLEAN MODE) AS coincidencias
            FROM mov_common
            WHERE MATCH (callsign)
            AGAINST ('$movil' IN BOOLEAN MODE)
            ORDER BY coincidencias DESC"
), $connection)
            or die(
mysql_error()); 
            }
            
//obtengo id_historia, busco datos en tabla mov_em con ese dato
            //if (isset($_GET['movil'])){
            //$sqlresul = mysql_query (("SELECT id_historia FROM mov_em 
            
$id 'id_historia';
            echo 
$id;
            
/*if(isset($_GET['rubro'])) {
            $sqlBuscar = mysql_query("SELECT *
             FROM empresas
             WHERE 
             rubro LIKE '%$rubro%'", $server_link);
            }*/
            
$totalRows mysql_num_rows($sqlBuscar);
            echo 
$totalRows;
            
// Enviamos un mensaje
            // indicando la cantidad de resultados ($totalRows)
            // para la frase busada ($frase)
            
if(!empty($totalRows)){
            echo 
stripslashes("<p><span class='resultado'>Resultados Encontrados:</span>  
            <strong>$totalRows</strong> <span class='resultado'>para la b&uacute;squeda </span> <strong>$movil, </strong></p>"
); 
            
            
// mostramos los resultados
            
while($row mysql_fetch_array($sqlBuscar)){
            echo 
$row;
            echo 
$sqlBuscar;
            echo 
"<em>Coincidencias de palabras: "round($row['coincidencias']) ."</em>";
            echo 
"<table width='700' border='0' cellpadding='0' cellspacing='0'>
            <tr>
            <td width='70'>Movil:</td>
            <td width='630'>
            <strong>$row[movil]:</strong></td>
                 </tr>"
;
                 echo 
$row['movil'];
            
/*echo "<tr> 
            <td>Rubro:</td><td>".substr(strip_tags($row['movil']), 0, 255)."</td></tr>";*/
            //echo "<tr> <td>Tel&eacute;fono:</td><td>".substr(strip_tags($row['Telefono']), 0, 255)."</td></tr>";
            
echo "<tr> <td>Movil:</td><td>".substr(strip_tags($row['movil']), 0255)."</td></tr>";
            
//echo "<tr> <td>Ciudad:</td><td>".substr(strip_tags($row['Ciudad']), 0, 255)."</td></tr>";
            //echo "<tr> <td>Ciudad:</td><td>".substr(strip_tags($row['Mail']), 0, 255)."</td></tr>";
            
echo "</table><p>&nbsp;</p>";
            }
            
            
// si se ha enviado vacio el formulario
            // mostramos un mensaje del tipo Oops...!
            
}elseif(empty($_GET['mobil'])){
            echo 
"Debe introducir una palabra o frase.";
            
            
            
// si no hay resultados
            // otro mensaje del tipo Oops...!
            
}elseif($totalRows == 0){
            echo 
stripslashes("Su busqueda no arrojo resultados para <strong>$movil</strong>");
            }
        }
//if
        
?>
Lo que estoy tratando de hacer con este buscador es, buscar la palabra que se coloca en el cuadro de texto, encontrarla en una tabla, que seria mov_common, selecciona la primer columna de esta tabla que se llama id_historia, y buscar los datos que corresponden a ese valor obtenido "id_historiar" en una tabla llamada mov_em.

Esto es posible con una consulta MACH AGAINST?

Espero sus sugerencias.

Saludos.
  #2 (permalink)  
Antiguo 05/10/2011, 02:11
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Consulta sobre buscador.

Buenas,

Este tema es más de SQL que de PHP, pero bueno, te doy algunas indicaciones. Es más fácil de lo que estás haciendo, simplemente une las dos tablas con un JOIN a través de la variable id_historiar y luego haz la búsqueda:

JOIN:
Código MySQL:
Ver original
  1. SELECT * FROM mov_common C, mov_em E WHERE (C.id_historiar = E.id_historiar);

Y ahora añades la búsqueda que quieras añadiendo en la cláusula WHERE el filtro, por ejemplo:
Código MySQL:
Ver original
  1. SELECT * FROM mov_common C, mov_em E WHERE ((C.id_historiar = E.id_historiar) AND (campo LIKE '$filtro'));

Esto suponiendo que la base de datos esté bien montada, con claves foráneas y demás. Si no, se te complica mucho. De hecho, si no la tienes bien montada, es más recomendable que la deshagas y la montes que bien a que intentes adaptar las consultas SQL.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 13/10/2011, 18:13
 
Fecha de Ingreso: agosto-2009
Mensajes: 73
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Consulta sobre buscador.

Buenas vgonga1986, me funciono perfecto lo que me comentaste, ahora tengo otra consulta, lo que quiero hacer ahora es, con el buscador encuentro un nombre en la tabla y quiero seleccionar los datos referentes a ese nombre como hum, speed, temp y press, esos datos meterlos en una variable y con esas variables utilizarlos en una ecuación, el codigo que tengo hasta ahora es:

Código PHP:
<?php

include("server.php"); //Incluimos un archivo de conexion a MySQL.
$press$_POST["press"];
$hum$_POST["hum"];
$speed$_POST["speed"];
$temp$_POST["temp"];
$palabra$_POST["palabra"];
$sql "SELECT speed, course, temp, hum, press, gust, rh, r0h, r24, snow
            FROM mov_common C
                WHERE speed='%"
.$speed."%' AND hum='%".$hum."%' AND temp='%".$temp."%' AND press='%".$press."%'
            INNER JOIN mov_em E ON ( (
                C.id_historia = E.id_historia
                )
                AND (
                callsign LIKE  '%"
.$palabra."%'
                ) 
                
            )"
;
            
            
// SQL para la búsqueda
        
$result=mysql_query($sql,$connection);
            
    if(
$result != "")
    {
        if(
$rowmysql_fetch_array($result)) // Si hay resultados crea una tabla y los muestra
            
{
                echo 
$v = ($speed*0.16);
            echo 
$twc= (13.12+(0.6215*$temp)-(11.37*$V)+(0.3965*$temp*$V));
                echo 
"<TABLE BORDER='0'><tr>";
                while(
$row=mysql_fetch_array($result))
                {
                    echo 
"<tr><td>";
                    echo 
$row['id_historia'];
                    echo 
"</td></tr>";
                }
                echo 
"</tr></TABLE>";
            }
    }
    else { echo 
"No se ha encontrado el mobil";}
mysql_close($connection);
?>
Las variables donde las quiero incluir, que seran las que use en las distintas ecuaciones son $hum, $speed, $press, $temp, en la consulta donde busca el nombre que se introduce en el buscador, le agregue un where donde trate de asignar los valores seleccionados a las varibles mencionadas.

Por ultimo el echo $twc es la ecuación que quiero mostrar en pantalla.

Esto es correcto?

Espero sugerencias.

Saludos.

Etiquetas: mysql, sql, tabla
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 23:20.