PHP - Contador continuo

 
Vista:
sin imagen de perfil

Contador continuo

Publicado por Banshi (8 intervenciones) el 07/11/2015 11:43:48
Buenos dias,
Necesito realizar un contador que se vaya actualizando sobre la marcha, es decir que yo vea que va cambiando su valor como si fuera un reloj, que no dependa el valor de cuando entre en la web. He hecho un ejemplo de código que no funciona para daros una idea. A ver si me podéis orientar con el lenguaje adecuado o de la forma que se podría modificar el código que os muestro. Muchas gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<html>
<style type="text/css">
    div {
    background-color: cornflowerblue;
    color: white;
    font-size: 20px;
    font-style: oblique;
    font-weight: bold;
    width: 200px;
    padding: 10px;
    border-radius: 5px;
    align-content: center;
    -webkit-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);
    -moz-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);
    box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);
 
        }
</style>
 <body>
     <div id="cosa" /></div>
 
 
    <?php
        $fp=fopen("conteo.txt","r");
        $linea=fgets($fp);
        fclose($fp);
    ?>
 
  <script>
      var cantidad=15;
      var cuenta=<?php echo $linea;?>;
      setInterval(function(){
 
          cuenta = cuenta + cantidad;
 
          <?php
                $variable =  "<script>document.write(cuenta);</script>";
                $fp=fopen("conteo.txt","w");
                fputs($fp,$variable);
                fclose($fp);
            ?>
 
        document.getElementById('cosa').innerHTML = cuenta + " Conteo";
 
 
     }, 1000);
 
 </script>
 
 </body>
</html>

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Contador continuo

Publicado por voreno (33 intervenciones) el 07/11/2015 16:37:22
Lo que quieres se consigue con ajax.

Te dejo un ejemplo de como se haría suponiendo que tienes el numero de visitas almacenado en una base de datos mysql:

Dentro de head:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    function update(){
        $.ajax({
            type: "POST",
            url: "archivo-consulta.php",
            data: dataString,
            success: function() {
                $('#counter').text(sum);
            }
        });
    }
 
    setInterval(update, 3000);
});
</script>

El numero de visitas tendría que ir en un contenedor dentro del body:

1
2
3
<span id="value"><? $a = mysqli_query("SELECT visitas FROM tabla where id='5'") or die(mysqli_error());
$b = mysqli_fetch_array($a);
echo $b[0]; ?></span>

Tendrás que crear un archivo php con la consulta y ajax se encargara de ejecutar la consulta en tiempo real cada 3 segundos:

archivo-consulta.php:

1
2
3
4
5
<?php
$a = mysqli_query("SELECT visitas FROM tabla where id='5'") or die(mysqli_error());
$b = mysqli_fetch_array($a);
echo $b[0];
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Contador continuo

Publicado por Banshi (8 intervenciones) el 07/11/2015 19:53:35
No es un contador de visitas exactamente, quiero que vaya incrementando x unidades cada x segundos. De todas formas en el ejemplo que me pones, no veo que se incremente en una unidad en ningún momento(al menos no lo veo). Lo que se hace es realizar la consulta de la base de datos cada 3 segundos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Contador continuo

Publicado por voreno (33 intervenciones) el 07/11/2015 20:14:16
Entendí mal tu consulta

El siguiente ejemplo te suma +1 cada 3 segundos, lo va almacenando en la base de datos y va mostrando el resultado en pantalla en tiempo real.

Primero, la conexión y consulta:

1
2
3
4
5
6
7
8
<?php
include('conexion.php');
 
$result = $conexion->query("SELECT * FROM `contador` WHERE id='5'");
if ($result->num_rows > 0) {
    $fetch = $result->fetch_assoc();
}
?>

en el head:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    function update(){
        var current = $('#contador').text();
        var sum = Number(current) + 1;
        var dataString = 'suma='+suma;
 
        $.ajax({
            type: "POST",
            url: "suma.php",
            data: dataString,
            success: function() {
                $('#contador').text(sum);
            }
        });
    }
 
    setInterval(update, 3000);
});
</script>

en el body:

1
<span id="contador"><?php echo $fetch['contador']; ?></span>

Archivo suma.php:

1
2
3
4
5
6
<?php
include('conexion.php');
$suma = $_POST['suma'];
$update = "UPDATE contador SET contador = ".$suma." WHERE id = '5'";
$conexion->query($update);
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Contador continuo

Publicado por voreno (33 intervenciones) el 08/11/2015 10:45:39
Por cierto en el primer ejemplo que te puse podías incrementar +1 o lo que quieras incluyendo un update.

1
2
3
4
5
6
<?php
mysqli_query("UPDATE tabla SET contador=contador+1 WHERE id = '5'";
$a = mysqli_query("SELECT contador FROM tabla where id='5'") or die(mysqli_error());
$b = mysqli_fetch_array($a);
echo $b[0];
?>

esto, incluyendo el ajax que te puse, te sumaria +1 y lo imprimiría en pantalla en tiempo real cada 3 segundos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Contador continuo

Publicado por Oriol (1 intervención) el 28/07/2020 18:32:28
Se podría hacer el contador sin base de datos? solo con php y ajax? que vaya aumentando X numeros cada X tiempo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar