Porcentaje de votos en PHP Y MYSQL

Hola! estaba preparando un sistema de porcentaje para el sistema de votos "likes dislikes" que tengo en mi web. El programa que estoy creando lo que quiero que haga es lo siguiente:

-Si no hay votos que te salgan las palabras "NO HAY VOTOS" lógico...
-Si los votos son positivos que te calcule el porcentaje por ejemplo: 4 positivos y 1 negativo = +80%
-Si los votos son negativos que te calcule el porcentaje negativo, por ejemplo: 2 negativos y uno pisitivo = -66,66%
-Si los votos estan igualados, por ejemplo: 5 positivos y 5 negativos = +50%

Primero lo hice en Java ya que era más fácil a la hora de montarlo, dejo el código:


import java.util.*;

public class Porcentaje
{
    public static void main( String args[]){
          
        Scanner in = new Scanner(System.in);
         
        System.out.println("Votos positivos: ");
        int VotoPositivo = Integer.parseInt(in.nextLine());
        System.out.println("Votos negativos: ");
        int VotoNegativo = Integer.parseInt(in.nextLine());
        
        if(VotoPositivo==0 && VotoNegativo==0 ){
            
            System.out.println("No hay votos");
        }
        
        else if(VotoPositivo>=0){
            
            
        
        
        
        if(VotoPositivo>VotoNegativo){
            
            int total = VotoPositivo + VotoNegativo;
        
        int Multiplica = VotoPositivo*100;
        int Resultado = Multiplica/total;
            
            System.out.println("El resultado de los votos es positivo y es: +" +  Resultado + "%");
        }
        
        else if(VotoPositivo<VotoNegativo){
            
            int total = VotoPositivo + VotoNegativo;
        
        int Multiplica = VotoNegativo*100;
        int Resultado = Multiplica/total;
            
            System.out.println("El resultado de los votos es negativo y es: -" + Resultado + "%");
        }
        
        else if(VotoPositivo==0){
            
        
        int Resultado = 100;
        System.out.println("El resultado de los votos es negativo y es: -" + Resultado + "%");
        
   
        }
        
        
        else{
            
            int total = VotoPositivo + VotoNegativo;
        
        int Multiplica = VotoPositivo*100;
        int Resultado = Multiplica/total;
        
            System.out.println("El resultado esta igualado al " + Resultado + "%");
        }
    }
    
    }
}

SÍ, SE QUE DEBERÍA USAR UN DOUBLE O UN FLOAT NO UN ENTERO, PERO COMO YA HE DICHO LO HICE EN JAVA NADA MÁS QUE PARA CREARLO NO PARA USARLO CON ESE LENGUAJE.

Una vez que lo monto en Java, ahora quiero hacerlo con PHP para la página, el problema que tengo es que cuando el número de votos es mayor a 1 tanto negativos como positivos me vuelve a salir el mensaje no hay votos y ¡no lo entiendo!, por favor si alguien sabe como lo puedo hacer me serviría de mucha ayuda, dejo el código;

<?php
	require_once("ajax/config.php");
	$posts=$db->query("select * from posts WHERE posts.id=1");
	if ($filas=$posts->fetch_array())
	{
		do
		{
		?>
		
		<?php 
		$VotosPositivos=mysql_numrows(mysql_query("SELECT * FROM posts WHERE posts.id=1 LIKE posts.likes"));
                 $VotosNegativos=mysql_numrows(mysql_query("SELECT * FROM posts WHERE posts.id=1 LIKE posts.hates"));
		
		
		
		if($VotosPositivos==0 && $VotosNegativos==0){
		 echo '<div id="porcentaje"><h1>NO HAY VOTOS</h1></div>';
		 } elseif($VotosPositivos>=0){
		
		if($VotosPositivos>$VotosNegativos){
		
		$Total = $VotosPositivos + $VotosNegativos;
		$Multiplica = $VotosPositivos*100;
		$Resultado = $Multiplica/$Total;
		
		echo $Resultado;
		
		}
		
		}
		
		 ?>
		
		<ul class="votos">
			<li class="voting_btn up_button" data-voto="likes" data-id="<?php echo $filas["id"]; ?>"><span><?php echo $filas["likes"]; ?></span></li>
			<li class="voting_btn dw_button" data-voto="hates" data-id="<?php echo $filas["id"]; ?>"><span><?php echo $filas["hates"]; ?></span></li>
		</ul>

		<?php
		}
		while($filas=$posts->fetch_array());
	}
	
	?>


¡AYUDA POR FAVOR!
Hola!

Hasta donde sé, no puedes mezclar el operador = con LIKE, pues uno es una comparación exacta y el otro es "algo similar" (like).

¿Qué quieres comparar en la consulta? ¿Podrías mostrar el código SQL de tus tablas?

Si tu esquema tiene en la tabla "post" las columnas "likes" y "hates", entonces ya tienes los "likes" y "hates":

$posts=$db->query("select * from posts WHERE posts.id=1");
Pero entonces como hago para crear dos variables que seleccionen los likes y los hates de cada columna? es que yo creo que lo que no se hacer es eso, ejemplo:

$VotosPositivos = ?;
$VotosNegativos = ?;
Simplemente lee la columna:

$likes = $filas[1]; // Asumiendo que el índice 1 sean los likes
$hates = $filas[2]; // Asumo que el índice 2 sean los hates

Esto es, asumiendo que tengas una estructura como esta:

create table posts (
  id ...,
  likes int...,
  hates int...
);

Ten en cuenta que Yo estoy asumiendo que Tu modelo de datos está normalizado, pues si no lo está, entonces esto no funciona :P.
Funciona Skaparate!! lo he puesto como tu dices, efectivamente las puesto como lo tengo id, likes, hates...por lo tanto, 0, 1,2...

$VotosPositivos=$filas[1];
$VotosNegativos=$filas[2];

Mil gracias!!

Por cierto una única cosa más, para que solo se muestren dos decimales después de la coma en la división se hace poniendo numérico tipo float ¿no?
Sí, se hace poniendo un float, pero te recomiendo que leas la función print, pues es una de las formas de especificar la cantidad de decimales.
Vale ya lo hecho solo tenía que ponerlo de esta manera:


<?php  echo round($Resultado,2); ?>


:cool: