Hola nuevamente gente de forosdelweb, he estado trabajando en el Script de me gusta de Marcofbb: http://www.marcofbb.com.ar/script-me-gusta-hecho-en-php/ pero el lo tiene para un sistema de noticias donde esta es su DB
Código PHP:
CREATE TABLE `post` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(255) collate utf8_unicode_ci NOT NULL,
`megusta` int(11) default '0',
`ips` text collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
agregue la fila de "megusta" y la de "ips" a mi DB quedando de la siguiente forma
Código PHP:
CREATE TABLE `usuarios` (
`usuario_id` int(4) NOT NULL AUTO_INCREMENT,
`usuario_matricula` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`usuario_clave` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`usuario_nombre` varchar(60) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`usuario_email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`sexo` tinyint(6) NOT NULL DEFAULT '0',
`usuario_avatar` varchar(250) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`estatus` tinyint(2) NOT NULL DEFAULT '0',
`megusta` int(11) NOT NULL DEFAULT '0',
`ips` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`usuario_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ;
ahora les dejo los archivos php que he modificado para que funcionen con mi db
voto.php
Código PHP:
<?php
$dbhost = "127.0.0.1"; // Servidor
$dbuser = "root"; // Nombre de usuario
$dbpass = "123456"; // Contraseña
$dbname = "usuariosdb"; // Nombre de la base de datos
# Creamos conexion a la base de datos
$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
# Imprimimos una prueba para dar como ejemplo
$sql = "SELECT * FROM usuarios ORDER BY megusta DESC";
$query = mysql_query($sql,$link);
?>
<table width="800" border="0" align="center">
<tr>
<td width="5%" align="center">ID</td>
<td width="63%" align="center">USUARIO</td>
<td width="32%" align="center">ME GUSTA</td>
</tr>
<?php
while($row = mysql_fetch_assoc($query))
{?>
<tr>
<td width="5%" align="center"><?=$row['usuario_id']?></td>
<td width="63%" align="center"><?=$row['usuario_matricula']?></td>
<td width="32%" align="center">[<a href="index.php?page_id=megusta&voto=positivo&id=<?=$row['usuario_id']?>">Me gusta</a>] <?=$row['megusta']?> [<a href="index.php?page_id=megusta&voto=negativo&id=<?=$row['usuario_id']?>">No me gusta</a>]</td>
</tr>
<?php
}
?>
</table>
y aca el script que hace todo
megusta.php
Código PHP:
<?php
$dbhost = "127.0.0.1"; // Servidor
$dbuser = "root"; // Nombre de usuario
$dbpass = "123456"; // Contraseña
$dbname = "usuariosdb"; // Nombre de la base de datos
# Creamos conexion a la base de datos
$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
# Saber si el voto es negativo o positivo
$voto = htmlentities($_GET['voto']);
# Tomamos el id de nuestro post y vemos todas las ip que pusieron megusta
$usuario_id = (int) $_GET['usuario_id'];
$query = mysql_query("SELECT usuario_id,ips FROM usuarios WHERE usuario_id='".$usuario_id."'",$link);
$row = mysql_fetch_assoc($query);
$ip = $row['ips'];
# Obtenemos la ip de nuestro visitante
if ($HTTP_X_FORWARDED_FOR == "") {
$ipp = getenv(REMOTE_ADDR);
}
else {
$ipp = getenv(HTTP_X_FORWARDED_FOR);
}
# Me gusta o No me gusta
switch($voto)
{
case "positivo";
if($query)
{
$var = explode(",", $ip);
$arr = in_array($ipp, $var);
if(!$arr)
{
mysql_query("UPDATE usuarios SET megusta=megusta+1, ips=CONCAT(usuarios.ips,'".$ipp.",') WHERE usuario_id='".$usuario_id."'",$link);
}
}
break;
case "negativo";
if($query)
{
$var = explode(",", $ip);
$arr = in_array($ipp, $var);
if(!$arr)
{
mysql_query("UPDATE usuarios SET megusta=megusta-1, ips=CONCAT(usuarios.ips,'".$ipp.",') WHERE usuario_id='".$usuario_id."'",$link);
}
}
break;
}
header('location:index.php?page_id=voto');
?>
el archivo voto.php muestra un ranking donde muestra a todos los usuarios registrados y a un costado te aparecen 2 links para darle megusta o no me gusta y enmedio de esos 2 sale la cantidad de votos que ha recibido pero al precionar sobre alguno de esos 2 links no da ni quita nada y siempre queda en 0 la unica forma de darle votos es manualmente mediante el phpmyadmin y el ranking voto.php si los muestra
no estoy seguro si tenga algo mal mi DB o mi modulo de registro que tenga que ver con la IP o el link que me genera el voto.php no funcione ese es mi unico problema que al precionar no da los votos y ya no se que más hacer ya he movido casi todo y nada espero me puedan ayudar con este problema que tengo
por las dudas aca les dejo el sistema modular que tengo en el index.php
Código PHP:
<?
if(empty($_GET['page_id'])) {
include("modulos/news.php");
} else {
switch ($_GET['dir']) {
default:
$dir = "modulos/".$_GET['page_id'].".php";
$file = "modulos/".basename($_GET['page_id']).".php";
break;
}
if(file_exists($dir)) {
include($file);
} else {
echo '<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=85%>'.text_site_module.'</td>
</tr>
</table>';
}
}
?>