Buscador que estoy haciendo falla en algo

Iniciado por z3nth10n, 11 Noviembre 2013, 21:20 PM

0 Miembros y 1 Visitante están viendo este tema.

z3nth10n

Hola buenas, pues estoy haciendo un buscador en PHP para mis juegos, y como podréis observar siempre me saca todos los juegos (que son 4 que aquí podéis ver) cuando hago cualquier busqueda:



Código (php) [Seleccionar]


$int = 0;

/*// Catbg header
echo '<div class="cat_bar">
  <h3 class="catbg">', $context['youraction_Head'], '</h3>
</div>';

// Windowbg2 Content
echo '<div class="windowbg2">
  <span class="topslice"><span></span></span>
    <div class="content">

    </div>
  <span class="botslice"><span></span></span>
</div><br />';*/

// Catbg header
echo '<div class="cat_bar">
  <h3 class="catbg">Resultados de la b&uacute;squeda:</h3>
</div>';

// Windowbg2 Content
echo '<div class="windowbg2">
  <span class="topslice"><span></span></span>
    <div class="content">';

echo '<table>'; //Se inicia la tabla

$FullString = $_POST['busqueda']; //Se pone una string general
if(strpos($FullString,' ') !== false) { //Y si tiene espacios (lo que quiere decir varias palabras)
   $Array = explode(' ', $_POST['busqueda']); //Pues se hace un array con esta
   foreach ($Array AS $Values) { //Y por cada valor se hace una busqueda en MySQL
    $result = mysql_query("SELECT DISTINCT * FROM juegos WHERE nombre LIKE '%$Values%' OR descripcion LIKE '%$Values%'");
$total = mysql_num_rows($result); //Esto se cuenta para hacer de una forma chapucera las separaciones de los elementos por <hr>'s

while($rs2 = mysql_fetch_array($result)) { //Y aqui se muestran los resultados

   $int++; //Por cada while se suma uno a int

   echo '<tr><td class="txt_desc" bgcolor="#FFFFFF"><img src="'.$rs2['miniatura'].'" width="104" height="70" align="left"><span style="position:relative;left:10px;"><span class="titulos"><a href="http://'.$_SERVER['SERVER_NAME'].'/game.php?id='.$rs2['id'].'">'.$rs2['nombre'].'</a></span><br>'.$rs2['descripcion'].'</span></td></tr>'; //Se hace un echo a toda la query para mostrarla

   if($int<$total){echo '<tr><td><hr width="98%" color="#000000" size="2"></td></tr>';}else{echo '</table><br>';} //Y si int es mayor al total de numeros de tablas en la query, pues se cierra la tabla y san sacabo...

}
}

} else { //Y esto lo mismo, pero en caso de que fuese una palabra individual
$result = mysql_query("SELECT DISTINCT * FROM juegos WHERE nombre LIKE '%$FullString%' OR descripcion LIKE '%$FullScreen%'");
$total = mysql_num_rows($result);

while($rs2 = mysql_fetch_array($result)) {

   $int++;

   echo '<tr><td class="txt_desc" bgcolor="#FFFFFF"><img src="'.$rs2['miniatura'].'" width="104" height="70" align="left"><span style="position:relative;left:10px;"><span class="titulos"><a href="http://'.$_SERVER['SERVER_NAME'].'/game.php?id='.$rs2['id'].'">'.$rs2['nombre'].'</a></span><br>'.$rs2['descripcion'].'</span></td></tr>';

   if($int<$total){echo '<tr><td><hr width="98%" color="#000000" size="2"></td></tr>';}else{echo '</table><br>';}

}

}

    echo '</div>
  <span class="botslice"><span></span></span>
</div><br />';


No se lo que me puede estar fallando, yo optaria a que serían las Queries que no las estoy haciendo bien...

Código (sql) [Seleccionar]
SELECT DISTINCT * FROM juegos WHERE nombre LIKE '%$Values%' OR descripcion LIKE '%$Values%'

Así que, si alguien me puede decir en que estoy fallando, pues...

Y si queréis los juegos:

En examinar tengo esto:



Y en estructura esto:



Un saludo.
Gracias.
:P




Ya he resuelto esto yo solo, lo único que hice fue cambiar el OR por un AND, en WHERE nombre LIKE '%$Values%' OR descripcion LIKE '%$Values%', pero alguien me puede razonar porque?

Gracias.

Interesados hablad por Discord.

:ohk<any>

#1
No importa que caracter escribas siempre te saca todos los resultados?
Por que si pones "a" siempre va a sacar todos, probaste poner "Probando" para ver si solo encuentra 1 resultado?

Si pudieras poner tu tabla en un SQL podría ayudarte mejor.

Edito: Respondí tarde.

Saludos

Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

z3nth10n

Cita de: @ohk en 12 Noviembre 2013, 15:54 PM
Edito: Respondí tarde.

No pasa nada, gracias igualmente por las molestias, aún puedes explicarme porque con un AND funciona y con un OR no.

Interesados hablad por Discord.