Foros del Web » Programando para Internet » Javascript »

poner fechas BD al calendario

Estas en el tema de poner fechas BD al calendario en el foro de Javascript en Foros del Web. Hola a todos! vereis, he estado buscando por la web varios calendarios javascript, al final me decidi por este, lo tube que adaptar al css ...
  #1 (permalink)  
Antiguo 16/11/2010, 13:33
 
Fecha de Ingreso: abril-2010
Mensajes: 62
Antigüedad: 14 años
Puntos: 0
Exclamación poner fechas BD al calendario

Hola a todos! vereis, he estado buscando por la web varios calendarios javascript, al final me decidi por este, lo tube que adaptar al css que tenia (por que me gustaba mas que otros diseños) pero ahora no se como ponerle que al hacer una consulta a la base de datos recojiendo 3 campos (dia, mes, año) me los ponga en enlace, no se si me explico, el calendario esta ya preparado para ponerle a un dia un enlace.
Lo que quiero es que al extraer el dia del evento de la BD me marque en el calendario como dia con enlace al evento...

os dejo el codigo JavaScript
Código Javascript:
Ver original
  1. <script LANGUAGE="JavaScript">
  2.  
  3. <!-- Begin
  4. monthnames = new Array(
  5. "Enero",
  6. "Febrero",
  7. "Marzo",
  8. "Abril",
  9. "Mayo",
  10. "Junio",
  11. "Julio",
  12. "Agosto",
  13. "Septiembre",
  14. "Octubre",
  15. "Noviembre",
  16. "Diciembre");
  17. var linkcount=0;
  18. function addlink(month, day, href) {
  19. var entry = new Array(3);
  20. entry[0] = month;
  21. entry[1] = day;
  22. entry[2] = href;
  23. this[linkcount++] = entry;
  24. }
  25. Array.prototype.addlink = addlink;
  26. linkdays = new Array();
  27. monthdays = new Array(12);
  28. monthdays[0]=31;
  29. monthdays[1]=28;
  30. monthdays[2]=31;
  31. monthdays[3]=30;
  32. monthdays[4]=31;
  33. monthdays[5]=30;
  34. monthdays[6]=31;
  35. monthdays[7]=31;
  36. monthdays[8]=30;
  37. monthdays[9]=31;
  38. monthdays[10]=30;
  39. monthdays[11]=31;
  40. todayDate=new Date();
  41. thisday=todayDate.getDay();
  42. thismonth=todayDate.getMonth();
  43. thisdate=todayDate.getDate();
  44. thisyear=todayDate.getYear();
  45. thisyear = thisyear % 100;
  46. thisyear = ((thisyear < 50) ? (2000 + thisyear) : (1900 + thisyear));
  47. if (((thisyear % 4 == 0)
  48. && !(thisyear % 100 == 0))
  49. ||(thisyear % 400 == 0)) monthdays[1]++;
  50. startspaces=thisdate;
  51. while (startspaces > 7) startspaces-=7;
  52. startspaces = thisday - startspaces + 0;
  53. if (startspaces < 0) startspaces+=7;
  54. document.write('<table id="calendar" cellspacing="0" cellpadding="0" ');
  55. document.write("<caption><a href='#' title='previous month' class='nav'>&laquo;</a> "
  56. + monthnames[thismonth] + " " + thisyear
  57. + " <a href='#' title='siguiente mes' class='nav'>&raquo;</a></caption>");
  58. document.write("<tr>");
  59. document.write("<th scope='col'>Lu</th>");
  60. document.write("<th scope='col'>Ma</th>");
  61. document.write("<th scope='col'>Mi</th>");
  62. document.write("<th scope='col'>Ju</th>");
  63. document.write("<th scope='col'>Vi</th>");
  64. document.write("<th scope='col'>Sa</th>");
  65. document.write("<th scope='col'>Do</th>");
  66. document.write("</tr>");
  67. document.write("<tr>");
  68. for (s=0;s<startspaces;s++) {
  69. document.write("<td> </td>");
  70. }
  71. count=1;
  72. while (count <= monthdays[thismonth]) {
  73. for (b = startspaces;b<7;b++) {
  74. linktrue=false;
  75. document.write("<td");
  76. for (c=0;c<linkdays.length;c++) {
  77. if (linkdays[c] != null) {
  78. if ((linkdays[c][0]==thismonth + 1) && (linkdays[c][1]==count)) {
  79. document.write("><a href=\"" + linkdays[c][2] + "\">");
  80. linktrue=true;
  81.       }
  82.    }
  83. }
  84. if (count==thisdate) {
  85. document.write(" class='today'>" + count);
  86. }
  87. else{
  88. if (count <= monthdays[thismonth]) {
  89. document.write(">" + count);
  90. }
  91. else {
  92. document.write(" ");
  93. }
  94. }
  95. if (linktrue)
  96. document.write("</a>");
  97. document.write("</td>");
  98. count++;
  99. }
  100. document.write("</tr>");
  101. document.write("<tr>");
  102. startspaces=0;
  103. }
  104. document.write("</table></p>");
  105. // End -->
  106. </script>

Gracias! lo siento si no me he explicado bien, si es asi intentare explicarme mejor ;)
  #2 (permalink)  
Antiguo 16/11/2010, 13:54
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: poner fechas BD al calendario

Esto no va aqui... esto es el foro PHP.
  #3 (permalink)  
Antiguo 16/11/2010, 15:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde PHP a Javascript
  #4 (permalink)  
Antiguo 17/11/2010, 03:49
 
Fecha de Ingreso: abril-2010
Mensajes: 62
Antigüedad: 14 años
Puntos: 0
Respuesta: poner fechas BD al calendario

esque yo lo que quiero es sacar los datos de la BD y que me los adapte al script, por eso lo puse en PHP, alquien me puede ayudar??
  #5 (permalink)  
Antiguo 17/11/2010, 12:07
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: poner fechas BD al calendario

Cita:
Iniciado por mysterio069 Ver Mensaje
esque yo lo que quiero es sacar los datos de la BD y que me los adapte al script, por eso lo puse en PHP, alquien me puede ayudar??
en php tengo el que posteaste primero lo modifique para que saque los dias desde una bd.

tienes que modificar las consultas para que te funcione y modifica la parte final para mostrar lo que quieres de acuerdo a la fecha
Código PHP:
<?php
//$db necesario para pasarselo a la funcion
$db mysql_connect("localhost","root","") or die("Error Conexion");
mysql_select_db("nombre_bd") or die("error de seleccion");

function 
IntDiv ($num$dvsr)
{
    
$negate 0;
    
$result 0;

    if (
$dvsr == 0)
    return 
null;
    else {
        if (
$num $dvsr )
            
$negate 1;
        if (
$num 0)
            
$num = -$num;
        if (
$dvsr 0)
            
$dvsr = -$dvsr;
        
$result = (($num - ($num &#37; $dvsr)) / $dvsr);
        
if ($negate)
            return -
$result;
        else
            return 
$result;
    }
}

function 
GetMonth($m)
{
    switch(
$m){
        case 
3:
        return (
"Marzo");
        break;
        case 
4:
        return (
"Abril");
        break;
        case 
5:
        return (
"Mayo");
        break;
    }
}

function 
GetOrdinal($d)
{
    
$rmdr $d 10;
    if (((
$d >= 4) and ($d <= 20)) or ($rmdr == 0) or ($rmdr 3))
        return (
$d "th");
    else {
        switch(
$rmdr){
            case 
1:
            return (
$d "st");
            break;
            case 
2:
            return (
$d "nd");
            break;
            case 
3:
            return (
$d "rd");
            break;
        }
    }
}


function 
CalendarioPHP($year$month$day_heading_length 3,$db){
$nombreFichero basename($_SERVER['PHP_SELF']);
$ColorFondoCelda '#CCCCCC';
$ColorFondoTabla '#666666';
$ColorFondoCeldasDiaSemana '#fff4bf';
$ColorFondoCeldasFestivo '#ee0000';
$ColorFondoCeldasFinDeSemana '#110000';
$ColorFondoCeldaDiaActual '#00ff00';
$ColorDiaLaboral '#444444';
$ColorDiaFestivo '#ffffff';
$ColorDiaFinDeSemana '#ffff00';
$ColorDiaActual '#0000ff';
$TamanioFuente '1';
$TipoFuente 'Arial, Helvetica, sans-serif';
$AnchoCalendario '1%';
$AltoCalendario '1%';
$AnchoCeldas '1%';
$AltoCeldas '1%';
$AlineacionHorizontalTexto 'center';
$AlineacionVerticalTexto 'center';

$dia_actual=date("j",time());
$mes_actual=date("n",time());
$anio_actual=date("Y",time());

$first_of_month mktime (0,0,0$month1$year);

static 
$day_headings = array('Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo');
$maxdays date('t'$first_of_month);
$date_info getdate($first_of_month);
$month $date_info['mon'];
$year $date_info['year']; //va cambiando el año
// $year = date("Y");//siemrpe año actual


// ----------- INICIO Dias Festivos ----------

//se selecciona de la BD los festivos horario_extra=1
$SQL_2 'SELECT fecha FROM fechas WHERE horario_extra=1 AND YEAR(fecha)="'$year .'"';
$RES_2 mysql_query($SQL_2);

while(
$row mysql_fetch_row($RES_2)){
    
$DiasFestivos[] = date("j/n",strtotime($row[0]));    
}



switch (
$date_info['mon']) {
    case 
$date_info['month']="Enero";break;
    case 
$date_info['month']="Febrero";break;
    case 
$date_info['month']="Marzo";break;
    case 
$date_info['month']="Abril";break;
    case 
$date_info['month']="Mayo";break;
    case 
$date_info['month']="Junio";break;
    case 
$date_info['month']="Julio";break;
    case 
$date_info['month']="Agosto";break;
    case 
$date_info['month']="Septiembre";break;
    case 
10 $date_info['month']="Octubre";break;
    case 
11 $date_info['month']="Noviembre";break;
    case 
12 $date_info['month']="Diciembre";break;
};

$calendar = ("<table ").
(
"border='0' ").
(
"height='".$AltoCalendario."' ").
(
"width='".$AnchoCalendario."' ").
(
"cellspacing='1' cellpadding='2' ").
(
"bgcolor='".$ColorFondoTabla."'> ");

$calendar .= "<td align='center' valign='center' colspan='7'>";
$calendar .= "<form method='POST' action='"$_SERVER['PHP_SELF'] ."' name='calendario' target='_self'>";
$calendar .= "<p><center><input type='submit' value='< Mes' name='mesmenos'><input type='submit' value='Mes >' name='mesmas'></center></p>";
$calendar .= "<input type='hidden' name='anoactual' value='$year'><input type='hidden' name='mesactual' value='$month'>";
$calendar .= "</form>";
$calendar .= "</td>";
$calendar .= "</tr> ";

$calendar .= ("<tr> ").
(
"<th height='".$AltoCeldas."' colspan='7'>").
(
"<font color='".$ColorDiaFestivo."' size=".$TamanioFuente." face='".$TipoFuente."'>").
(
"$date_info[month], $year").
(
"</font>").
(
"</th> </tr> ");



if(
$day_heading_length and $day_heading_length <= 4){
$calendar .= "<tr> ";
foreach(
$day_headings as $day_heading){
$calendar .= ("<th height='".$AltoCeldas."' abbr='".$day_heading."' class='dayofweek' bgcolor='".$ColorFondoCeldasDiaSemana."'>").
(
"<font color='".$ColorDiaLaboral."' size='".$TamanioFuente."' face='".$TipoFuente."'>").
(
$day_heading_length != substr($day_heading0$day_heading_length) : $day_heading).
(
"</font>").
(
"</th> ");
}
$calendar .= "</tr> ";
}
$calendar .= "<tr> ";

$weekday $date_info['wday']-1//Para el primer dia de la semana

//$weekday = $date_info['wday']-1;
if ($weekday==-1$weekday=6;
$day 1#starting day of the month

if($weekday 0){
$calendar .= ("<td bgcolor='".$ColorFondoTabla).
(
"' colspan='".$weekday."'></td> ");
}

while (
$day <= $maxdays){
if(
$weekday == 7){
$calendar .= "</tr> <tr> ";
$weekday 0;
}

$esFestivo 0;
$tmp_date=$day."/".$month;
for (
$i=0;$i<count($DiasFestivos);$i++) {
if (
$tmp_date==$DiasFestivos[$i]) {$esFestivo=1;break;}
}

$calendar .= ("<td width='".$AnchoCeldas).
(
"' height='".$AltoCeldas).
(
"' align='".$AlineacionHorizontalTexto).
(
"' valign='".$AlineacionVerticalTexto).
(
"' ");

$calendar .= "bgcolor='";
if ((
$day==$dia_actual) and ($month==$mes_actual) and ($year==$anio_actual)) {
$calendar .= $ColorFondoCeldaDiaActual;
} else {
if ((
$esFestivo==1)) {
$calendar .= $ColorFondoCeldasFestivo;
} else {
if ((
$weekday == 0) or ($weekday == 6)) {
//$calendar .= $ColorFondoCeldasFinDeSemana;
$calendar .= $ColorFondoCelda;
} else {
$calendar .= $ColorFondoCelda;
}
};
};
$fechalink date("Y-m-d",mktime (0,0,0$month$day$year));
$link = (basename($_SERVER["PHP_SELF"]))."?anoactual=$year&mesactual=$month&fecha=".$fechalink;
$calendar .= "'><a href='".$link."'><font color='";

if ((
$day==$dia_actual) and ($month==$mes_actual) and ($year==$anio_actual)) {
$calendar .= $ColorDiaActual;
} else {
if (
$esFestivo==1){
$calendar .= $ColorDiaFestivo;
} else {
if ((
$weekday == 0) or ($weekday == 6)) {
//$calendar .= $ColorDiaFinDeSemana;
$calendar .= $ColorDiaLaboral;
}else{
$calendar .= $ColorDiaLaboral;
}
};
};
$calendar .= ("' ").
(
"size='".$TamanioFuente."' ").
(
"face='".$TipoFuente."'><strong>".$day).
(
"</strong></font></a>").
(
"</td> ");
$day++;
$weekday++;
}

if(
$weekday != 7){
$calendar .= '<td bgcolor="'.$ColorFondoTabla.'" colspan="' . ($weekday) . '"></td>';
}
$calendar .= "</tr> ";
$calendar .= "<tr>";

$calendar .= "</table> ";
return 
$calendar;
}

extract($_POST);
extract($_GET);

if (!isset(
$mesactual) OR $mesactual == ''){
    
$mesactual=date("n",time());
}
if (!isset(
$anoactual) OR $anoactual==''){
    
$anoactual=date("Y",time());
}
$dia_actual=date("d",time());

$mes_actual date("n",mktime (0,0,0$mesactual$dia_actual$anoactual));
$anio_actual date("Y",mktime (0,0,0$mesactual$dia_actual$anoactual));

if (isset(
$mesmenos) AND $mesmenos != ''){
$mes_actual date("n",mktime (0,0,0$mesactual-1$dia_actual$anoactual));
$anio_actual date("Y",mktime (0,0,0$mesactual-1$dia_actual$anoactual));
}
if (isset(
$mesmas) AND $mesmas !=''){
$mes_actual date("n",mktime (0,0,0$mesactual+1$dia_actual$anoactual));
$anio_actual date("Y",mktime (0,0,0$mesactual+1$dia_actual$anoactual));
}
if (isset(
$anomenos) AND $anomenos !=''){
$mes_actual date("n",mktime (0,0,0$mesactual$dia_actual$anoactual));
$anio_actual date("Y",mktime (0,0,0$mesactual$dia_actual$anoactual));
}
if (isset(
$anomas) AND $anomas !=''){
$mes_actual date("n",mktime (0,0,0$mesactual$dia_actual$anoactual));
$anio_actual date("Y",mktime (0,0,0$mesactual$dia_actual$anoactual));
}

echo 
CalendarioPHP($anio_actual$mes_actual4$db);
echo 
'<br>&nbsp;<br>&nbsp;<br>';


//Aca haces la consulta a la BD para el detalle del dia en caso de tenerlo
//En este caso lo que hace es dar la opcion de modificar el tipo de dia, festivo o habil
if(isset($_GET['anoactual']) AND isset($_GET['mesactual']) AND isset($_GET['fecha'])){
    
    
$SQL "SELECT * FROM fechas WHERE fecha = '"$_GET['fecha'] ."'";
    
$RES mysql_query($SQL);
    
$calendario mysql_fetch_assoc($RES);
    
    echo 
'<form name="f_cal" method="POST" action="'$_SERVER['PHP_SELF'] .'">';
    
    echo 
'<center>Fecha: ' $calendario['fecha'];
    echo 
'<select name="cambiar_festivo">';
    
    if(
$calendario['horario_extra'] == 1){
        echo 
'<option value="1" selected>Dia Festivo</option>';
        echo 
'<option value="0">Dia Hábil</option>';
    }
    else{
        echo 
'<option value="0" selected>Dia Hábil</option>';
        echo 
'<option value="1">Dia Festivo</option>';
    }
    echo 
'</select>&nbsp;<input type="hidden" name="fecha_cambiar" value="'$calendario['fecha'] .'">
                        <input type="submit" name="enviar" value="Cambiar"></center>
        </form><br>&nbsp;<br>&nbsp;<br>'
;
    

}
?>

Etiquetas: bd, calendario, fechas, poner
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 00:22.