Foros del Web » Programando para Internet » PHP »

No logro hacer funcionar un contador

Estas en el tema de No logro hacer funcionar un contador en el foro de PHP en Foros del Web. Hola a todos, estoy tratando de hacer un contador de visitas que se base en ip y use mysql. El caso es que pude hacer ...
  #1 (permalink)  
Antiguo 10/01/2013, 07:41
Avatar de lisandrogiovani  
Fecha de Ingreso: enero-2013
Ubicación: Santiago de Chile
Mensajes: 6
Antigüedad: 11 años, 3 meses
Puntos: 0
No logro hacer funcionar un contador

Hola a todos, estoy tratando de hacer un contador de visitas que se base en ip y use mysql.
El caso es que pude hacer uno, pero solo me sirve en una sola pagina, es decir, si coloco el mismo contador en otra pagina no funciona.
Este es el codigo del contador:
Código PHP:
<!-- CONTADOR VISITAS -->
<?php   
    
//CONEXION BASE DE DATOS
    
$conexion mysql_connect("DATOS DE SERVIDOR Y BASE"
    or die (
'Ha fallado la conexión: '.mysql_error());
    
//SELECCIONAR BASE
    
mysql_select_db("BASE DE DATOS")
    or die (
'Error al seleccionar la BD: '.mysql_error());
    
//VARIABLES
    
$ip $_SERVER['REMOTE_ADDR'];
    
$titulo_pelicula == "$pelicula";
    
//CONSULTAR IP EXISTENTES
    
$consulta "SELECT id,ip,titulo_pelicula,numero_visita,fecha,TIMEDIFF(NOW(),fecha) FROM contador_visitas"//OBTENER DATOS DE LA BASE
    
$ejecutar mysql_query($consulta$conexion);
    
$resultado=mysql_fetch_array($ejecutar);
    
$numero_visitas $resultado ['numero_visita'];

    if (
$resultado['ip'] == $ip && $resultado['titulo_pelicula'] == $pelicula//lo que creo que hago aca es decir 
//"si la ip de la base es igual a la del servidor y el titulo de pelicula de la base
// es igual a la pelicula de la pagina hacer lo de abajo
        
{
            if (
$resultado ['TIMEDIFF(NOW(),fecha)'] > "00:15:00"//Si la diferencia de tiempo entre las fechas
// de la base de datos y la actual es menor a quince minutos, hacer...
//Es aqui donde creo que debe haber un error pero no logro verlo
                
{    
                    echo 
"La diferencia es mayor a 15 minutos";
                    
$numero_visita $resultado ['numero_visita'];
                    
$numero_visita ++;
                    echo 
$numero_visita;
                    
$aumentar_visita "UPDATE contador_visitas SET numero_visita=$numero_visita WHERE titulo_pelicula='$pelicula' AND ip='$ip'"//Aumentar en 1
// el numero de la visita
                    
mysql_query ($aumentar_visita,$conexion);
                    echo 
$resultado['ip'];
                }
        }
    else 
//Si la ip consultada en la tabla y o el titulo de pelicula no existen, entonces
        
{
            echo 
"Primera Visita";
            
$primera_visita++;
            
$guardar "INSERT into contador_visitas (ip,titulo_pelicula,numero_visita) values('$ip','$pelicula','$primera_visita')";
            
mysql_query ($guardar,$conexion);
        }
    
//CERRAR CONEXION A BASE DE DATOS
    
mysql_close($conexion);
?>   
<!-- FIN CONTADOR VISITAR -->
El caso es que en una pagina que tiene como variable $pelicula = "Pelicula1" e IP 111.111.111.111, por ejemplo, y si la base esta vacia, ingresa los datos de ip, titulo_pelicula y fecha (la fecha es en un TIMESTAMP). Y si actualizo la pagina, no hace nada. Si actualizo luego de 15 minutos, me actualiza correctamente el numero_visita sumandole 1.
Pero si tengo otra pagina con la variable $pelicula = "Pelicula2" e ip 111.111.111.111 (ojo que es la misma ip de pelicula1) lo unico que hace es agregar ip, titulo_pelicula, fecha y numero_visita una y otra vez, es como si no pasara el if para comprobar si han pasado mas de 15 minutos, porque ingresa los mismos datos cada vez que actualizo la pagina y no como con pelicula1 donde si no han pasado mas de 15 minutos no hace nada.

Espero haberme explicado bien y espero que me puedan ayudar.
No soy experto en esto asi que aun me cuesta un poco.

De antemano, muchas gracias.
  #2 (permalink)  
Antiguo 10/01/2013, 08:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: No logro hacer funcionar un contador

Código PHP:
Ver original
  1. $consulta = "SELECT id,ip,titulo_pelicula,numero_visita,fecha,TIMEDIFF(NOW(),fecha) FROM contador_visitas";

esto da la info de todas las ips y de todas las peliculas... tu apartir de eso trabajas como si solo hubiese respondido con un dato cuando potencialmente de da n.

Deberias usar

Código PHP:
Ver original
  1. $consulta = "SELECT id,ip,titulo_pelicula,
  2.     numero_visita,fecha,TIMEDIFF(NOW(),fecha)
  3. FROM contador_visitas
  4. WHERE ip=$ip and titulo_pelicula='$titulo_pelicula'";

Con esto obtendrás un registro o ninguno y no n como en tu query.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 10/01/2013, 10:09
Avatar de lisandrogiovani  
Fecha de Ingreso: enero-2013
Ubicación: Santiago de Chile
Mensajes: 6
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No logro hacer funcionar un contador

Gracias quimfv
La verdad lo habia pensado asi, pero no se porque quite esa parte del codigo.
Pero de todas maneras muchas gracias.

Etiquetas: contadores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:22.