Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/08/2011, 11:51
Swivel
 
Fecha de Ingreso: febrero-2011
Mensajes: 48
Antigüedad: 13 años, 8 meses
Puntos: 0
ordenar articulos segun votaciones a favor o en contra

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";
    
$resultadomuestrame_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