Ir para conteúdo
Fórum Script Brasil

Slackneo

Membros
  • Total de itens

    14
  • Registro em

  • Última visita

Posts postados por Slackneo

  1. Funcionou que é uma maravilha.

    Desculpe a minha falta de conhecimento, mas estou batendo cabeça e não consigo adicionar o TEL no array, pois além do array Hora e Paciente tenho um array Tel. Estou quebrando a cabeça e não consigo.

    Desde já agradeço!

  2. Segue o código.

    //grade do médico
    $grade = array("08:00","08:15","08:30","08:45","09:00");
    
    //hora das consultas marcadas
    $hora = array("07:30","08:00","08:10","08:30","09:00","10:00");
    
    //paciente das consultas marcadas
    $paciente = array("Agueltúrcio","Bunesvaldo","Cledivandro","Dorinelson","Enislênio","Fidusotro");
    
    //while para percorrer todo array grade pois poderíamos não saber qual é o tamanho dele
    
    $i=0;
    $tg = count($grade);
    $th = count($hora);
    while($i < $tg)
    {
    //sepra a hora e os minutos da grade em 2 arrays diferentes
      list($grade_hora[$i],$grade_minuto[$i]) = explode(":",$grade[$i]);
      $i++;
    }
    $delta = abs($grade_minuto[0] - $grade_minuto[1]);
    
    //while para percorrer todo array hora pois poderíamos não saber qual é o tamanho dele
    $j=0;
    while($j<$th)
    {
    //separa a hora e os minutos da grade em 2 arrays diferentes
      list($hora_hora[$j],$hora_minuto[$j]) = explode(":",$hora[$j]);
      $j++;
    }
    
    //for para percorrer as 24 horas
    $m=0;
    $q=0;
    for($k=0;$k<24;$k++)
    {
        //for para percorrer delta minutos
        for($l=0;$l<60;$l+=$delta)
        {
            //teste para verificar se o horario atual pertence a grade ou se existe pacientes para os proximos delta minutos
            $ctrl=false;
            for($p=$q;$p<$i;$p++)
            {
                if($grade_hora[$p] == $k AND $grade_minuto[$p] == $l)
                {
    
                    if($q == 0)
                    {
                        //echo "------INÍCIO DO HORÁRIO NORMAL------\n<br />";
                    }
                    echo "\n<tr><td>x</td><td>".$grade_hora[$p].":".$grade_minuto[$p]."</td>";
                    
                    $q++;
                    $p = $i;
                    $ctrl=true;
                }
                
                if($q == $i AND $m == $j)
                {                
                    //echo "\n<br />------FIM DO HORÁRIO NORMAL------\n<br />";
                } 
                
            }//fecha for 
    
            for($n=$m;$n<$j;$n++)
            {
                $minant = $l + $delta - 1;
    
                if($hora_hora[$n] == $k AND $hora_minuto[$n] == $l)
                {
                    if(!$ctrl)
                    {
                        echo "\n<tr><td>@</td><td>".$hora_hora[$n].":".$hora_minuto[$n]."</td>";
                        $ctrl=true;
                    } 
                        echo "<td>".$paciente[$n]."</td><td>".$tel[$n]."</td>";
                    
                    if($q ==  0 OR $q >= $i)
                    {
                        echo "</tr>";
                    }
                    if($q == $i)
                    {
                        $q++;
                    }
                    $m++;
                }
                
                
                if($hora_hora[$n] == $k AND $hora_minuto[$n] > $l AND $hora_minuto[$n] <= $minant)
                {
                    echo "</tr>\n<tr><td>Z</td><td>".$hora_hora[$n].":".$hora_minuto[$n]."</td><td>#".$paciente[$n]."</td>"."<td>".$tel[$n]."</td>";
                    $m++;
                }
            }//fecha for 
            if($q > 0 AND $q <= $i AND $ctrl)
            {
                echo "</tr>";
            } 
            
        }//fecha for
    }//fecha for

    A tabela tem 4 colunas. O problema está quando não tem agendamento no horário, eu preciso imprimir duas colunas em branco depois da coluna de hora.

  3. Opa!!! Desculpe a demora, é que estava de férias.

    Executei seu código aqui e deu uns erros que já acertei. O problema estava em 2 WHILES.

    Onde está de negrito foi a mudança. Ficou assim:

    //grade do médico
    $grade = array("08:00","08:15","08:30","08:45","09:00");
    
    //hora das consultas marcadas
    $hora = array("07:30","08:00","08:10","08:30","09:00","10:00");
    
    //paciente das consultas marcadas
    $paciente = array("Agueltúrcio","Bunesvaldo","Cledivandro","Dorinelson","Enislênio","Fidusotro");
    
    //while para percorrer todo array grade pois poderíamos não saber qual é o tamanho dele
    $i=0;
    [b]$tg = count($grade);
    $th = count($hora);[/b]
    [b]while($i < $tg)[/b]
    {
    //sepra a hora e os minutos da grade em 2 arrays diferentes
      list($grade_hora[$i],$grade_minuto[$i]) = explode(":",$grade[$i]);
      $i++;
    }
    $delta = abs($grade_minuto[0] - $grade_minuto[1]);
    
    //while para percorrer todo array hora pois poderíamos não saber qual é o tamanho dele
    $j=0;
    [b]while($j<$th)[/b]
    {
    //separa a hora e os minutos da grade em 2 arrays diferentes
      list($hora_hora[$j],$hora_minuto[$j]) = explode(":",$hora[$j]);
      $j++;
    }
    
    //for para percorrer as 24 horas
    $m=0;
    $q=0;
    for($k=0;$k<24;$k++)
    {
    //for para percorrer delta minutos
      for($l=0;$l<60;$l+=$delta)
      {
    //teste para verificar se o horario atual pertence a grade ou se existe pacientes para os proximos delta minutos
        $ctrl=false;
        for($p=$q;$p<$i;$p++)
        {
          if($grade_hora[$p] == $k AND $grade_minuto[$p] == $l)
          {
            if($q == 0)
            {
              //echo "------INÍCIO DO HORÁRIO NORMAL------\n<br />";
            }
            echo $grade_hora[$p].":".$grade_minuto[$p];
            $q++;
            $p = $i;
            $ctrl=true;
          }
            if($q == $i AND $m == $j)
            {
              //echo "\n<br />------FIM DO HORÁRIO NORMAL------\n<br />";
            }
        }
    
        for($n=$m;$n<$j;$n++)
        {
          $minant = $l + $delta - 1;
          if($hora_hora[$n] == $k AND $hora_minuto[$n] == $l)
          {
            if(!$ctrl)
           {
              echo $hora_hora[$n].":".$hora_minuto[$n];
              $ctrl=true;
           }
            echo " - ".$paciente[$n];
            if($q ==  0 OR $q >= $i)
            {
              echo "\n<br />";
            }
            if($q == $i)
            {
              //echo "------FIM DO HORÁRIO NORMAL------\n<br />";
              $q++;
            }
            $m++;
          }
          if($hora_hora[$n] == $k AND $hora_minuto[$n] > $l AND $hora_minuto[$n] <= $minant)
          {
            echo "\n<br />".$hora_hora[$n].":".$hora_minuto[$n]." - ".$paciente[$n];
            $m++;
          }
        }
        if($q > 0 AND $q <= $i AND $ctrl)
        {
          echo "\n<br />";
        }
      }
    }

    Show de bola!!!!

    Agora vou adaptar à minha realidade.

    Logo, logo de dou um parecer. Obrigado por enquanto.

  4. Pessoal desculpem a demora, mas estava meio ocupado ultimamente.

    @svjets

    Entendi sua lógica, mas não consegui aplicar no meu caso.

    O que preciso é aplicar essa lógica nesses 2 arrays (strings), utilizando PHP:

    Array GRADE:

    Chave: 0 - Grade: 08:00

    Chave: 1 - Grade: 08:15

    Chave: 2 - Grade: 08:30

    Chave: 3 - Grade: 08:45

    Chave: 4 - Grade: 09:00

    Array HORA:

    Chave: 0 - Hora: 07:30

    Chave: 1 - Hora: 08:00

    Chave: 2 - Hora: 08:10

    Chave: 3 - Hora: 08:30

    Chave: 4 - Hora: 09:00

    Chave: 5 - Hora: 10:00

    Grade são horários pré-definidos.

    Hora são os agendamentos das consultas.

    Agradeço a colaboração.

  5. Primeiro problema:

    CADASTRA.PHP

    $bairro = $_POST['bairro];
    Faltou fechar a aspas simples:
    $bairro = $_POST['bairro1];
    Segundo: LISTARPAC.PHP
    // Agora vem o grande truque, separamos os dados pelo "|" com explode
    $dado = explode("|",$le);
    você mesma define que o separador vai ser o caracter: £ Então troque no explode.
    // Agora vem o grande truque, separamos os dados pelo "|" com explode
    $dado = explode("£",$le);

    E pronto!!!!

  6. Sobre o login, também pode ser feito por sessão!

    Quando o cara logar grava uma variável de sessão, daí é só testar se a variável existe, caso verdadeiro o cara tá logado.

    Quanto ao problema do do topo.php, a solução mais imediata seria na página de login você fazer o topo direto na página.

    Arbaço!

  7. O arquivo que contem o código está na mesma pasta das imagens?!?!!? O nome do arquivo gravado no banco está com a extensão (.JPG)?

    Se não estiver na mesma pasta, terá de fazer assim:

    echo '<a href="#" name="'.$ln['cod_modelo'].'"><img src="fotos/'.$ln['imagem'].'" width="94" height="100" border="0"/>  </a>';

    Espero ter ajudado!

  8. Segue abaixo:

    Tabela AgendaConsultas

    AutoId            int
    Paciente            int
    Medico            int
    Usuario          int
    LocalAtend     int
    Data                    smalldatetime
    Hora                    varchar(5)
    Compareceu    bit
    Atrasado            bit
    Atendido            bit
    Retorno            bit
    Exame            bit
    Cirurgia            bit
    TelNum            varchar(9)
    TelDdd            varchar(2)
    Complemento    varchar(255)
    Convenio            int

  9. @svjets

    Obrigado pela atenção.

    Talvez eu não tenha entendido sua lógica ou você não entendeu o que eu quero fazer.

    Vou simplificar.

    Tenho um array chamado grade.

    Grade:

    Array ( [0] => 08:00 [1] => 08:15 [2] => 08:30 [3] => 08:45 [4] => 09:00 )

    E tenho outro array chamado agenda.

    Agenda:

    HORA - PACIENTE

    08:10 - TESTE

    08:15 - TESTE 1

    08:30 - TESTE 2

    Quando imprimo o array GRADE ele me retorna como abaixo, o que seriam horários vagos:

    08:00

    08:15

    08:30

    08:45

    09:00

    Agora o que preciso fazer é percorrer o array GRADE e testar se o horário de AGENDA é igual da GRADE, se for imprimi o horário e o paciente da AGENDA, se não for igual imprimi o horário da GRADE, e caso haja horário na AGENDA que não seja igual da GRADE (encaixe) ele imprima na ordem correta.

    Não sei se consegui explicar mais claramente.

    Obrigado desde já.

  10. Olá pessoal,

    Também estou montando uma agenda médica.

    Estou tentando fazer assim:

    Tabela: TipoAgenda

    Guarda o intervalo de horário de cada médico de cada dia da semana. Ex.: 08:00 - 09:00.

    Tabela: AgendaConsultas

    Guarda os agendamentos.

    O funcionamento seria assim:

    Quando selecionar o dia da semana para fazer o agendamento do paciente, o sistema pega o intervalo de horário dentro de TipoAgenda e monta uma grade de 15 em 15 minutos, assim:

    08:00

    08:15

    08:30

    09:00

    E quando o atendente agendar algum paciente, o sistema dá um select na tabela AgendaConsultas mostrará na grade o nome do paciente, assim:

    08:00

    08:15 Paciente A

    08:30

    09:00 Paciente B

    Até aí tudo bem. Porém, estou com algumas dificuldades, que são:

    - Agendamentos podem ser feitos qualquer horário mesmo fora da grade e com encaixe: 07:30, 08:10 e assim por diante. Quando acontece esse encaixe é que meu problema começa, pois não consigo uma maneira de mostrá-lo na grade.

    @claytonprog

    Percebi que você vai trabalhar com a grade de horários direto no banco.

    Minha idéia inicial seria manter no banco só os agendamentos que realmente foram feitos, e horários vagos não ficariam na tabela.

    Será que é melhor trabalhar com sua linha de raciocínio? Gravando tudo na tabela?!?!?

×
×
  • Criar Novo...