entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

devolver la ruta de una busqueda despues de un escaneo de tablas

esta pregunta esta relacionada a mi otra pregunta esta vez no entiendo porque no me imprime la ruta de mi imagen si no hay ningun error, el codigo funciona de la siguiente manera, el buscador efectua las consultas en todas las tablas hasta encontrar lo que se pidio por ejm tengo una tabla donde tengo almacenado una foto con nombre jacket
cuando busco jacket el motor de busqueda lo encuentra por su nombre y devolveria la ruta de la imagen, mas adelante me gustaria poder hacer que me muestre todas los resultados relacionados por ejmplo si tengo en mi tabla jacket y jacket2 cuando busque jacket me devolviese todos los resultados relacionados a esa consulta.

<form method="get" action="buscador-beta.php">
 <div id="buscador">
 <input type="text" name="busqueda" placeholder="keyword">
 <input type="submit" value="search" name="boton_enviar">
 </div>
 </form>
 <nav  id="menu">
    <ul>
        <li><a href="">clothes</a></li>
        <li><a href="">madone2012</a></li>
        <li><a href="">verano2012</a></li>
        <li><a href="">verano2013</a></li>
    </ul>
 </nav>
<?php
if(isset($_GET['boton_enviar']))
{
  $consulta = $_GET['busqueda'];
  $conexion = mysql_connect('localhost', 'root', 'admin') or die(mysql_error());
  mysql_select_db('test', $conexion) or die(mysql_error());

  $obtener_tablas = mysql_query("SHOW TABLES");
  while($tabla = mysql_fetch_array($obtener_tablas)){
   $elemento = $tabla[0];
   $obtener_campos = mysql_query("SHOW FIELDS FROM $elemento");

    while($campo = mysql_fetch_array($obtener_campos) ){

      $elemento_campo = $campo[0];

       $sql = "SELECT * FROM $elemento WHERE $elemento_campo='$consulta' ";
       $consulta = mysql_query($sql);

        while($fila = mysql_fetch_array($consulta)){
        echo $ruta= $fila['path'];
        echo "<img src='$ruta'>";
    }
  }
}
}
?>

1 Respuesta

2votos

steven Puntos5100

por ir un poco apurado no me di cuenta que mi variable se sobreescribia, acabo de corregirlo y me va bien por el momento no me tira ningun error, quiero agradecer a leonardo por todo su apoyo, esto es mi codigo final espero si es que todavia se puede optimizar aun mas no dudes en comentarlo.

<form method="get" action="buscador-beta.php">
 <div id="buscador">
 <input type="text" name="busqueda" placeholder="keyword">
 <input type="submit" value="search" name="boton_enviar">
 </div>
 </form>
 <nav  id="menu">
    <ul>
        <li><a href="">clothes</a></li>
        <li><a href="">madone2012</a></li>
        <li><a href="">verano2012</a></li>
        <li><a href="">verano2013</a></li>
    </ul>
 </nav>
<?php
if(isset($_GET['boton_enviar']))
{
  $consulta = $_GET['busqueda'];
  $conexion = mysql_connect('localhost', 'root', 'admin') or die(mysql_error());
  mysql_select_db('test', $conexion) or die(mysql_error());

  $encontrado = false;

  $obtener_tablas = mysql_query("SHOW TABLES");
  while($tabla = mysql_fetch_array($obtener_tablas)){
   $elemento = $tabla[0];
   $obtener_campos = mysql_query("SHOW FIELDS FROM $elemento");

    while($campo = mysql_fetch_array($obtener_campos) ){

      $elemento_campo = $campo[0];

       $sql = "SELECT * FROM $elemento WHERE $elemento_campo='$consulta' ";
       $query = mysql_query($sql);

        while($fila = mysql_fetch_array($query)){
        echo $ruta= $fila['path'];
        echo "<img src='$ruta'>";
        echo "la ruta es ".$ruta;
        $encontrado = true;
    }
  }
}
if(!$encontrado){echo "ningun resultdado" ;}
}
?>

1voto

Peter comentado

Gracias por compartir tu solución.

1voto

steven comentado

peter quitame una curiosidad cual es el puntaje maximo para un usuario

1voto

Peter comentado

No lo hay.

Saludos.

3votos

Leonardo-Tadei comentado

Hola @steven,

el algoritmo se podría mejorar haciendo que en vez de ejecutar en el búcle más interior una consulta del tipo:

SELECT * FROM $una_tabla WHERE $un_campo='$consulta'

que significa ejecutar un SELECT por cada campo de la tabla, podrías ejecutar una sola consulta con esta forma:

SELECT * FROM $una_tabla WHERE $campo1='$consulta' OR $campo2='$consulta'  ... OR $campoN='$consulta'

Así, si por ejemplo una tabla tiene 4 campos, en vez de ejecutar 4 SELECT a la DB se ejecuta solo uno.

En caso de que quieras implementar esto, recuerda abrir una nueva pregunta ;-)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta