Arreglar función de cumpleaños

  • Autor Autor ChatOrbi
  • Fecha de inicio Fecha de inicio
ChatOrbi

ChatOrbi

Épsilon
Tengo esta función, trabaja bien dando aviso dias antes del cumpleaños de los amigos agregados,

Pero el día que cumple años no se muestra el aviso.

PHP:
function friends_birthday() {
	global $client;
	$m = date('n');
	$d = date('j');
	$next = $m+1;
	if ($m<10) $m = '0'.$m;
	if ($next > 12) $next = '01';
	if ($d > 20) {
		$nextm = " or (f.uid='{$client['id']}' and birthmonth='$next' and birthday<$d) ";
	}
	$res = sql_query("select u.* from ".tb()."friends as f left join ".tb()."accounts as u on u.id=f.fid where (f.uid='{$client['id']}' and u.birthmonth='$m' and u.birthday>$d) $nextm  order by u.lastlogin desc limit 15");
	$content = '<ul>';
	while ($user = sql_fetch_array($res)) {
		$total++;
		if ($user['birthmonth'] < 10) $user['birthmonth'] = '0'.$user['birthmonth'];
		if ($user['birthday'] < 10) $user['birthday'] = '0'.$user['birthday'];
		$content .= '<li>'.url('u/'.$user['username'],$user['username']).' - <strong>'.$user['birthmonth'].'/'.$user['birthday'].'</strong></li>';
	}
	$content .= '</ul>';
	if (!$total) $content = 'none';
	return array('title'=>t('Friends birthday coming up'), 'content' => $content);
}
 
Última edición:
No se de donde sacaste esta función, pero fijate que dice : "Friends birthday coming up" es decir, la función ni siquiera esta hecha para mostrarse el día del cumpleaños, sino días antes como un aviso.
 
No se de donde sacaste esta función, pero fijate que dice : "Friends birthday coming up" es decir, la función ni siquiera esta hecha para mostrarse el día del cumpleaños, sino días antes como un aviso.

No hay forma de editar el codigo para que este el aviso hasta el dia que comple años el usuario?
 
Si se puede pero sería como crearla de nuevo. De dónde has sacado el código
 
No hay forma de editar el codigo para que este el aviso hasta el dia que comple años el usuario?

para eso estudia php, si encima sacaste este codigo de un tutorial. De paso aprendes como manejarte bien con algún lenguaje
 
Esta claro que esta funcion consulta una base de datos que deberias tener la informacion, y antes de 10 dias de su cumpleaños, te devuelve los parametros ''$content' y 'title', si se cumplen las condiciones de la funcion.

Despues mediante un 'echo' se deberia mostrar el resultado de la consulta

Ahora bien si quieres saber el dia del cumpleaños tienes que añadir otras condiciones y compararlas con la fecha actual

Un saludo
 
Última edición:
Al parecer tu script cuenta los dias antes del cumpleños pero no al ser igual a la fecha de cumpleaños.

Digamos 7,4 dias antes muestra el aviso, pero cundo llega a 0 no muestra nada. puede ser causa de signos.

Ejemplo:

7 > 0 Si
4 > 0 Si
0 > 0 No

Entonces cuando el contador llega a 0>0 por decirlo asi, no tiene una condición la cual seria algo asi

0 > 0 No
0 >= 0 SI

Date cuenta que en tu codigo solo cuenta si es mayor o menor, pero no tiene un mayor igual o menor igual.

Entonces intenta agregando en los signos > o < el signo "=" algo asi " >= o =< " entonces el programa sabra que cuando llegue a determinada cantida de dias o igual es su cumpleaños.

No tengo tiempo para visualizar tu codigo, y no manejo muy bien BD, pero espero haberte orientado, por que lo que observo es que no hay condciones if =< o >= en la funcion.

o una condicion como esta en la funcion

if( $user['birthmonth'].$user['birthday'] == $m.$d){ echo´Feliz cumple´} Esto es como borrador no tiene que funcionar pero espero haberte dado una idea a lo que me refiero.

"Si tanto creen saber de PHP, deberian de ayudar y no criticar."
 
Última edición:
Ya lo arregle!

Esto

PHP:
u.birthday>$d

Era solo agregar un igual:

PHP:
u.birthday>=$d

^^Saludos!
 
Atrás
Arriba