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

1voto

filtrar respuestas de multiples consultas

hola muchachos en esta ocasion vengo a pedirles un minifavor para realizar una idea se trata de un motor de busqueda casero para que funcione bien necesito que busque en todas las tablas de mi base de datos, lo que debe hacer mi programa es lo siguiente buscar en cada tabla hasta encontrar lo que le pido por el momento no se como llegar a eso, por ahora debo corregir un error, si en mi tabla photos no encuentra ningun resultado no me muetre mas de un mensaje de error

<form method="get" action="test.php">
 <input type="text" name="busqueda" placeholder="keyword">
 <input type="submit" value="search" name="boton_enviar">
 </form>
 <nav>
    <ul>
        <li><a href="">clothes</a></li>
        <li>madone2012</li>
        <li>verano2012</li>
        <li>verano2013</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());

$sql = mysql_query("SELECT * FROM photos");
$verano2013 = mysql_query("SELECT * FROM verano2013");

while($fila = mysql_fetch_array($sql))
{
    if($consulta == $fila['name']){
    $registro = $fila['path'];
    echo "<img src=".$registro.">";
}
// deberia mostrarme solo un mensaje despues de buscar algo que no existe
elseif ($consulta != $fila['name']){
    echo "No se encontro ningun resultado";
}
     }

    }
    ?>

**
si busco algo que no existe aqui deberia de mostrarme solo un mensaje
output

No se encontro ningun resultado
No se encontro ningun resultado
No se encontro ningun resultado
**

nota en mi tabla photos tengo tres campos los cuales son name, path y points lo mismo en mi otra tabla verano2013

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola @steven,

para conseguir una única salida, se usa una bandera para postergar la salida del mensaje de error:

...
$verano2013 = mysql_query("SELECT * FROM verano2013");

$encontrado = false; // flag
while($fila = mysql_fetch_array($sql))
{
    if($consulta == $fila['name']){
      $encontrado = true;
      $registro = $fila['path'];
      echo "<img src=".$registro.">";
    }
   ...
} // Fin del While
...
if (! $encontrado){
    echo "No se encontro ningun resultado";
}

Puse solo el código relevante y puntos suspensivos en dónde va el resto de tu código actual, excepto el elseif que ya no hace falta.

Saludos cordiales

0voto

steven comentado

muchas gracias maestro, a proposito es la primera vez que escucho este termino de los flags, no quiero entrar en detalles pero me gustaria saberlo desde tu punto de vista que cosa son exactamente en la programacion y en que casos se usan, gracias

1voto

Leonardo-Tadei comentado

Hola @steven,

acá tenés información sobre lo que es una bandera en programación.

En el apunte se menciona el switch, pero no hace referencia a la estructura de control que se llama así, sino a un interruptor físico, como una tecla de encendido/apagado.

Mencionás que es la primera vez que escuchás hablar de banderas o flags... es por esto que te hemos recomendado tanto hacer algún curso presencial de programación, porque es ahí en dónde se ven estos conceptos: en internet se explica mucho cómo escribir código, pero jamás el por qué se debe escribir de cierta manera u otra.

Teniendo claros los conceptos, luego es fácil buscar cómo si implementa. Sin conocer los conceptos, no hay código ni ejemplo ni manual que te sirva realmente :-(

0voto

steven comentado

gracias @Leonardo-Tadei por todo lo aprecio mucho, los conceptos ya los habia estudiado desde que comenze a interesarme por esta profesion por ese lado no te preocupes. sin embargo para completar mi proyecto todavia me hace falta hacer las consultas a las tablas photos y verano2013 al mismo tiempo, lo que quiero es que cuando busque por ejemplo jacket haga la consulta en una si no la encuentra que lo busque en la otra, estado mirando que en algunos tutoriales usan el operador de concatenacion pero esto devuelve registros duplicados, luego el otro metodo es de hacerlo con un sentencia join pero esto es valido solo para hacer comprobaciones en dos tablas, mi intencion es que se pudiesen hacer en varias tablas por lo minimo en cinco tablas, cual seria la manera de consultar mis dos tablas con mi codigo corriente, te comento que al principio se me habia ocurrido hacerlo por medio de un switch pero el problema surge cuando necesito pasar a otra tabla, por el momento me gustaria saber como lo harias tu para hacer una consulta pasando de una tabla a la otra. te pido disculpas por pedirte este otro favor, te prometo que esto es lo ultimo que te pido, espero que para ti no sea un problema desde luego te deseo un feliz fin wekend

0voto

Leonardo-Tadei comentado

@steven , estás haciendo una pregunta nueva.
Abrí una nueva pregunta y sé lo más claro posible en lo que querés obtener como resultado.

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