Foro de elhacker.net

Programación => 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
  1.  
  2. $int = 0;
  3.  
  4. /*// Catbg header
  5. echo '<div class="cat_bar">
  6.     <h3 class="catbg">', $context['youraction_Head'], '</h3>
  7. </div>';
  8.  
  9. // Windowbg2 Content
  10. echo '<div class="windowbg2">
  11.   <span class="topslice"><span></span></span>
  12.     <div class="content">
  13.  
  14.     </div>
  15.   <span class="botslice"><span></span></span>
  16. </div><br />';*/
  17.  
  18. // Catbg header
  19. echo '<div class="cat_bar">
  20.   <h3 class="catbg">Resultados de la b&uacute;squeda:</h3>
  21. </div>';
  22.  
  23. // Windowbg2 Content
  24. echo '<div class="windowbg2">
  25.   <span class="topslice"><span></span></span>
  26.     <div class="content">';
  27.  
  28. echo '<table>'; //Se inicia la tabla
  29.  
  30. $FullString = $_POST['busqueda']; //Se pone una string general
  31. if(strpos($FullString,' ') !== false) { //Y si tiene espacios (lo que quiere decir varias palabras)
  32.    $Array = explode(' ', $_POST['busqueda']); //Pues se hace un array con esta
  33.    foreach ($Array AS $Values) { //Y por cada valor se hace una busqueda en MySQL
  34.     $result = mysql_query("SELECT DISTINCT * FROM juegos WHERE nombre LIKE '%$Values%' OR descripcion LIKE '%$Values%'");
  35. $total = mysql_num_rows($result); //Esto se cuenta para hacer de una forma chapucera las separaciones de los elementos por <hr>'s
  36.  
  37. while($rs2 = mysql_fetch_array($result)) { //Y aqui se muestran los resultados
  38.  
  39.    $int++; //Por cada while se suma uno a int
  40.  
  41.    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
  42.  
  43.    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...
  44.  
  45. }
  46. }
  47.  
  48. } else { //Y esto lo mismo, pero en caso de que fuese una palabra individual
  49. $result = mysql_query("SELECT DISTINCT * FROM juegos WHERE nombre LIKE '%$FullString%' OR descripcion LIKE '%$FullScreen%'");
  50. $total = mysql_num_rows($result);
  51.  
  52. while($rs2 = mysql_fetch_array($result)) {
  53.  
  54.    $int++;
  55.  
  56.    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>';
  57.  
  58.    if($int<$total){echo '<tr><td><hr width="98%" color="#000000" size="2"></td></tr>';}else{echo '</table><br>';}
  59.  
  60. }
  61.  
  62. }
  63.  
  64.     echo '</div>
  65.   <span class="botslice"><span></span></span>
  66. </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
  1. 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
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.