Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: J0RG325 en 31 Marzo 2013, 07:21 am



Título: AYUDA Script Me Gusta Adaptado
Publicado por: J0RG325 en 31 Marzo 2013, 07:21 am
Hola nuevamente gente de foro elhacker, he estado trabajando en el Script de me gusta de Marcofbb: http://www.marcofbb.com.ar/script-me-gusta-hecho-e... pero el lo tiene para un sistema de noticias donde esta es su DB

Código
  1. CREATE TABLE `post` (
  2.  `id` int(11) NOT NULL auto_increment,
  3.  `nombre` varchar(255) collate utf8_unicode_ci NOT NULL,
  4.  `megusta` int(11) default '0',
  5.  `ips` text collate utf8_unicode_ci NOT NULL,
  6.  PRIMARY KEY  (`id`)
  7. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
  8.  

agregue la fila de "megusta" y la de "ips" a mi DB quedando de la siguiente forma

Código
  1. CREATE TABLE `usuarios` (
  2.  `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  3.  `usuario_matricula` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  4.  `usuario_clave` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  5.  `usuario_nombre` varchar(60) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  6.  `usuario_email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  7.  `sexo` tinyint(6) NOT NULL DEFAULT '0',
  8.  `usuario_avatar` varchar(250) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  9.  `EstadoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  10.  `CodigoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  11.  `megusta` int(11) NOT NULL DEFAULT '0',
  12.  `ips` text COLLATE utf8_unicode_ci NOT NULL,
  13.  `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  14.  PRIMARY KEY (`usuario_id`)
  15. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;
  16.  


ahora les dejo los archivos php que he modificado para que funcionen con mi db

voto.php

Código
  1. <?php
  2. $dbhost = "127.0.0.1"; // Servidor
  3. $dbuser = "root"; // Nombre de usuario
  4. $dbpass = "123456"; // Contraseña
  5. $dbname = "usuariosdb"; // Nombre de la base de datos
  6.  
  7. # Creamos conexion a la base de datos
  8. $link = mysql_connect($dbhost,$dbuser,$dbpass);
  9.        mysql_select_db($dbname,$link);
  10.  
  11. # Imprimimos una prueba para dar como ejemplo
  12. $sql = "SELECT * FROM usuarios ORDER BY megusta DESC";
  13. $query = mysql_query($sql,$link);
  14. ?>
  15. <table width="800" border="0" align="center">
  16.  <tr>
  17.    <td width="5%" align="center">ID</td>
  18.    <td width="63%" align="center">USUARIO</td>
  19.    <td width="32%" align="center">ME GUSTA</td>
  20.  </tr>
  21. <?php
  22. while($row = mysql_fetch_assoc($query))
  23. {?>
  24.  <tr>
  25.    <td width="5%" align="center"><?=$row['usuario_id']?></td>
  26.    <td width="63%" align="center"><?=$row['usuario_matricula']?></td>
  27.    <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>
  28.  </tr>
  29. <?php    
  30. }    
  31. ?>
  32. </table>
  33.  

y aca el script que hace todo

megusta.php

Código
  1. <?php
  2. $dbhost = "127.0.0.1"; // Servidor
  3. $dbuser = "root"; // Nombre de usuario
  4. $dbpass = "123456"; // Contraseña
  5. $dbname = "usuariosdb"; // Nombre de la base de datos
  6.  
  7. # Creamos conexion a la base de datos
  8. $link = mysql_connect($dbhost,$dbuser,$dbpass);
  9.        mysql_select_db($dbname,$link);
  10. # Saber si el voto es negativo o positivo
  11. $voto = htmlentities($_GET['voto']);
  12.  
  13. # Tomamos el id de nuestro post y vemos todas las ip que pusieron megusta
  14. $usuario_id = (int) $_GET['usuario_id'];
  15. $query = mysql_query("SELECT usuario_id,ips FROM usuarios WHERE usuario_id='".$usuario_id."'",$link);
  16. $row = mysql_fetch_assoc($query);
  17. $ip = $row['ips'];
  18.  
  19. # Obtenemos la ip de nuestro visitante        
  20. if ($HTTP_X_FORWARDED_FOR == "") {
  21. $ipp = getenv(REMOTE_ADDR);
  22. }
  23. else {
  24. $ipp = getenv(HTTP_X_FORWARDED_FOR);
  25. }
  26.  
  27. # Me gusta o No me gusta
  28. switch($voto)
  29. {
  30. case "positivo";
  31.    if($query)
  32.    {
  33.        $var = explode(",", $ip);
  34.        $arr = in_array($ipp, $var);
  35.        if(!$arr)
  36.        {
  37.            mysql_query("UPDATE usuarios SET megusta=megusta+1, ips=CONCAT(usuarios.ips,'".$ipp.",') WHERE usuario_id='".$usuario_id."'",$link);
  38.        }
  39.    }
  40. break;    
  41. case "negativo";
  42.    if($query)
  43.    {
  44.        $var = explode(",", $ip);
  45.        $arr = in_array($ipp, $var);
  46.        if(!$arr)
  47.        {
  48.            mysql_query("UPDATE usuarios SET megusta=megusta-1, ips=CONCAT(usuarios.ips,'".$ipp.",') WHERE usuario_id='".$usuario_id."'",$link);
  49.        }
  50.    }
  51. break;
  52. }
  53. header('location:index.php?page_id=voto');
  54. ?>
  55.  

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
  1. <?php
  2. if(empty($_GET['page_id'])) {  
  3.    include("modulos/news.php");  
  4. } else {
  5.    switch ($_GET['dir']) {
  6.    default:
  7.        $dir = "modulos/".$_GET['page_id'].".php";
  8.        $file = "modulos/".basename($_GET['page_id']).".php";
  9.        break;
  10.    }
  11.    if(file_exists($dir)) {  
  12.        include($file);  
  13.    } else {  
  14.        echo '<table border=0 cellpadding=0 cellspacing=0>  
  15.        <tr>  
  16.        <td width=85%>'.text_site_module.'</td>  
  17.        </tr>  
  18.        </table>';  
  19.    }  
  20. }  
  21. ?>
  22.