Menú Principal

Script php

Iniciado por inquilin@19, 21 Octubre 2011, 16:17 PM

0 Miembros y 1 Visitante están viendo este tema.

inquilin@19

Hola a todos, vereis, tengo un problemilla, resulta que tengo que hacer un contador que me diga los dias, horas, minutos y segundos que quedan para tal fecha (un cumpleaños, por ejemplo) e probado a acer el contador pero solo consigo que sea estático y no se como hacer para que lo lea el html alguna ayuda?
muchas gracias
Sólo mirando al frente se puede seguir, llevar lastres en el camino no te lo permiten

dark_sargon

Yo lo haría con PHP y javascript. De tal forma que el script PHP te dé los valores de las variables HH:MM:SS pero como dices, estas son estáticas. Luego de tenerlas las pones como valores iniciales de un contador en javascript que se actualiza automáticamente cada segundo.
http://www.actimediaonline.com
Diseño Web, animación y más.

http://www.ciudadoscura.com
Diseño Web, electrónica, programación, móviles y más.

madpitbull_99

Eso es un contador inverso. En javascript se haría de la siguiente manera:

Código (javascript) [Seleccionar]

<script language="javascript">
       
      //Fechas inicial y final

      var Hoy=new Date()
      var Nav=new Date(Hoy.getFullYear(), 11, 25)
      var mseg_dia=1000*60*60*24
      var dias

      if (Hoy.getMonth()==11 && Hoy.getDate()>25)
          Nav.setFullYear(Nav.getFullYear()+1)

      dias = Math.ceil((Nav.getTime()-Hoy.getTime())/(mseg_dia))
      document.write("Quedan "+dias+" dias hasta Navidad")

</script>


Si quieres usar JQuery sería así:

Código (javascript) [Seleccionar]
var newYear = new Date();
newYear = new Date(newYear.getFullYear() + 1, 1 - 1, 1);
$('#defaultCountdown').countdown({until: newYear});

$('#removeCountdown').toggle(function() {
        $(this).text('Re-attach');
        $('#defaultCountdown').countdown('destroy');
    },
    function() {
        $(this).text('Remove');
        $('#defaultCountdown').countdown({until: newYear});
    }
);


Fuente. Si quieres ver más ejemplos, busca en Google por "javascript countdown".




«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

inquilin@19

Creo que me servira, lo tengo que implementar en una pagina html, pero tenemos un manual que mas o menos dice como se hace.
Ahora mi pregunta es, tengo este código:
<html>
<head>
<title>usuario y correo</title>
</head>
<body>
<h1>Bienvenido a la Web!</h1><p/>
<h3>Introduce tus datos de usuario</h3><p/>
<form action="formato_a1.php" method="POST">
   <p><strong>UserName:</strong><br/>
   <input type="text" name="username"/></p>

   <p><strong>E-mailAddress:</strong><br/>
   <textarea name="emailaddress" rows="" cols="20"></textarea></p>
   <p><input type="submit" value="check and send"/></p>
</form>
</body>
</html>

que va enlazado a este php
<?php
echo "<p>Bienvenido<b>".$_POST=ucwords($_POST["username"])."</b></p>";

if (strstr($_POST["emailaddress"],"@")) {
   echo "<p>Tu e-mail es correcto:<b>".$_POST["emailaddress"]."</b></p>";
   } else {
   echo "<p> ERROR! Tu dirección de e-mail no es válida, revísala</p>";
}
?>
El primer echo me sale bien, pongo el nombre del usuario y me le muestra, la pega es que al meter el email, se supone que si no lleva @ tiene que dar error pero aunque lleve @ sigue dando error. ¿Que he puesto mal?
Sólo mirando al frente se puede seguir, llevar lastres en el camino no te lo permiten

WHK

Hola, en ves de stst() usa esto:
Código (php) [Seleccionar]
<?php if(filter_var($emailFILTER_VALIDATE_EMAIL)){ ... ?>

Además pon el cast en parentesis:
Código (php) [Seleccionar]
echo "<p>Bienvenido<b>".($_POST=ucwords($_POST["username"]))."</b></p>";

dale un vistazo a tu php si tienes errores activados para ver mejor que pasa.

dark_sargon

#5
Según entendí ya tienes el contador pero quieres que en tu documeto se actualice cada segundo.

Hice un ejemplo para Halloween con PHP y javascript.
http://www.actimediaonline.com/hora.php

El problema de obtener la fecha actual con javascript es que tomará la del cliente y no la de tu propio reloj (servidor). Por esa razón digo que sería mejor con PHP.

hora.php
Código (php) [Seleccionar]
<?php
//Aca defines la hora cero (cuando el contador llega a 0)
//Yo pongo de ejemplo Halloween de éste año (31/Oct/11 a las 00:00:00)
   
$dia_cero 31;
 
//$hora_cero = 0;
 //$min_cero = 0;
 //$seg_cero = 0;

//Aca defines la zona horaria
   
date_default_timezone_set('America/Bogota');

//Aca obtienes la hora actual del servidor
   
$dia_act date('d');
   
$hora_act date('H');
   
$min_act date('i');
   
$seg_act date('s');

//Calculas el tiempo restante
   
$dia_rest = ($dia_cero $dia_act) - 1;
   
$hora_rest 23 $hora_act;
   
$min_rest 59 $min_act;
   
$seg_rest 60 $seg_act;
?>


<html>
<head>
  <script language="javascript" type="text/javascript">
     var dia_rest = <?php echo $dia_rest ?>;
     var hora_rest = <?php echo $hora_rest ?>;
     var min_rest = <?php echo $min_rest ?>;
     var seg_rest = <?php echo $seg_rest ?>;

     var reloj = setInterval("muestraTemp()",1000);

     function muestraTemp(){
        seg_rest -= 1;
        if(seg_rest < 0){
           seg_rest = 59;
           min_rest -= 1;
        }
       
        if(min_rest < 0){
           min_rest = 59;
           hora_rest -= 1;
        }
       
        if(hora_rest < 0){
           hora_rest = 23;
           dia_rest -= 1;
        }

        if(seg_rest==0&&min_rest==0&&hora_rest==0&&dia_rest==0){
           clearInterval(reloj);
        }
       
        document.timer_halloween.segundos.value = seg_rest;
        document.timer_halloween.minutos.value = min_rest;
        document.timer_halloween.horas.value = hora_rest;
        document.timer_halloween.dias.value = dia_rest;
     }
 
  </script>
</head>

<body>
<h1>Halloween en...</h1>
  <form name="timer_halloween">
     <input type="text" size="1" name="dias"> d&iacute;a(s)&nbsp;&nbsp;
     <input type="text" size="1" name="horas"> hora(s)&nbsp;&nbsp;
     <input type="text" size="1" name="minutos"> minuto(s)&nbsp;&nbsp;
     <input type="text" size="1" name="segundos"> segundo(s)
  </form>
</body>
</html>
http://www.actimediaonline.com
Diseño Web, animación y más.

http://www.ciudadoscura.com
Diseño Web, electrónica, programación, móviles y más.

inquilin@19

#6
Si! Es lo que necesitaba, yo lo hacia pero de tal manera que era estatico, es decir, mostraba como el resultado de una resta solamente.
A proposito de lo que dices de que es mejor con php, el java es un lenguaje que nosotros no usamos (no se por qué la verdad), por eso me esta costando encontrar ayuda para hacer este contador.
Referente al otro problema, el de chekear si el email es correcto o no he usado el codigo de WHK pero me sigue saliendo igual.

Muchisimas gracias por la ayuda! Estoy estudiando esto en mi ciclo formativo pero me temo que soy demasiado pato :p
Sólo mirando al frente se puede seguir, llevar lastres en el camino no te lo permiten

inquilin@19

Hola otra vez, por fin e conseguido tener el contador hecho, pero ahora tengo otro problema. Necesito que esté enlazado con el html para mostrarlo en el navegador.
Esto es lo que tengo por ahora y donde me he atascado:
codigo html<html>
<head>
<title>Contador de fechas</title>
</head>
<body>
<h1>¿Cuántos días quedan para tu cumpleaños?</h1><p/>
<h3>Introduce la fecha de tu próximo cumpleaños y mira cuánto queda</h3><p/>
<form action="contador_cumpleanos_bueno.php" method="POST">
<p><strong>MES</strong><br/>
<input type="text" name="mes"/></p>

<p><strong>DIA</strong><br/>
<input type="text" name="dia"/></p>

<p><strong>AÑO</strong><br/>
<input type="text" name="ano"/></p>
<p><input type="submit" value="Mira cuántos días quedan"/></p>

</form>
</body>
</html>


CODIGO PHP <?php
countdown
(2012,9,26,7,30,20);
function 
countdown($year$month$day$hour$minute$second)
{
  
$cuentaatras mktime($hour$minute$second$month$day$year, -1);

  
$hoy time();

  
$diferencia $cuentaatras $hoy;
  if (
$diferencia 0$diferencia 0;

  
$diasrestantes floor($diferencia/60/60/24);
  
$horasrestantes floor(($diferencia $diasrestantes*60*60*24)/60/60);
  
$minutosrestantes floor(($diferencia $diasrestantes*60*60*24 
     $horasrestantes*60*60)/60);
  
$segundosrestantes floor (($diferencia$diasrestantes*60*60*24 
                               
$horasrestantes*60*60 
                               
$minutosrestantes*60)/60);
  
  echo 
"Quedan ".$diasrestantes." diass ".
                 
$horasrestantes." horas ".
                 
$minutosrestantes." minutos y ".
                 
$segundosrestantes."segundos";
}
?>
 


Ahi es donde me he atascado, ya que ponga lo que ponga en el navegador me sale siempre la misma fecha
Sólo mirando al frente se puede seguir, llevar lastres en el camino no te lo permiten

dark_sargon

Pues no estás recibiendo los valores de tu formulario.

En la segunda línea de tu PHP:
Código (php) [Seleccionar]
countdown(2012,9,26,7,30,20);

Le estás pasando argumentos constantes a tu función. Debes tomar los datos de tu formulario con:
Código (php) [Seleccionar]
$dia = $_POST['campo_dia'];

Con la línea anterior tendras almacenado el valor del campo de nombre  campo_dia en la variable $dia.

Como sugerencia, es mejor que hagas tu propio script ya que ese que tienes ahí parece que tomara valores de año, mes, día, hora, minutos y segundos. Tú solo estás pasando con tu formulario mes, dia y año.
http://www.actimediaonline.com
Diseño Web, animación y más.

http://www.ciudadoscura.com
Diseño Web, electrónica, programación, móviles y más.