Foros del Web » Programando para Internet » PHP »

Calendario atráves de valores de una BD.

Estas en el tema de Calendario atráves de valores de una BD. en el foro de PHP en Foros del Web. Hola. En realidad lo que estoy buscando hacer es algo complicado, al menos yo lo veo así, tengo un código que recibe 2 fechas y ...
  #1 (permalink)  
Antiguo 29/07/2009, 10:41
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Calendario atráves de valores de una BD.

Hola.

En realidad lo que estoy buscando hacer es algo complicado, al menos yo lo veo así, tengo un código que recibe 2 fechas y una de inicio y una término y a partir de eso me crea un calendario desde el mes de la de inicio hasta el mes de la de término, pero ahora quiero uno que reciba digamos 40 fechas y me cree 20 calendarios, uno primero, luego se brinque un renglón y se cree otro, pero digamos que los meses solo van a aparecer una vez en la parte superior y ya en cada calendario que se cree solamente sean cajas de texto por cada mes, alomejor no me explico, les dejo el código para que lo prueben y se den una idea:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $fecha= "20-Sep-08";
  4. $fecha2= "31-Jul-09";
  5.  
  6. //se manipula el formato de la fecha
  7.  
  8. $fechaExplode = explode("-", $fecha);
  9. $fechaSearch = array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic');
  10. $fechaReplaces = array('01','02','03','04','05','06','07','08','09','10','11','12');
  11. $fechaCambiada = str_ireplace($fechaSearch,$fechaReplaces,$fechaExplode[1]);
  12. $fecha= $fechaCambiada . "-" . $fechaExplode[0] . "-" . $fechaExplode[2];
  13.  
  14. $fechaExplode2 = explode("-", $fecha2);
  15. $fechaSearch2 = array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic');
  16. $fechaReplaces2 = array('01','02','03','04','05','06','07','08','09','10','11','12');
  17. $fechaCambiada2 = str_ireplace($fechaSearch2,$fechaReplaces2,$fechaExplode2[1]);
  18. $fecha2= $fechaCambiada2 . "-" . $fechaExplode2[0] . "-" . $fechaExplode2[2];
  19.  
  20. /////////////////////////////////////////////////////////////////////////////
  21.  
  22. $palabras=split("-",$fecha);
  23. $palabras2=split("-",$fecha2);
  24.  
  25.  
  26. for($i=0;isset($palabras[$i]);$i++)
  27. {
  28.  
  29. if($i==0){
  30. $mes=(int) $palabras[$i];
  31. $mes2=(int) $palabras2[$i];}
  32.  else if($i==1){
  33. $dia=$palabras[$i];
  34. $dia2=$palabras2[$i];}
  35.  else if($i==2){
  36.  $anio="20".$palabras[$i];
  37. $anio2="20".$palabras2[$i];
  38. }
  39. }
  40.  
  41. function nombres($month){ //para asignar los nombres de los meses
  42.  
  43. switch($month){
  44.     case 1: $nombre="ENE";
  45.             break;
  46.     case 2: $nombre="FEB";
  47.             break;
  48.     case 3: $nombre="MAR";
  49.             break;
  50.     case 4: $nombre="ABR";
  51.             break;
  52.     case 5: $nombre="MAY"; 
  53.             break;
  54.     case 6: $nombre="JUN";
  55.             break;
  56.     case 7: $nombre="JUL";
  57.             break;
  58.     case 8: $nombre="AGO";
  59.             break;
  60.     case 9: $nombre="SEP";
  61.             break;
  62.     case 10: $nombre="OCT";
  63.             break;
  64.     case 11: $nombre="NOV";
  65.             break;
  66.     case 12: $nombre="DIC";
  67.             break;
  68.     }//case
  69. return $nombre;
  70. }
  71. /////////////////////////////////////////////////////////////////////////////////////////////////////////
  72. ?>
  73.  
  74. <tr>
  75. <td>&nbsp;</td>
  76. <?php
  77. //para no modificar originales
  78. $mes_mas=$mes;
  79. $anio_mas=$anio;
  80. $inicio=1;
  81.  
  82.  
  83. if($anio==$anio2){
  84. $columna_anio=1;
  85. $columna_mes=($mes2-$mes)+1;
  86. $tot_mes+=$columna_mes;
  87. ?>
  88.  
  89. <td colspan="<?php echo $columna_mes+1;//el +1 por el ledger?>"><?php echo $anio; ?><td/>
  90. </tr>
  91.  
  92. <tr>
  93. <td>&nbsp;</td> <?php
  94. for($i=1;$i<=$columna_mes;$i++){
  95.    
  96.     if ($i==$columna_mes){ ?>
  97.    
  98.     <td><?php echo nombres($mes2); ?> </td>
  99.    
  100.     <?php }// if $i
  101.             else {  ?>
  102.            
  103.             <td> <?php echo nombres($mes_mas);?></td>
  104.             <?php $mes_mas++;
  105.         }//else $i
  106. } //for  ?>
  107. </tr>
  108.  
  109. <?php }//if ==
  110.  
  111.  
  112. else {  
  113.     for($k=1;$k<=2;$k++){ // 2 por que en la primera crea las columnas y en la segunda los meses..
  114.     $tot_mes=0; // se reinicia para que dé el tot neto de los meses.. por que da 2 vueltas y saldria doble el resultado.
  115.     if($k==1){ //para crear las columnas
  116.     $columna_anio=($anio2-$anio)+1;
  117.     ?>
  118.    
  119.    
  120.     <?php
  121.     for($j=1;$j<=$columna_anio;$j++){
  122.        
  123.         if($j==1){
  124.         $columna_mes=(12-$mes)+1;
  125.         $tot_mes+=$columna_mes;  ?>
  126.        
  127.         <td colspan="<?php echo $columna_mes+1;//por ledger?>"><?php echo $anio;?></td>
  128.          <?php }//if
  129.            
  130.             else if ($j==$columna_anio){
  131.             $columna_mes=$mes2;
  132.             $tot_mes+=$columna_mes;
  133.              ?>
  134.             <td colspan="<?php echo $columna_mes;?>"><?php echo $anio2;?></td>
  135.                 <?php } //else if
  136.                
  137.                 else {
  138.                 $columna_mes=12;
  139.                 $tot_mes+=$columna_mes;
  140.                 $anio_mas++; ?>
  141.                 <td colspan="<?php echo $columna_mes;?>"><?php echo $anio_mas;?></td>
  142.                 <?php }//else
  143.     }//for j ?>
  144. </tr>
  145. <?php }//if para crear columnas dentro del for k
  146.        
  147.         else{ //para crear meses ////////////////////////////////////////////////////////////////////////////////////?>
  148.         <tr> <?php
  149.         $columna_anio=($anio2-$anio)+1; ?>
  150.    
  151.         <td>&nbsp;</td>
  152.    
  153.         <?php
  154.         for($l=1;$l<=$columna_anio;$l++){ //para recorrer años
  155.        
  156.             if($l==1){ //primer año
  157.             $columna_mes=(12-$mes)+1;
  158.             $tot_mes+=$columna_mes;
  159.                
  160.                 for($m=1;$m<=$columna_mes;$m++){ //para recorrer los meses ?>
  161.        
  162.                 <td> <?php echo nombres($mes_mas); ?></td>
  163.                 <?php $mes_mas++;
  164.  
  165.                 } //for de m
  166.        
  167.             }//if l==1
  168.            
  169.             else if ($l==$columna_anio){ //si llega al ultimo año
  170.             $columna_mes=$mes2;
  171.             $tot_mes+=$columna_mes;
  172.            
  173.                 for($n=1;$n<=$columna_mes;$n++){ //para recorrer meses
  174.            
  175.                 if ($n==$columna_mes){ ?>
  176.              
  177.                 <td><?php echo nombres($mes2); ?> </td>
  178.            
  179.                 <?php }// if n
  180.  
  181.                 else { ?>
  182.                
  183.                 <td> <?php echo nombres($inicio); ?></td>
  184.             <?php $inicio++;
  185.  }//else
  186.            
  187.             }//for n
  188.             $inicio=1;
  189.             } //else if
  190.                
  191.                 else {
  192.                
  193.                 $columna_mes=12;  
  194.                 $tot_mes+=$columna_mes;
  195.                    
  196.                 for($o=1;$o<=$columna_mes;$o++){ //para construir los meses ?>
  197.                
  198.                 <td> <?php echo nombres($inicio);?></td>
  199.             <?php $inicio++;
  200.    
  201.                 }//for o
  202.                 $inicio=1;
  203.                  }//else
  204.     }//for l ?>
  205. </tr>   <?php      
  206.         }//else para crear meses dentro del for k
  207. } //for k
  208. } //else
  209.  
  210.  
  211.  
  212. $tot_columnas=$tot_mes+2; //para el ultimo renglon de la tabla y poner las variables hidden, el +2 por la columna de descrip y la de ledger
  213. $celdas=$tot_mes; //total de celdas (no se ocupa)
  214.  
  215. ////////////////////////////////////////////para establecer el nombre de las cajas de texto//////////////////////////////
  216.  
  217.  
  218. if($columna_anio>1){
  219. $mes_ini=12-$mes;
  220. $mes_ini2=$mes+$mes_ini; //para el for donde empiezan los meses del primer año
  221. }
  222. else {
  223. $mes_ini=$mes2;
  224. $mes_ini2=$mes_ini; //para el for donde empiezan los meses del primer año
  225. }
  226.  
  227. $z=0; //para arreglo en cajas de texto.
  228. ?>
  229.  
  230.  
  231. <form id="form1" name="form1" method="post" action="requerido222.php" onSubmit="return checar(this.form);">
  232. <tr>
  233.  
  234. <td>DEV</td>
  235. <?php
  236. $contador= 1;
  237. $i=0;
  238. for($p=1;$p<=$columna_anio;$p++){ //recorrer los años
  239.  
  240.     if($p==1){
  241.        
  242.         for($q=$mes;$q<=$mes_ini2;$q++) {//recorrer el primer año ?>
  243.        
  244.         <td><input name="nombre[<?php echo $z;?>]" type="text" value="0.00" id="<?php echo 'valor'.$i; ?>"  onkeyup="restar()"   /></td>
  245.         <?php
  246.         $z++;
  247.         $i++;
  248.         }//for q
  249.  
  250.    
  251.     } //if p==1
  252.     else if($p==$columna_anio){
  253.    
  254.         for($r=1;$r<=$mes2;$r++){ //recorrer meses de utlimo año?>
  255.         <td><input name="nombre[<?php echo $z;?>]" type="text" value="0.00" id="<?php echo 'valor'.$i; ?>" onkeyup="restar()"  /></td>
  256.         <?php
  257.         $z++;
  258.         $i++;
  259.         }//for r
  260.    
  261.     }//else if
  262.     else{
  263.    
  264.         for($s=1;$s<=12;$s++){//para recorrer los meses intermedios ?>
  265.         <td><input name="nombre[<?php echo $z;?>]" type="text"  value="0.00" id="<?php echo 'valor'.$i; ?>" onkeyup="restar()"/></td>
  266.         <?php
  267.         $z++;
  268.         $i++;
  269.         }//for s
  270.    
  271.     }//else
  272. }//for p
  273. ?>
  274.  
  275. </tr>
  276. <tr><td colspan="<?php echo $tot_columnas;?>" align="left">
  277.  
  278.  
  279.  
  280. <input name="FE" value="Siguiente" type="submit" class="navText"   />
  281. </td></tr>
  282. </form>
  283. </table>

Sé que esto es algo díficil, pero les estaría muy agradecido si me dieran una mano con este código, se los agradezco bastante de antemano.

EDIT: Ya lo resolví, sólo con ciclo for y con mysql_num_rows, igual gracias.

Saludos.

Última edición por Gaug; 29/07/2009 a las 12:06
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 14:43.