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
<?php $fecha= "20-Sep-08"; $fecha2= "31-Jul-09"; //se manipula el formato de la fecha $fecha= $fechaCambiada . "-" . $fechaExplode[0] . "-" . $fechaExplode[2]; $fecha2= $fechaCambiada2 . "-" . $fechaExplode2[0] . "-" . $fechaExplode2[2]; ///////////////////////////////////////////////////////////////////////////// { if($i==0){ $mes=(int) $palabras[$i]; $mes2=(int) $palabras2[$i];} else if($i==1){ $dia=$palabras[$i]; $dia2=$palabras2[$i];} else if($i==2){ $anio="20".$palabras[$i]; $anio2="20".$palabras2[$i]; } } function nombres($month){ //para asignar los nombres de los meses switch($month){ case 1: $nombre="ENE"; break; case 2: $nombre="FEB"; break; case 3: $nombre="MAR"; break; case 4: $nombre="ABR"; break; case 5: $nombre="MAY"; break; case 6: $nombre="JUN"; break; case 7: $nombre="JUL"; break; case 8: $nombre="AGO"; break; case 9: $nombre="SEP"; break; case 10: $nombre="OCT"; break; case 11: $nombre="NOV"; break; case 12: $nombre="DIC"; break; }//case return $nombre; } ///////////////////////////////////////////////////////////////////////////////////////////////////////// ?> <tr> <td> </td> <?php //para no modificar originales $mes_mas=$mes; $anio_mas=$anio; $inicio=1; if($anio==$anio2){ $columna_anio=1; $columna_mes=($mes2-$mes)+1; $tot_mes+=$columna_mes; ?> <td colspan="<?php echo $columna_mes+1;//el +1 por el ledger?>"><?php echo $anio; ?><td/> </tr> <tr> <td> </td> <?php for($i=1;$i<=$columna_mes;$i++){ if ($i==$columna_mes){ ?> <td><?php echo nombres($mes2); ?> </td> <?php }// if $i else { ?> <td> <?php echo nombres($mes_mas);?></td> <?php $mes_mas++; }//else $i } //for ?> </tr> <?php }//if == else { for($k=1;$k<=2;$k++){ // 2 por que en la primera crea las columnas y en la segunda los meses.. $tot_mes=0; // se reinicia para que dé el tot neto de los meses.. por que da 2 vueltas y saldria doble el resultado. if($k==1){ //para crear las columnas $columna_anio=($anio2-$anio)+1; ?> <?php for($j=1;$j<=$columna_anio;$j++){ if($j==1){ $columna_mes=(12-$mes)+1; $tot_mes+=$columna_mes; ?> <td colspan="<?php echo $columna_mes+1;//por ledger?>"><?php echo $anio;?></td> <?php }//if else if ($j==$columna_anio){ $columna_mes=$mes2; $tot_mes+=$columna_mes; ?> <td colspan="<?php echo $columna_mes;?>"><?php echo $anio2;?></td> <?php } //else if else { $columna_mes=12; $tot_mes+=$columna_mes; $anio_mas++; ?> <td colspan="<?php echo $columna_mes;?>"><?php echo $anio_mas;?></td> <?php }//else }//for j ?> </tr> <?php }//if para crear columnas dentro del for k else{ //para crear meses ////////////////////////////////////////////////////////////////////////////////////?> <tr> <?php $columna_anio=($anio2-$anio)+1; ?> <td> </td> <?php for($l=1;$l<=$columna_anio;$l++){ //para recorrer años if($l==1){ //primer año $columna_mes=(12-$mes)+1; $tot_mes+=$columna_mes; for($m=1;$m<=$columna_mes;$m++){ //para recorrer los meses ?> <td> <?php echo nombres($mes_mas); ?></td> <?php $mes_mas++; } //for de m }//if l==1 else if ($l==$columna_anio){ //si llega al ultimo año $columna_mes=$mes2; $tot_mes+=$columna_mes; for($n=1;$n<=$columna_mes;$n++){ //para recorrer meses if ($n==$columna_mes){ ?> <td><?php echo nombres($mes2); ?> </td> <?php }// if n else { ?> <td> <?php echo nombres($inicio); ?></td> <?php $inicio++; }//else }//for n $inicio=1; } //else if else { $columna_mes=12; $tot_mes+=$columna_mes; for($o=1;$o<=$columna_mes;$o++){ //para construir los meses ?> <td> <?php echo nombres($inicio);?></td> <?php $inicio++; }//for o $inicio=1; }//else }//for l ?> </tr> <?php }//else para crear meses dentro del for k } //for k } //else $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 $celdas=$tot_mes; //total de celdas (no se ocupa) ////////////////////////////////////////////para establecer el nombre de las cajas de texto////////////////////////////// if($columna_anio>1){ $mes_ini=12-$mes; $mes_ini2=$mes+$mes_ini; //para el for donde empiezan los meses del primer año } else { $mes_ini=$mes2; $mes_ini2=$mes_ini; //para el for donde empiezan los meses del primer año } $z=0; //para arreglo en cajas de texto. ?> <form id="form1" name="form1" method="post" action="requerido222.php" onSubmit="return checar(this.form);"> <tr> <td>DEV</td> <?php $contador= 1; $i=0; for($p=1;$p<=$columna_anio;$p++){ //recorrer los años if($p==1){ for($q=$mes;$q<=$mes_ini2;$q++) {//recorrer el primer año ?> <td><input name="nombre[<?php echo $z;?>]" type="text" value="0.00" id="<?php echo 'valor'.$i; ?>" onkeyup="restar()" /></td> <?php $z++; $i++; }//for q } //if p==1 else if($p==$columna_anio){ for($r=1;$r<=$mes2;$r++){ //recorrer meses de utlimo año?> <td><input name="nombre[<?php echo $z;?>]" type="text" value="0.00" id="<?php echo 'valor'.$i; ?>" onkeyup="restar()" /></td> <?php $z++; $i++; }//for r }//else if else{ for($s=1;$s<=12;$s++){//para recorrer los meses intermedios ?> <td><input name="nombre[<?php echo $z;?>]" type="text" value="0.00" id="<?php echo 'valor'.$i; ?>" onkeyup="restar()"/></td> <?php $z++; $i++; }//for s }//else }//for p ?> </tr> <tr><td colspan="<?php echo $tot_columnas;?>" align="left"> <input name="FE" value="Siguiente" type="submit" class="navText" /> </td></tr> </form> </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.