Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: z3nth10n en 11 Noviembre 2013, 21:20 PM

Título: Buscador que estoy haciendo falla en algo
Publicado por: z3nth10n en 11 Noviembre 2013, 21:20 PM
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 (http://nexusplayers.x10host.com/index.php?action=juegos)) cuando hago cualquier busqueda:

(http://gyazo.com/a903b28326e833d1343fbe697640e9ef.png)

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:

(http://gyazo.com/bf02b73fe223d79397b04b0535354002.png)

Y en estructura esto:

(http://gyazo.com/c37d91082df7e3c47fe057858c27b40a.png)

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.
Título: Re: Buscador que estoy haciendo falla en algo
Publicado por: :ohk<any> en 12 Noviembre 2013, 15:54 PM
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

Título: Re: Buscador que estoy haciendo falla en algo
Publicado por: z3nth10n en 12 Noviembre 2013, 16:56 PM
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.