PHP - Sistema Megusta de un post con php y mysql

 
Vista:
Imágen de perfil de Iñaki
Val: 37
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Sistema Megusta de un post con php y mysql

Publicado por Iñaki (14 intervenciones) el 30/07/2017 18:55:10
Buenas,
Al publicar un post debajo tengo un botón "Me Gusta" típico de las redes sociales. Quiero que muestre los me gusta, que al hacer clic por cualquier usuario sume un me gusta, pero (importante) que cada usuario sólo pueda darle una sola vez o al menos que no sume más de un me gusta por un mismo usuario. ¿Me explico? Como las redes sociales habituales.

En phpMyAdmin he creado estas columnas en una tabla aparte a la de los post para enlazar mediante un join al tener que mostrarlos:

idPost (Auto incremental)
numMegustas (Dónde se guardarán las sumas por cada clic en me gusta)
idUsuario (Referenciando quien le da a me gusta para comprobar en cada clic si el usuario ya dio a me gusta, y si es así que no sume otro me gusta).

Debajo del post tengo un "Button" donde en onclick debe ir a un archivo "contadorMegustas.php" por ejemplo y ¿Cómo sería adecuado el proceso para su funcionamiento de contar me gustas?

contadorMegustas.php


1
2
3
4
5
6
7
<?php
//Traer el idUsuario de quien a iniciado sesión
//Traer el idPost para saber después a qué post sumarle el me gusta
//¿Cómo sería...?
 
 
?>

Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de [abZeroX]
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sistema Megusta de un post con php y mysql

Publicado por [abZeroX] (157 intervenciones) el 31/07/2017 04:05:43
1.Primero debes contar con el ID de usuario y el ID del post.
Luego con estos datos chequear en la tabla donde guardas los me gusta.
EJEMEPLO:
1
select * from likes where idPost=idPost and idUsuario=idUsuario;
2. Si la consulta anterior devuelve algún resultado quiere decir que el usuario ya le dio me gusta a ese post.
De no ser así deberías guardar el "me gusta" del usuario a ese post.
No se si también manejas el "ya no me gusta" por que de ser así en caso de que el usuario ya haya dado me gusta podrias simplemente quitarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Iñaki
Val: 37
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Sistema Megusta de un post con php y mysql

Publicado por Iñaki (14 intervenciones) el 31/07/2017 12:00:19
Genial, lo voy a probar a ver si lo consigo que estoy estudiando php mysql y no domino...xD
Te digo cualquier cosa...

¡Gracias! xD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Iñaki
Val: 37
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Sistema Megusta de un post con php y mysql

Publicado por Iñaki (14 intervenciones) el 31/07/2017 23:11:31
Bien, casi lo consigo, pero no.
Se me hace complicado explicarlo pero voy a intentar exponer dónde me surge el problemilla (básicamente en el idPost de cada post o publicación, que en el muro o donde están publicados la numeración idPost la puedo publicar con cada post sin problema con un
1
echo $user['idPost'];
en es while que representa todos los post, pero no consigo llevar ese idPost al darle al botón "Me gusta" al archivo php donde proceso el conteo.

Son dos archivos, en el primero (publicacionesPost.php) se ven los post con un while (perfectamente debajo del cual un botón "me gusta") incluso se ve el idPost de cada uno junto a cada post. El otro archivo (registrarMeGustasPost.php) es donde se contabiliza y hace el update en la base de datos.



publicacionesPost.php



/*Aquí después un select y un while, utilizando variables de sesión y tal... el valor $user['idPost'] es correcto en cada post*/
...
$postActual = $user['idPost'];
...
/*Entonces decido hacer un form para llevar el valor de ese Button "me gusta" con la idPost (número único de cada post) para en "registrarMeGustasPost.php se procese el conteo en el IdPost concreto.*/
...
1
2
3
4
5
6
echo "<form action='registrarMeGustaPost.php' method='post' id='form1'>";
echo "<input type='hidden' name='idPost' value='";
echo $postActual;
echo "'/>";
echo "<button type='submit' form='form1' value='Submit'>Me Gusta</button>";
echo "</form>";


/*Una vez vamos al otro archivo, se procesa pero siempre la idPost que trae es la última id de los post y no la actual. Es decir, todos los botones de los post o publicaciones hacen lo mismo. Coge como idPost el último.*/



registrarMeGustasPost.php



1
2
3
4
5
6
7
8
<?php
session_start();
include ('conexion.php');
$postActual = $_POST['idPost'];
$sql=mysqli_query($conn,"UPDATE postUsuarios SET meGustasPost = meGustasPost + 1 WHERE idPost = '$postActual'");
?>
 
/*Siempre toma la idPost la 59, es decir, la última*/



¿Cómo debería llevar el idPost adecuado en el botón MeGusta que está en cada post?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de [abZeroX]
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sistema Megusta de un post con php y mysql

Publicado por [abZeroX] (157 intervenciones) el 01/08/2017 00:36:17
Hola de nuevo, se queda con el ultimo post debido a que todos tiene el mismo atributo name.
Una solución rápida que puedo darte es que envíes el idPost a través de método GET, es decir:

1
echo "<a href='registrarMeGustaPost.php?idPost='".$postActual."'>Me Gusta</a>";

Usarías esto en lugar del form.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Iñaki
Val: 37
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Sistema Megusta de un post con php y mysql

Publicado por Iñaki (14 intervenciones) el 01/08/2017 23:41:25
Muchas gracias, eres muy amable pero...he hecho los cambios y no llega el dato a la otra página... ¿Qué hago mal?

publicacionesPost.php
1
2
3
4
//Si hago el siguiente echo de $idPost se visualiza el dato:
echo $postActual;
//Esto siguiente no hace que llegue el dato a la otra página (o quizás lo que hago en la siguiente página no hace que llegue...xD):
echo "<a href='registrarMeGustaPost.php?idPost='".$postActual."'>Me Gusta</a>";

registrarMeGustaPost.php
1
2
3
4
5
6
7
8
9
10
<?php
session_start();
include ('conexion.php');
 
$postActual = $_GET['idPost'];
echo "El idPost es:";
//No se visualiza ningín dato en este echo siguiente:
echo $postActual;
 
?>

¿Qué hago mal para que el dato no llegue al archivo registrarMeGustaPost.php?

Saludos y muchas gracias! ; )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de [abZeroX]
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sistema Megusta de un post con php y mysql

Publicado por [abZeroX] (157 intervenciones) el 02/08/2017 03:38:24
Hola, intenta cambiar en publicacionesPost.php por este enlace:
1
echo "<a href='registrarMeGustaPost.php?idPost=".$postActual."'>Me Gusta</a>";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Iñaki
Val: 37
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Sistema Megusta de un post con php y mysql

Publicado por Iñaki (14 intervenciones) el 03/08/2017 00:26:42
Funciona a la perfección.
Eres un crack!

¡Muchas gracias abZeroX!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar