Foros del Web » Programando para Internet » PHP »

Sencillo segundero.php

Estas en el tema de Sencillo segundero.php en el foro de PHP en Foros del Web. Hola amigos del foro, mi pretensión es crear un ejemplo de segundero.php, que no tiene por qué ser exacto, ya que es un simple ejemplo. ...
  #1 (permalink)  
Antiguo 12/03/2012, 09:47
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Sencillo segundero.php

Hola amigos del foro, mi pretensión es crear un ejemplo de segundero.php, que no tiene por qué ser exacto, ya que es un simple ejemplo. Lo quiero hacer de la siguiente manera:
Código PHP:
Ver original
  1. $segundo = $_POST['segundo'];
  2. $segundo = ("$segundo+1");
  3. if $segundo es = 60 ó "undefined" que sea = 0
  4. echo .$segundo
  5. setTimeout 1000
  6. enviar de nuevo la variable $segundo a segundero.php
No sé crear el if ni volver a enviar el dato

Os agradezco la ayuda.

Última edición por Etherman; 12/03/2012 a las 09:56
  #2 (permalink)  
Antiguo 12/03/2012, 09:58
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Sencillo segundero.php

no se cual es el propósito del "segundero" pero me parce que tratas de implementar una especie de cronometro en PHP, te recuerdo que PHP es del lado del servidor y no es muy eficiente usarlo para ese propósito, lo mejor es javascript.

PD: consulte un manual de programación básico para conocer los principios de las estructuras de control como if
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 12/03/2012, 10:03
Avatar de Chico3001  
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 12 años, 7 meses
Puntos: 12
Respuesta: Sencillo segundero.php

php no es un lenguaje que permanezca residente y ejecutandose constantemente, solo se ejecuta una vez cuando visitas el servidor

Asi que no puedes crear un segundero que ejecute una accion en cierto momento, lo unico que puedes hacer seria consultar la hora del servidor (TIME())y en base a eso ejecutar una accion
  #4 (permalink)  
Antiguo 12/03/2012, 10:07
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Como digo, es sólo un ejemplo que quería hacer funcionar:

El segundero o contador, está corriendo desde que entro a la página hasta que la cierro. Está en buble, reenviandose a sí mismo la informacion y recargandose, segundero.php, con un tiempo de por ejemplo "1000 milisegundos", viendo en ese tiempo un echo del número de 0 a 59. En el momento que llega a 60 el siguiente número en el contador es 0. Y la primera vez que entro tiene un "if Undefined = 0".
Entonces no sé cómo crear:

if($segundo == 'undefined') $segundo = 0
if ($segundo == '60') $segundo = 0
  #5 (permalink)  
Antiguo 12/03/2012, 10:12
Avatar de Chico3001  
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 12 años, 7 meses
Puntos: 12
Respuesta: Sencillo segundero.php

if (!isset($segundo))
$segundo = 0;

if ($segundo == '60')
$segundo =0;
  #6 (permalink)  
Antiguo 12/03/2012, 10:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Sencillo segundero.php

Recuerda que PHP se ejecuta en el servidor, por lo que no vas a poder ver el segundero, y cada que entres se va a refrescar la variable y nunca va a caminar.

Tienes que persistir de alguna forma esa variable entre cada request, puedes usar una sesión, o un parámetro GET o un formulario por POST.

Así simplemente es imposible hacerlo ya que cada que recargas la pagina el segundero se va a resetear ya que es un nuevo request.

Te conviene mucho más usar un cronometro en Javascript para hacer lo que quieres.

Saludos.
  #7 (permalink)  
Antiguo 12/03/2012, 11:13
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Antes de nada muchas gracias a maycolalvarez, Chico3001, y GatorV.

Hola GatorV, a nivel práctico, desde luego es preferible usar un script js, recalco que sólamente se trata de un experimento.

Me has dicho que en GET se puede hacer, aunque me gustaba más en post, ya que no se vé en en la barra de direcciones del explorador. Pero en GET queda así:

Código PHP:
<?php 
$segundo 
$_GET['segundo']; 
if (!isset(
$segundo))
$segundo = -1;
$segundo = ($segundo+1);
if (
$segundo '59')
$segundo 0;
echo 
$segundo;
set_time_limit(1);
header ("Location: http://localhost/segundero.php?segundo=$segundo");
?>
Aunque me tira este error:
"Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\segundero.php:2) in C:\AppServ\www\segundero.php on line 10"
  #8 (permalink)  
Antiguo 12/03/2012, 11:20
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Sencillo segundero.php

Cita:
"Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\segundero.php:2) in C:\AppServ\www\segundero.php on line 10"
ese error sale por que tienes un "echo" antes del header, para poder utilizar el header no tienes que mostrar nada en pantalla antes :)
  #9 (permalink)  
Antiguo 12/03/2012, 11:28
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Cita:
Iniciado por xxxivanxxx Ver Mensaje
ese error sale por que tienes un "echo" antes del header, para poder utilizar el header no tienes que mostrar nada en pantalla antes :)
Gracias xxxivanxxx, asi lo deje así:

Código PHP:
Ver original
  1. <?php
  2. header ("Location: http://www.google.com");
  3. ?>
tira error....

  #10 (permalink)  
Antiguo 12/03/2012, 11:34
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Sencillo segundero.php

Código PHP:
Ver original
  1. <?php
  2.     header ("Location: http://www.google.com");
  3.     ?>

pues a mi si me funciona ese codigo :), que error te muestra¿?
  #11 (permalink)  
Antiguo 12/03/2012, 11:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Sencillo segundero.php

No puedes usar ningún echo antes de header, claramente tienes un echo ahí, ahora, no puedes comparar directamente con un string, tendrías que hacer algo así:
Código PHP:
Ver original
  1. $segundo = (int) $_GET['segundo'];
  2. $segundo++;
  3. if ($segundo > 59) {
  4.       die("Llegamos a $segundo segundos");
  5. }
  6. $self = $_SERVER['PHP_SELF'];
  7. header("Location: $self?segundo=$segundo");

Saludos.
  #12 (permalink)  
Antiguo 12/03/2012, 11:38
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Cita:
Iniciado por xxxivanxxx Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2.     header ("Location: http://www.google.com");
  3.     ?>

pues a mi si me funciona ese codigo :), que error te muestra¿?
Gracias xxxivanxxx, estabas en lo cierto
  #13 (permalink)  
Antiguo 12/03/2012, 11:44
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Cita:
Iniciado por GatorV Ver Mensaje
No puedes usar ningún echo antes de header, claramente tienes un echo ahí, ahora, no puedes comparar directamente con un string, tendrías que hacer algo así:
Código PHP:
Ver original
  1. $segundo = (int) $_GET['segundo'];
  2. $segundo++;
  3. if ($segundo > 59) {
  4.       die("Llegamos a $segundo segundos");
  5. }
  6. $self = $_SERVER['PHP_SELF'];
  7. header("Location: $self?segundo=$segundo");

Saludos.
Hola Gatorv, gracias por la sugerencia, aunque por el momento no está funcionando, no sé por qué, se queda en :
"Llegamos a 60 segundos"
  #14 (permalink)  
Antiguo 12/03/2012, 11:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Sencillo segundero.php

Porque hizo las 60 redirecciones, que es lo que debe de hacer, si empiezas con el script sin el segundero debe de llegar a los 60, sí quieres agrega un sleep(1) para que tome más tiempo.

Saludos.
  #15 (permalink)  
Antiguo 12/03/2012, 11:55
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Cita:
Iniciado por GatorV Ver Mensaje
Porque hizo las 60 redirecciones, que es lo que debe de hacer, si empiezas con el script sin el segundero debe de llegar a los 60, sí quieres agrega un sleep(1) para que tome más tiempo.

Saludos.
Lo he hecho, pero se queda cargando...
  #16 (permalink)  
Antiguo 12/03/2012, 12:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Sencillo segundero.php

Se va a demorar el tiempo que sea (los 60 segundos) también toma en cuenta que hay un número máximo de redirecciones que puedes hacer antes de que el browser detecté un loop.

Es por eso que te decía que no es lo ideal hacer el segundero en PHP, si no en un lenguaje en el cliente (como Javascript).
  #17 (permalink)  
Antiguo 12/03/2012, 12:02
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Cita:
Iniciado por GatorV Ver Mensaje
Porque hizo las 60 redirecciones, que es lo que debe de hacer, si empiezas con el script sin el segundero debe de llegar a los 60, sí quieres agrega un sleep(1) para que tome más tiempo.

Saludos.
Ah ya entendí tu código GatorV!!
Pero no es la idea inicial.
Muchas gracias de todas maneras, a ver si me sirve.
  #18 (permalink)  
Antiguo 12/03/2012, 12:12
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
Ya lo dijeron todos pero quiero reforzar la idea: plantear este ejercicio es un error conceptual desde el enunciado mísmo.
Creo que no vale la pena invertir ni un segundo en resolverlo.
Perdón que sea tan categórico.Con el tiempo te darás cuenta de lo que decimos.
  #19 (permalink)  
Antiguo 12/03/2012, 12:23
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Cita:
Iniciado por Gustavo72 Ver Mensaje
Ya lo dijeron todos pero quiero reforzar la idea: plantear este ejercicio es un error conceptual desde el enunciado mísmo.
Creo que no vale la pena invertir ni un segundo en resolverlo.
Perdón que sea tan categórico.Con el tiempo te darás cuenta de lo que decimos.
Hola Gustavo, pues es verdad, pero ya he dicho que el objetivo no es ser práctico, quería resolverlo como algo didáctico.
  #20 (permalink)  
Antiguo 12/03/2012, 12:31
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Bueno, esto me salió, espero que os guste, y a alguien ayude:
Código PHP:
Ver original
  1. <?php
  2. $segundo = $_GET['segundo'];
  3. if (!isset($segundo))
  4. $segundo = -1;
  5. $segundo = ($segundo+1);
  6. if ($segundo > '59')
  7. $segundo = 0;
  8. header("refresh:1; url=http://localhost/segundero.php?segundo=$segundo");
  9. echo $segundo;
  10. ?>
  #21 (permalink)  
Antiguo 12/03/2012, 12:35
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: Sencillo segundero.php

Código PHP:
Ver original
  1. header("refresh:1; url=http://localhost/segundero.php?segundo=$segundo");

no sabia que se podia utilizar eso jeje yo usaba eso pero en HTML :)
  #22 (permalink)  
Antiguo 12/03/2012, 12:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Sencillo segundero.php

Este condicional no es correcto:
if ($segundo > '59')

Debes de manejar ints como te puse en el código inicial para que puedas comparar si es mayor o no a 60.
  #23 (permalink)  
Antiguo 12/03/2012, 12:58
Avatar de Etherman  
Fecha de Ingreso: abril-2011
Mensajes: 93
Antigüedad: 13 años
Puntos: 2
Respuesta: Sencillo segundero.php

Cita:
Iniciado por GatorV Ver Mensaje
Este condicional no es correcto:
if ($segundo > '59')

Debes de manejar ints como te puse en el código inicial para que puedas comparar si es mayor o no a 60.
Gracias Gator. La verdad es que así como lo puse funcionó.
El init entiendo que va sólo en la segunda linea del código.
Código PHP:
Ver original
  1. $segundo = (int) $_GET['segundo'];
Muchas gracias a todos. :)

Última edición por Etherman; 12/03/2012 a las 13:18

Etiquetas: reenviar, segundero, segundero.php
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 16:36.