Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

osk

[Resolvido] while dentro de for

Recommended Posts

Olá, tenho um calendário que gostaria de transformar em agenda simples, mas não estou conseguindo.

Tenho um db que contem o evento que vai acontecer no dia tal e gostaria que no calendário está data ficasse marcada.

Tentei usar um while dentro do segundo for:

 

$pegaPaciente = Registry::get( 'dbsistema' )->sql("SELECT * FROM agenda");			

if(empty($dias[$pos2])){
		echo "<td><center>-</center></td>";
	}else{

                     while($mostraPaciente = mysql_fetch_array($pegaPaciente)){

		if($dias[$pos2]==$dia){
			echo "<td class='hoje'>{$dias[$pos2]}</td>";
		}elseif($dias[$pos2]==$mostraPaciente['dia']){
			echo "<td class='agendado'>{$dias[$pos2]}</td>";
		}else{
			echo "<td>{$dias[$pos2]}</td>";
		}
                     }
	}

 

 

Este é o original.

echo "<table cellspacing='1' class='tabelaAgenda'>";
echo "<thead><tr><td colspan='7'>$mes2/$ano</td></tr></thead>";
echo "<tbody><tr><td>Domingo</td><td>Segunda</td><td>Terça</td><td>Quarta</td><td>Quinta</td><td>Sexta</td><td>Sábado</td></tr></tbody>";

for($linha = 0; $linha < 6; $linha++){
echo "<tr>";	
for($coluna = 0; $coluna < 7; $coluna++){
	$pos2 = $cont - $pos;


	if(empty($dias[$pos2])){
		echo "<td><center>-</center></td>";
	}else{
		if($dias[$pos2]==$dia){
			echo "<td class='hoje'>{$dias[$pos2]}</td>";
		}else{
			echo "<td>{$dias[$pos2]}</td>";
		}
	}

	$cont++;
}//Fim do for
echo "</tr>";
}//Fim do for

echo "</table>";

 

Nâo consegui imaginar a forma correta, fico grato se alguem me der uma dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ta segue o code inteiro, até consegui chegar em outro resultado. Acesse o link acima denovo.

 

require "../includes/mysql.php";
$ano = date("Y"); 
$cont = 0;
$dia = date("d");
$dias = array();
$mes = date("m");
$totalDias = date("t");
$primeiroDia = date("D", mktime(0, 0, 0, $mes, 1, $ano));

for($d = 0; $d < $totalDias; $d++)$dias[$d] = array_push($dias, $d+1);

switch($primeiroDia){
case "Sun":
	$pos = 0;
break;

case "Mon":
	$pos = 1;
break;

case "Tue":
	$pos = 2;
break;

case "Wed":
	$pos = 3;
break;

case "Thu":
	$pos = 4;
break;

case "Fri":
	$pos = 5;
break;

case "Sat":
	$pos = 6;
break;
}//Fim do switch

switch($mes){
case 1:
	$mes2 = "Janeiro";
break;

case 2:
	$mes2 = "Fevereiro";
break;

case 3:
	$mes2 = "Março";
break;

case 4:
	$mes2 = "Abril";
break;

case 5:
	$mes2 = "Maio";
break;

case 6:
	$mes2 = "Junho";
break;

case 7:
	$mes2 = "Julho";
break;

case 8:
	$mes2 = "Agosto";
break;

case 9:
	$mes2 = "Setembro";
break;

case 10:
	$mes2 = "Outubro";
break;

case 11:
	$mes2 = "Novembro";
break;

case 12:
	$mes2 = "Dezembro";
break;
}//Fim do switch



echo "<table cellspacing='1' class='tabelaAgenda'>";
echo "<thead><tr><td colspan='7'>$mes2/$ano</td></tr></thead>";
echo "<tbody><tr><td>Domingo</td><td>Segunda</td><td>Terça</td><td>Quarta</td><td>Quinta</td><td>Sexta</td><td>Sábado</td></tr></tbody>";

for($linha = 0; $linha < 6; $linha++){
echo "<tr>";	
for($coluna = 0; $coluna < 7; $coluna++){
	$pos2 = $cont - $pos;		


	if(empty($dias[$pos2])){
           echo "<td><center>-</center></td>";
       }elseif($dias[$pos2]==$dia){
       	echo "<td class='hoje'>{$dias[$pos2]}</td>";
       }else{
		$pegaPaciente = Registry::get( 'dbsistema' )->sql("SELECT * FROM agenda");
		while($mostraPaciente = mysql_fetch_array($pegaPaciente)){
			if($dias[$pos2]==$mostraPaciente['dia']){
				echo "<td class='agendado'>{$dias[$pos2]}</td>";
			}
		}			
	echo "<td>{$dias[$pos2]}</td>";			
	}

	$cont++;
}//Fim do for
echo "</tr>";
}//Fim do for

echo "</table>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom um dos problemas q vi é qao entrar no while ele cria uma coluna a mais

esse select serve pra verficiar se existe o dia agendado certo ?

pq você nao faz a consulta fora la no começo e armazena os valores em um array.

ai ficaria

 

com mais um else no sistema onde ele tem if(in_array($dias[$pos2],$arrayDiasAgendados)

se sim ele coloca outra <td>...

 

<?
require "../includes/mysql.php";
$ano = date("Y"); 
$cont = 0;
$dia = date("d");
$dias = array();
$mes = date("m");
$totalDias = date("t");
$primeiroDia = date("D", mktime(0, 0, 0, $mes, 1, $ano));


$pegaPaciente = Registry::get( 'dbsistema' )->sql("SELECT * FROM agenda");
$mostraPaciente = mysql_fetch_array($pegaPaciente);
$arrDiasAgendados = Array();
foreach($mostraPaciente as $paciente)
{
$arrDiasAgendados[] = $mostraPaciente['dia'];
}

for($d = 0; $d < $totalDias; $d++)$dias[$d] = array_push($dias, $d+1);

switch($primeiroDia){
       case "Sun":
               $pos = 0;
       break;

       case "Mon":
               $pos = 1;
       break;

       case "Tue":
               $pos = 2;
       break;

       case "Wed":
               $pos = 3;
       break;

       case "Thu":
               $pos = 4;
       break;

       case "Fri":
               $pos = 5;
       break;

       case "Sat":
               $pos = 6;
       break;
}//Fim do switch

switch($mes){
       case 1:
               $mes2 = "Janeiro";
       break;

       case 2:
               $mes2 = "Fevereiro";
       break;

       case 3:
               $mes2 = "Março";
       break;

       case 4:
               $mes2 = "Abril";
       break;

       case 5:
               $mes2 = "Maio";
       break;

       case 6:
               $mes2 = "Junho";
       break;

       case 7:
               $mes2 = "Julho";
       break;

       case 8:
               $mes2 = "Agosto";
       break;

       case 9:
               $mes2 = "Setembro";
       break;

       case 10:
               $mes2 = "Outubro";
       break;

       case 11:
               $mes2 = "Novembro";
       break;

       case 12:
               $mes2 = "Dezembro";
       break;
}//Fim do switch



echo "<table cellspacing='1' class='tabelaAgenda'>";
echo "<thead><tr><td colspan='7'>$mes2/$ano</td></tr></thead>";
echo "<tbody><tr><td>Domingo</td><td>Segunda</td><td>Terça</td><td>Quarta</td><td>Quinta</td><td>Sexta</td><td>Sábado</td></tr></tbody>";

for($linha = 0; $linha < 6; $linha++){
       echo "<tr>";    
       for($coluna = 0; $coluna < 7; $coluna++)
	{
           $pos2 = $cont - $pos;           
           if(empty($dias[$pos2]))
		{
			echo "<td><center>-</center></td>";
		}
		elseif($dias[$pos2]==$dia)
		{
               echo "<td class='hoje'>{$dias[$pos2]}</td>";
		}
		elseif(in_array($dias[$pos2],$arrDiasAgendados))
		{
			echo "<td class='agendado'>{$dias[$pos2]}</td>";
           }
		else
		{
               echo "<td>{$dias[$pos2]}</td>";                 
           }

               $cont++;
       }//Fim do for
       echo "</tr>";
}//Fim do for

echo "</table>";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso cara simplesmente funcionou. Maravilha, valeu mesmo pela ajuda lambrusco.

 

 

abc :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.