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)
$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ú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...
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.
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.