• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • Conoce los Días Naranjas de PcComponentes: descuentos de hasta un 40% en tecnología. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Como hacer mi propio contador de me gusta ( no agregar el de facebook)

urbon

Nuevo
Registrado
30 Jun 2015
Mensajes
41
Puntos
0
Buenas tardes! Estoy creando una web, sin plantillas, en la que quiero agregar un botón personalizado que cuente clicks (los usuarios harían click si les gusta el objeto). Tenía un botón creado pero, claro, al actualizar la página, el contador volvía a estar a cero. He hecho un contador nuevo, en PHP Mysql y ajax. Pero me no me funciona, he revisado todo y parece que todo está bien.

Aquí pongo los códigos:


este es el botón:

<?php
if(!$_GET){
$yourID = 5;
}else{
$yourID = $_GET['id'];
}
?>
<?php

include('funciones.php');
echo '<button id="boton" data-id="5">Cojinudo</button> <span id="resultado">' . get_likes($yourID) . '</span>';
?>


este es el script:


$(document).ready(function () {
$('#boton').click(function () {
contador($(this).data('id'));
});
});

function contador(id) {
$.ajax({
url: 'contador.php',
type: 'GET',
dataType: 'json',
data: {id: id},
success: function (response) {
$('#resultado').html(response.votos);
$('#boton').prop('disabled',true);
},
});
}


este es el códigp php del fichero contador.php:

<?php
require("conexion.php");
include("funciones.php");

$ip = getIp();
$yourID = $_GET['id'];
$query = "SELECT votos FROM encuesta inner join votos on votos.id_encuesta=encuesta.id WHERE id_encuesta=" . $yourID . " limit 1;";
$result = mysqli_query($connect, $query);
$votos = null;
$data = array();
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
$votos = (int)$row['votos'];
$votos++;
$queryEncuesta = "UPDATE encuesta SET votos=" . $votos . " WHERE id=" . $yourID . ";";
mysqli_query($connect, $queryEncuesta);
$queryVotos = "INSERT INTO votos(id_encuesta,ip) VALUES (" . $yourID . ",'" . $ip . "');";
mysqli_query($connect, $queryVotos);
$data = array('votos' => $votos);
}
echo json_encode($data);
?>


este es el códigp php del fichero funciones.php:

<?php
function get_likes($id){

include('conexion.php');

$connect = mysqli_connect();
$query = "SELECT votos FROM encuesta WHERE id='" . (int)$id . "';";
$result = mysqli_query($connect, $query);
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
if ($row['votos'] == "") {
return '0';
} else {
return $row['votos'];
}
}
mysqli_close($connect);
}
//// Función para obtener la IP
function getIp()
{
$ip = $_SERVER['REMOTE_ADDR'];

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}

return $ip;
}
?>


Agredecería que me echen una mano!!!!!

Gracias.
 
Última edición:
Pseudocódigo, despues te lo traduces tu.

Base de datos con dos tablas: Clicks y Objetos.

En Objetos, lo clásico, Id del objetos, nombre, descripcion, etc.
En Clicks, Id del click, Id del objeto gustado.

En el HTML pones el objeto y un boton (puede ser un form con un button, o un enlace) que apunte a una página php con una variable tipo GET: IDOBJETO

En la pagina PHP recuperas esa variable GET, e insertas un registro en la tabla Clicks con el id del objeto (el Id del click que sea auto-incremental). Ya tienes diferenciacion de objetos.

En la página donde salen los objetos, tienes que recuperar el número de clicks con el ID de ese objeto, con un simple COUNT() en el SQL.



Es lo mas simple que se me ocurre, aunque ya es un caso muy completo de mezcla de PHP y SQL. Depende de vuestro nivel, os será más fácil o dificil llevarlo a cabo.


El del enlace se mete con ajax (para evitar ir a otra página para insertar el registro) y tiene un disgregador de IP (evitar multie-votos, aunque yo lo haría con cookies). Depende de vuestro nivel que sea mejor o peor. El copia-pega en estos casos no suele funcionar.
 
Muchas gracias.

Me ha servido de ayuda , si tengo alguna duda volveré a escribir.
 
Arriba