Nueva pregunta

Pregunta:

Fecha: 08-04-2015 03:04:18 (En Español)

Contador de click's en PHP[Resuelta]

Hola gente de PHP central, mi problema o lo que quiero ser es como un contador de click y que este se escriban en un archivo de texto, pero quiero llamarlo desde ajax, para que lo pueda hacer funcionar con onclcick y traer un echo que pondra cuantos clicks llevan, en este caso cuantas veces se le ha dado play al video, pero aun asi creo que no me van a entender explico mas detallado:

asi seria el archivo, counter.txt (solo tendria algunas cosas ejemplo) :

el la linea 1 del documento tendria
1-25-http://www.taldominio.com/video?id=67773-17/04/2015-183.534.65.77
2-35-http://www.taldominio.com/video?id=3473-17/04/2015-183.543.65.75


bueno explico lo de arriba:

1 es la linea o id para que detecte supongo la linea o se como podria hacer que esto que explico en esto después de - que con explode de php si no me equivoco logras que entienda que hay despues de cada - disculpen so se si me explique bien espero lo entiendan, pero bueno el segundo es el contadoe que se seguira sumando cada vez que alguien le de click en el play del video, conste se como hacer que solo sea una vez 77, para que no se sume cada vez que le den al play, saben a lo que me refiero los que saben de html5 y javascript y crear un reprodictor en fin los otro creo que lo entienden quiero que tambien ponga datos y algunos ya estaran ejemplo: 1 2 3 4 5 lo que vam en cada linea, el segundo estara en 0 pero seguira sumando cada vez que le den click al boton del play, lo 3 se agrega, dependiendo de que url de video se trata, lo otro es la fecha, y por ultimo la ip de la persona que le dio click hehe no pido nada verdad xD, conste que casi lo logro hacer con una base de datos antes que con esto, pero pense dos razones por cuales no en una base de datos, 1. 77 simplemente haria muchas bases de datos o la base de datos seria muy gigante y me confundiria, ya que para darles un ejemplo si pongo una base de datso que ponga estos datos y dependiendo la url de cual se le dio click @.@ quedaria confunso, porfa alguien me ayudaria un poco no sean malos al menos a entender como le haria, aqui les dejo un codigo que es simple pero no me funciona solo para poner solo una linea :/ ademas como las llamaria por id para saber de que urdel video se le dio play y seguir sumando el conteo, si ocupan que les explique mas solo comentenlo ^^

ejemplo del texto: (para que me entiendan mejor)http://youanimeoficial.webcindario.com/counter.txt

<?php
// Archivo en donde se acumulará el numero de visitas
$link = 1;
$link2 = 2;
if($link==1) {

$archivo = "counter.txt";



// Abrimos el archivo para solamente leerlo (r de read)

$abre = fopen($archivo, "r");



// Leemos el contenido del archivo

$total = fread($abre, filesize($archivo));



// Cerramos la conexión al archivo

fclose($abre);



// Abrimos nuevamente el archivo

$abre = fopen($archivo, "w");



// Sumamos 1 nueva visita

$total = $total + 1;



// Y reemplazamos por la nueva cantidad de visitas

$grabar = fwrite($abre, $total . PHP_EOL);



// Cerramos la conexión al archivo

fclose($abre);
} else if($link2==2) {
$archivo2 = "counter.txt";
$abre2 = fopen($archivo2, "r");



// Leemos el contenido del archivo

$totalq = fread($abre2, filesize($archivo2));



// Cerramos la conexión al archivo

fclose($abre2);



// Abrimos nuevamente el archivo

$abre2 = fopen($archivo2, "w");



// Sumamos 1 nueva visita

$totalq = $totalq + 1;


// Y reemplazamos por la nueva cantidad de visitas

$grabar2 = fwrite($abre2, $totalq . PHP_EOL);



// Cerramos la conexión al archivo

fclose($abre2);
}
?>
Etiquetas: Base de Datos - PHP - Pregunta Votos: 0 - Respuestas: 8 - Vistas: 23 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 08-04-2015 06:29:59 Ok, yo usaria una DB , pero si lo quieres hacer en un txt usaria un JSON para guardar la data y obtenerla mas facil y poder tambien hacer busquedas en la data, ahora antes de comentarte mas de lo que te sugiero hacer, una pregunta.

    En que momento incrementa el valor de reproducciones?
    Las reproducciones se anidan al usuario o al video?

    Saludos, espero tu respuesta.
      Votos: 1 - Link respuesta
     
  • Fecha: 08-04-2015 07:49:34 Creo que te estas complicando mucho, si lo manejas en una base de datos seria mucho mas fácil, aprovechando las herramientas que proveen las bases de datos, y en este caso especifico los triggers,

    Bueno es una sugerencia..
      Votos: 1 - Link respuesta
     
  • Fecha: 08-04-2015 10:11:55 Con JSON? mmm, casi no he trabajo con el :/ solo para hacer una extension simple para google chrome, no se si le pueda entender,ahi esta lo malo, y cierto como dicen los dos seria mas facil con una base de datos pero me pregunto no estaria muy gigante tal tabla que almacenaria tantas urls o.o imaginate si subo una serie de 120 caps y eso es solo una serie :/ tendria que hacer otra tras otra y simplemente, no quiero hacer eso, y use update para que se actualizara el valor, aunque con un simple if(isset($_POST[])) resuelves que no se actualize el numero al cargar la pagina n.n lamentablemente es en form y no puedo hacerlo funcionar si bienen de diferentes urls de video :/, y sobre archivo texto, es mucho mas facil, creo.

    Y jony respondiendo a tu pregunta seria mas facil que te diera una idea mas lo que tengo hecho hasta ahora solo yo te puse un archivo de texto con la idea pero no funciona aqui esta el ejemplo:

    <?php
    // Archivo en donde se acumulará el numero de visitas

    $archivo = "example.txt";



    // Abrimos el archivo para solamente leerlo (r de read)

    $abre = fopen($archivo, "r");


    // Leemos el contenido del archivo

    $total = fread($abre, filesize($archivo));



    // Cerramos la conexión al archivo

    fclose($abre);



    // Abrimos nuevamente el archivo

    $abre = fopen($archivo, "w");



    // Sumamos 1 nueva visita

    $total = $total + 1;


    // Y reemplazamos por la nueva cantidad de visitas

    $grabar = fwrite($abre, $total);



    // Cerramos la conexión al archivo

    fclose($abre);

    $ip = $_SERVER['REMOTE_ADDR'];

    $abre = fopen($archivo, "a+");

    $grabaru = fwrite($abre, $ip);

    fclose($abre);
    ?>

    la verdad es que solo es una simple cuenta de suma mas bien un contador, aqui les puse un ejemplo y en el archivo example.txt se modifica la cuenta y se agrega la ip del usuario aunque me di cuenta de algo :/ no mas se pueden agregar dos cosas en el fwrite($abre, $ip); y no mas en archivo txt, si le pongo 3 osea asi = fwrite($abre, $ip, $aqui_otra_variable); me saca un error, bueno tal vez pero de la otra forma seria muy largo el codigo y y como llamaria el click eso es lo quieres saber, al llamar al click con form este inclementa el valor aunque solo lo pude hacer que funcionara con un input en formulario aunque yo lo queria llamar con ajax en una function onclick o asi, pero ya me convenci que seria mejor en en json o en php, si me entiendieron lo que mas o menos quiero hacer, me podrian ayudar en hacerlo en una base de datos o en json como dice jony o en cualquier otra idea sera bienvenida ^^ porfa, y jony ya sabes que lo queria llamar desde ajax con un onclick si se podia n.n, mas o menos como cuando se hace una votacion y te trae la respuesta desde ajax con onclick y asi no recargar la pagina perto seguir sumando el conteo ya sea en la respuesta no o si ejemplo n.n, disculpen mi ignorancia de no poder explicar bien pero es que ni yo me entiendo con este codigo u.u.
      Votos: 0 - Link respuesta
     
  • Fecha: 08-04-2015 12:56:23 //Ok, creo que te entendi que es lo necesitas hacer, bueno si seria por DB yo la estructura que usaria seria esta:

    $query="
    CREATE TABLE video (
        id AUTO_INCREMENT PRIMARY KEY,
        URL TEXT NOT NULL,
        descripcion VARCHAR(100) NOT NULL
    )
    
    CREATE TABLE user (
        id AUTO_INCREMENT PRIMARY KEY,    
        ip VARCHAR(100) NOT NULL
    )
    
    CREATE TABLE user_video (
        id AUTO_INCREMENT PRIMARY KEY,
        id_user INT NOT NULL,
        id_video INT NOT NULL,
        count INT NOT NULL DEFAULT 0,
        FOREIGN KEY (id_user) REFERENCES user(id) ON DELETE CASCADE,
        FOREIGN KEY (id_video) REFERENCES video(id) ON DELETE CASCADE
    )";
    


    //Ahora bien si lo haces en JSON, no es nada complicado son dos funciones de PHP tu construis un array con los registros que quieres guardar luego lo encodeas y lo guardas en un TXT y luego cuando quieres modificarlo obtienes el JSON lo decencodeas le agregas el registro y lo vuelves a encodear y guardar en el TXT. Te dejo las funciones que tienes que utilizar.

    JSON ENCODE

    JSON DECODE

    Ahora la llamada de Ajax, seria mas o menos asi.


    Code html
    
    <a href="#" onClick="return ajax_call();"> Pulsa aqui </a> 
    
    


    Code JS
    <script>
      var ajax_call = function() {   
                                $.ajax({
                                    type: "POST",
                                    url: "funcion.php",
                                    data: { "codigo" :  "codigo" },
                                    success: function(data){
                                        alert(data);
                                    }
                                })
                            };
        </script>
    


    Code: funcion.php

    <?php        
        echo 'Aqui haces tus DELETE UPDATE Y SELECT a DB y demas... o en Cambios Al txt';
    ?>
    



    Espero, haber ayudado.

    Me cuentas como te va o si esta confuso el codigo de ejemplo.
      Votos: 0 - Link respuesta
     
  • Fecha: 08-04-2015 17:58:15 OO orale no sabia que asi de sencillo se podia llamar al ajax jeje xD, bien en cuestion de hacerlo en la base de datos, me quedo mas que claro y si mas o menos asi seria la tabla n.n, ahora bien lo unico que no entendí en en metodo de Json, fue funcion.php ya que no entiendo en un echo poner la selecion a la base de datos oo eso se puede, no seria inseguro esa es una duda, y para aquellos que leyeron o para ti compañero jony n.n , lo unico que quiero es registrar la reproduccion de ciertos videos pero en paquete osea si la serie tiene 14 capitulos, entonces crear un archivo json y php y ajax o antes de json un texto, o si no en la base de datos y ahi poner los resultados algo asi como tener una mini base de datos, de esos 14 capítulos, bueno no mini, pero si registraria la ip asi podria controlar cuantas veces puede reproducir, el video una persona, mas o menos al estilo youtube, y gracias joni creo que me quedo con el json me gusto tu idea n.n aunque solo explícame la funcion php que no entendi, mas o menos como seria, porfa.   Votos: 0 - Link respuesta
     
  • Fecha: 08-04-2015 18:04:06 Es una funcion incompleta solo puse un Echo por que no se me ocurrio otra cosa , pero a lo que me queria referir esque alli podes hacer lo que tu quieras ya sea conectar a DB o Generar Json... pero ese codigo si te tocaria hacerlo ..


    Suerte
      Votos: 0 - Link respuesta
     
  • Fecha: 08-04-2015 18:18:30 Ok, he ya entendi, al menos ya me distes mas opciones y me resolviste algunas dudas muchas gracias joni y gracias tambien por tu tiempo ^^   Votos: 0 - Link respuesta
     
  • Fecha: 09-04-2015 07:06:23 Ok, denada suerte con tu proyecto :D   Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com