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<?php
$fecha= "20-Sep-08";
$fecha2= "31-Jul-09";
//se manipula el formato de la fecha
$fechaExplode = explode("-", $fecha); $fechaSearch = array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'); $fechaReplaces = array('01','02','03','04','05','06','07','08','09','10','11','12'); $fechaCambiada = str_ireplace($fechaSearch,$fechaReplaces,$fechaExplode[1]); $fecha= $fechaCambiada . "-" . $fechaExplode[0] . "-" . $fechaExplode[2];
$fechaExplode2 = explode("-", $fecha2); $fechaSearch2 = array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'); $fechaReplaces2 = array('01','02','03','04','05','06','07','08','09','10','11','12'); $fechaCambiada2 = str_ireplace($fechaSearch2,$fechaReplaces2,$fechaExplode2[1]); $fecha2= $fechaCambiada2 . "-" . $fechaExplode2[0] . "-" . $fechaExplode2[2];
/////////////////////////////////////////////////////////////////////////////
$palabras=split("-",$fecha); $palabras2=split("-",$fecha2);
for($i=0;isset($palabras[$i]);$i++) {
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.