Preciso montar diversas escalas de trabalhos e para isto tenho um BD com o cadastro das pessoas, preciso fazer o seguinte:
1) Selecionar as pessoas que farão parte da escala de trabalho;
2) Selecionar os dias que entrarão na escala: Ex. (DOMINGO MANHÃ, DOMINGO NOITE, QUINTA e SÁBADO). Aqui deve ficar aberto para poder selecionar outros dias;
3) Selecionar o período: Data Inicial e Final, geralmente as escalas são montadas para 6 meses;
4) Não deve sobrecarregar a pessoa num mesmo dia, por exemplo se são 4 pessoas um vai trabalhar todo domingo de manhã o outro todo domingo a noite, etc. Preciso que seja computado quantos domingos de manhã trabalho, e assim sucessivamente, havendo uma divisão para que trabalhem o mesmo número de vezes e variando os dias;
5) Preciso que fique separado por meses;
Segue código em que estou trabalhando, mas estou encontrando várias dificuldades, pois não estou conseguindo que ele divida entre um mês e outro:
<?php
include "db.php";//conexão com o banco de dados
if($db)
{
@mysql_select_db($db) ;//selecione o banco de dados
echo "Conectado... <BR><BR>";
}
$query = "SELECT * FROM cadastro ORDER BY nome ASC";
Pergunta
jasonsv
Boa tarde,
Preciso montar diversas escalas de trabalhos e para isto tenho um BD com o cadastro das pessoas, preciso fazer o seguinte:
1) Selecionar as pessoas que farão parte da escala de trabalho;
2) Selecionar os dias que entrarão na escala: Ex. (DOMINGO MANHÃ, DOMINGO NOITE, QUINTA e SÁBADO). Aqui deve ficar aberto para poder selecionar outros dias;
3) Selecionar o período: Data Inicial e Final, geralmente as escalas são montadas para 6 meses;
4) Não deve sobrecarregar a pessoa num mesmo dia, por exemplo se são 4 pessoas um vai trabalhar todo domingo de manhã o outro todo domingo a noite, etc. Preciso que seja computado quantos domingos de manhã trabalho, e assim sucessivamente, havendo uma divisão para que trabalhem o mesmo número de vezes e variando os dias;
5) Preciso que fique separado por meses;
Segue código em que estou trabalhando, mas estou encontrando várias dificuldades, pois não estou conseguindo que ele divida entre um mês e outro:
<?php
include "db.php";//conexão com o banco de dados
if($db)
{
@mysql_select_db($db) ;//selecione o banco de dados
echo "Conectado... <BR><BR>";
}
$query = "SELECT * FROM cadastro ORDER BY nome ASC";
$resultado = mysql_query($query);
$i=0;
while ($linha = mysql_fetch_array($resultado))
{
$codcadastro[$i] = $linha['codcadastro'];
$nome[$i] = $linha['nome'];
echo "<input type=\"checkbox\" name=\"codcad.$i\" id=\"codcad.$i\" />" ;
echo $codcadastro[$i] ." ". $nome[$i] ."<BR>";
$i++;
}
function get_post_action($name)
{
$params = func_get_args();
foreach ($params as $name) {
if (isset($_POST[$name])) {
return $name;
}
}
}
switch (get_post_action('calcdata', 'calendario', 'publish')) {
case 'calcdata':
//save article and keep editing
calculadata();
break;
case 'calendario':
//save article and redirect
calendario();
break;
case 'publish':
//publish article and redirect
break;
default:
//no action sent
}
//Configurações script:
$fonte = "Arial";
$tamanho = "3";
$cor = '#FF0000';
$alinhamento = "center";
//Fim de Configurações
//Tradução dos Meses
$mes[1] = "janeiro";
$mes[2] = "Fevereiro";
$mes[3] = "Março";
$mes[4] = "Abril";
$mes[5] = "Maio";
$mes[6] = "Junho";
$mes[7] = "Julho";
$mes[8] = "Agosto";
$mes[9] = "Setembro";
$mes[10] = "Outubro";
$mes[11] = "Novembro";
$mes[12] = "Dezembro";
//Tradução dos dias da Semana
$semana[0] = "Domingo";
$semana[1] = "Segunda-Feira";
$semana[2] = "Terça-Feira";
$semana[3] = "Quarta-Feira";
$semana[4] = "Quinta-Feira";
$semana[5] = "Sexta-Feira";
$semana[6] = "Sábado";
//Nomes
$nome[0] = "Jason Silva Veiga";
$nome[1] = "Ulisses Junior";
$nome[2] = "Sérgio Elias";
$nome[3] = "Anderson Mendes";
$nomeCont[0] = 0;
$nomeCont[1] = 0;
$nomeCont[2] = 0;
$nomeCont[3] = 0;
$hoje = date ("Y-m-d");
//Pegar as Datas
$diasemana = date("w");
$data = date("n");
$dia = date("d");
$ano = date("Y");
//Chaves para Tradução
if($_POST){
$datain = $_POST["inicio"];
$datafi = $_POST["fim"];
}
else {
$datain = $hoje;
$datafi = $hoje;
}
echo "<form action=\"escala.php\" method=\"post\">";
echo "<BR>". $semana[$diasemana].", " . $dia . " de " . $mes[$data] ." de " . $ano .". <BR><BR>";
echo "Período de : <input type=\"date\" name=\"inicio\" value=$datain id=\"inicio\" /> a
<input type=\"date\" name=\"fim\" value=$datafi id=\"fim\" /> <BR><BR>" ;
echo "<input type=\"submit\" value=\"Dias\" name=\"calcdata\" id=\"calcdata\" /><BR><BR>";
echo "<form action=\"escala.php\" method=\"post\">";
for($i=0;$i<count($semana);$i++){
if($semana[$i] == "Domingo"){
$chavesemana = $semana[0];
echo "<input type=\"checkbox\" name=\"Domingo_Manha\" value=\"true\" id=\"Domingo_Manha\" />" ;
echo $chavesemana ." Manhã <BR>";
echo "<input type=\"checkbox\" name=\"Domingo_Noite\" value=\"true\" id=\"Domingo_Noite\" />" ;
echo $chavesemana ." Noite <BR>";
}
else{
echo "<input type=\"checkbox\" name=\"$mes[$data]\" value=\"true\" id=\"$mes[$data]\" />" ;
echo $chavesemana = $semana[$i]." <BR>";
}
//if($nomeCont[$i] ==;
}
//echo $chavedia = $dia[$i];
echo "<input type=\"submit\" value=\"Calendario\" name=\"calendario\" id=\"calendario\" /><BR><BR>";
"<BR>";
//for($i=0;$i<count($semana);$i++){
//echo $chavesemana = $semana[$i]." ";
//echo $chavedia = $dia[$i];
//echo $dia++ ."</BR>";
//}
?>
<?php
function calculadata(){
$inicio = date('Y-m-d',strtotime($_POST["inicio"]));
list($anoInicio, $mesInicio, $diaInicio) = explode('-', $inicio);
$fim = date('Y-m-d',strtotime($_POST["fim"]));
list($anoFim, $mesFim, $diaFim) = explode('-', $fim);
//$inicio = new DateTime($_POST['inicio']);
//$fim = new DateTime($_POST['fim']);
$dataInicio = mktime(0,0,0, $mesInicio, $diaInicio, $anoInicio);
$dataFim = mktime(0,0,0, $mesFim, $diaFim, $anoFim);
$erro = "Data final menor que a data inicial!";
if($dataInicio < $dataFim){
$diferenca = $dataFim - $dataInicio;
$dias = round(($diferenca/60/60/24));
echo $dias;
}
else{
echo $erro;
}
}
function calendario(){
$inicio = date('Y-m-d',strtotime($_POST["inicio"]));
list($anoInicio, $mesInicio, $diaInicio) = explode('-', $inicio);
$fim = date('Y-m-d',strtotime($_POST["fim"]));
list($anoFim, $mesFim, $diaFim) = explode('-', $fim);
//$inicio = new DateTime($_POST['inicio']);
//$fim = new DateTime($_POST['fim']);
$dataInicio = mktime(0,0,0, $mesInicio, $diaInicio, $anoInicio);
$dataFim = mktime(0,0,0, $mesFim, $diaFim, $anoFim);
$erro = "Data final menor que a data inicial!";
if($dataInicio < $dataFim){
$diferenca = $dataFim - $dataInicio;
$dias = round(($diferenca/60/60/24));
echo $dias;
}
else{
echo $erro;
}
?>
<style>
.calendario {
width: 80%;
border-collapse: collapse;
border: 1px solid #333;
background-color: #FBFBFB;
text-align: center;
}
caption {
padding: 5px 0 5px 0;
font: small-caps bold 11px verdana, arial, tahoma;
background-color: #999;
border: 1px solid #333;
}
th {
background: #F4F4F4;
}
th, td {
padding: 3px;
}
</style>
<?php
$domingo = "style=color:#C30;";
$hoje = "style=color:#CC0;";
$mes = date("m");
$dia = date("d");
$ano = date("Y");
$ano_ = substr($ano,-2);
function meses($a) {
switch($a) {
case 1: $mes = "janeiro"; break;
case 2: $mes = "fevereiro"; break;
case 3: $mes = "março"; break;
case 4: $mes = "abril"; break;
case 5: $mes = "maio"; break;
case 6: $mes = "junho"; break;
case 7: $mes = "julho"; break;
case 8: $mes = "agosto"; break;
case 9: $mes = "setembro"; break;
case 10: $mes = "outubro"; break;
case 11: $mes = "novembro"; break;
case 12: $mes = "dezembro"; break;
}
return $mes;
}
?>
<table border="0" summary="Calendário" class="calendario">
<caption><?php echo "".meses($mes)." ".$ano.""; ?></caption>
<thead>
<tr>
<th abbr="Domingo" title="Domingo"><b <?php echo("$domingo");?>>D</b></th>
<th abbr="Segunda" title="Segunda"><b>S</b></th>
<th abbr="Terça" title="Terça"><b>T</b></th>
<th abbr="Quarta" title="Quarta"><b>Q</b></th>
<th abbr="Quinta" title="Quinta"><b>Q</b></th>
<th abbr="Sexta" title="Sexta"><b>S</b></th>
<th abbr="Sábado" title="Sábado"><b>S</b></th>
</tr>
</thead>
<tbody>
<?php
$Data = strtotime($mes."/".$dia."/".$ano_);
$Dia = date('w',strtotime(date('n/\1\/Y',$Data)));
//$Dias = date('t',$Data);
$Dias = $dias;
for ($i=1,$d=1;$d<=$Dias;) {
echo("<tr>");
for ($x=1;$x<=7 && $d <= $Dias;$x++,$i++) {
if ($i > $Dia) {
$destaque = '';
if ($x == 1) { $destaque = $domingo; }
if ($d == $dia) { $destaque = $hoje; }
if (($x == 1) && ($d == $dia)) { $destaque = $hoje; }
echo("<td ".$destaque.">".$d++."</td>");
}
else { echo("<td> </td>"); }
}
for (;$x<=7;$x++) { echo("<td> </td>"); }
echo("</tr>");
}
?>
</tbody>
</table>
<script type="text/javascript">
// Declara variáveis
var data,ano,mes,bissexto,meses,qnt;
// Obtém a data atual
data=new Date();
// Obtém o ano atual
ano=data.getFullYear();
// Obtém o mês atual
mes=data.getMonth();
// Verifica se o ano é bissexto, para definir a quantidade de dias do mês Fevereiro
bissexto=(((ano%4)==0&&(ano%100)!=0)||(ano%400)==0)
?29:28;
// Array das quantidades de dias de cada mês
meses=new Array(31,bissexto,31,30,31,30,31,31,30,31,30,31);
// Quantidade de dias do mês atual
qnt=meses[mes];
// Imprime
document.write("O mês atual contém "+qnt+" dias");
</script>
<?php
}
?>
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.