Buenas, os expongo una gran duda, gracias de antemano por leerla:
Estoy intentando mostrar una lista de artículos por su popularidad (mediante votaciones). Para explicaros mi duda obviare los detalles innecesarios y lo expondré como un ejemplo:
Digamos que tengo dos tablas en la base de datos.
Una, la de unos
artículos, cuyos campos son: la "id" y el "nombre".
Y otra, la de los
votaciones cuyos campos son: la "id", la foranea "id_articulo" y el "voto" (que puede ser solamente
S ó
N, que significan: me gusta o no me gusta). Y ya esta.
Mi duda es como mostrar una lista ordenada de articulos (ascendente o descendente, da igual), segun el numero de "S" o "N" (votos) que hayan recibido.
Mi duda consiste basicamente en, ¿como mostrar: en primer lugar los articulos con mayor numero de votos "S", luego de estos, los articulos sin voto alguno, y en último lugar los articulos con mayor numero de votos "N"?
Hasta donde yo he podido llegar es a crear esta query en una funcion, ubicada en una libreria, que mas tarde invoco, y seguro que está mal por lo que explico más abajo:
Código PHP:
function muestrame_articulos($voto){ // $voto= "S"; (por ejemplo)
$link = conexion();
$query = "SELECT count(votaciones.voto) AS score, articulos.* FROM votaciones INNER JOIN articulos ON votaciones.id_articulo = articulos.id WHERE votaciones.voto='$voto'";
$rs = mysql_query($query, $link);
$resultado= array();
$row = mysql_fetch_assoc ($rs);
while ($row != false) {
$resultado[] = $row;
$row = mysql_fetch_assoc ($rs);
}
return $resultado;
luego invoco esta funcion:
Código PHP:
$voto= "S";
$resultado= muestrame_articulos($voto);
foreach($resultado as $item){
echo ("<span>". $item['nombre'] ." - ". $item['score'] ." votos</span><br/>");
}
Pero lo que esto me ofrece es
tan solo un resultado, que curiosamente es el que mas votos "S" tiene en mi ejercicio, y al lado me sale la suma de todos los votos "S" (pero de todos los articulos, no del que se muestra en el resultado de mi ejercicio). Algo así como:
Código HTML:
Articulo X lo que sea - 20 votos
Obviamente, mi interes es mostrar, en principio, todos los articulos de mi base de datos, y a su lado el numero de sus votos "S" (o "N", cuando se cambie en la variable $voto). En principio el orden ascendente o descendente es irrelevante. Solo necesito listar todos los articulos y a su lado el numero de votos respectivos.
Alguna ayuda?
Muchas Gracias