Ir para conteúdo

POWERED BY:

Arquivado

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

Fr4nc0w

[Resolvido] Como implementar um cadastro de horario de funcioname

Recommended Posts

Dae, não sabia direito onde postar essa dúvida, por ser em php então vou vir aqui mesmo.

 

Obs: Quando ao PHP, dificilmente terei problemas, o negocio é mais a lógica do processo como um todo, php não acho que vá ser problema.

 

É o seguinte, estou fazendo um cadastro onde precisa constar o horário de funcionamento de um estabelecimento e ele precisa ser especifico para ser exibido assim:

 

De terça a sexta, das 11h30 às 14h45 e das 18h30 às 23h30. Sábado, domingo e feriado, das 11h30 às 15h45 e das 18h30 às 23h30.

 

por exemplo.

Mas esse mesmo cadastro precisa exibir um assim:

 

Todos os dias das 11h30 as 18h30.

 

Ou assim:

 

De Segunda a Sexta das 8h as 13h e das 15h as 18h.Sábados e Domingos das 17h as 22h.

 

 

 

Eu pensei em vários jeitos. Um select com dias pré definidos e um espaço pra digitar os horários, mas a empresa pode funcionar em horarios diferentes dependendo do dia.

 

Pensei em fazer um cadastro de horário para cada dia. A pessoa preenche os horários de todos os dias que for funcionar, mas não sei até onde consigo gerenciar na hora de exibir.

 

 

Além disso, fico pensando, horario de funcionamento precisa ser uma estrutura de dados separada? tipo uma tabela soh disso que recebe o ID da empresa.?

 

Não quero fazer um preenchimento manual, pois fica totalmente horrivel né, tipo fica um texto gigante lá você tem que digitar todas as vezes esse texto sobre cada empresa, então é complicado.

 

 

Queria ajuda de vocês para implementar do jeito mais eficiente possivel.

 

Como salvar isso no banco de modo que possa ser fácilmente editado e também possa exibir de várias maneiras, aceito todo tipo de dica, até mesmo pra mudar exibicao. Posso mudar como exibir a lógica e tals desde que as pessoas entendam que horário irá funcionar o local está ótimo.

 

vlw e flw !

Compartilhar este post


Link para o post
Compartilhar em outros sites

É pessoal to vendo que to ferrado mesmo, passei umas 4 horas ontem elaborando algo e pensando no melhor jeito.

 

por enquanto to cadastrando uma hora de abertura e fechamento e almoço pra cada dia e tentando comparar os iguais para montar o mais lógico possível.

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi essa dúvida

 

qual é a lógica desses horários? se eles não seguem uma lógica, você também não poderá seguir uma, tendo de especificar um horário base e permitir o cadastro de períodos com horários diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o seguinte, estou fazendo um cadastro onde precisa constar o horário de funcionamento de um estabelecimento e ele precisa ser especifico para ser exibido assim:

 

De terça a sexta, das 11h30 às 14h45 e das 18h30 às 23h30. Sábado, domingo e feriado, das 11h30 às 15h45 e das 18h30 às 23h30.

 

por exemplo.

Mas esse mesmo cadastro precisa exibir um assim:

 

Todos os dias das 11h30 as 18h30.

 

Ou assim:

 

De Segunda a Sexta das 8h as 13h e das 15h as 18h.Sábados e Domingos das 17h as 22h.

 

Bom, não sei se entendi direito por isso aqui vai uma tentativa:

 

Criando a tabela:

mysql> CREATE TABLE `funcionamento` (
    ->     `id` smallint(4) unsigned not null auto_increment,
    ->     `diai` smallint(1) unsigned not null,
    ->     `diaf` smallint(1) unsigned not null,
    ->     `horai` time  not null,
    ->     `horaf` time  not null,
    ->     primary key (`id`),
    ->     key `dias` (`diai`,`diaf`,`horai`)
    -> ) engine=MyISAM;
Query OK, 0 rows affected (0.01 sec)

Depois de inserir alguns dados: (0 - para domingo e 6 para sábado)

mysql> select * from funcionamento order by `diai`,`diaf`,`horai` asc;
+----+------+------+----------+----------+
| id | diai | diaf | horai    | horaf    |
+----+------+------+----------+----------+
|  4 |    0 |    6 | 00:00:00 | 05:00:00 |
|  1 |    1 |    5 | 07:00:00 | 12:30:00 |
|  2 |    1 |    5 | 14:00:00 | 18:00:00 |
|  3 |    6 |    6 | 07:00:00 | 12:30:00 |
+----+------+------+----------+----------+
4 rows in set (0.00 sec)

Agora testando no PHP:

<?php
$nomes = explode( "//" , sprintf( "Domingo//%s" , implode( "-feira//" , array( "Segunda" , "Terça" , "Quarta" , "Quinta" , "Sexta" , "Sábado" ) ) ) );

/**
 * Função auxiliar para formatar a hora
 * @param string $hora A hora que será formatada
 * @return string
 */
function formataHora( $hora ){
    return( vsprintf( "%2d:%02dh" , explode( ":" , $hora ) ) );
}

try {
    $pdo = new PDO( "mysql:host=host;dbname=database" , "user" , "password" );

    if ( ( $res = $pdo->query( "select `diai`,`diaf`,`horai`,`horaf` from `funcionamento` order by `diai`,`diaf`,`horai` asc;" ) ) ){
        $dias = array();

        foreach ( $res as $row ){
            $func = "";
            $hash = md5( sprintf( "%s%s" , $row[ "diai" ] , $row[ "diaf" ] ) );
            $horai = formataHora( $row[ "horai" ] );
            $horaf = formataHora( $row[ "horaf" ] );

            if ( isset( $dias[ $hash ] ) ){
                $dias[ $hash ] .= sprintf( ", das %s até as %s" , $horai , $horaf );
            } else {
                if ( ( (int) $row[ "diaf" ] - (int) $row[ "diai" ] ) == 6 ){
                    $dias[ $hash ] = sprintf( "Todos os dias das %s até as %s" , $horai , $horaf );
                } elseif ( $row[ "diai" ] == $row[ "diaf" ] ){
                    $dias[ $hash ] = sprintf( "%s das %s até as %s" , $nomes[ $row[ "diaf" ] ] , $horai , $horaf );
                } else {
                    $dias[ $hash ] = sprintf( "De %s a %s das %s até as %s" , $nomes[ $row[ "diai" ] ] , $nomes[ $row[ "diaf" ] ] , $horai , $horaf );
                }
            }
        }

        printf( "<table><thead><tr><th>Horário de funcionamento</th></tr></thead><tbody><tr><td>%s</td></tr></tbody></table>" , implode( "</td></tr><td><tr>" , $dias ) );

    }
} catch( PDOException $e ){
    printf( "Erro[ %d ]: %s\n" , $e->getCode() , $e->getMessage() );
}

A saída será:

<table>
    <thead>
        <tr>
            <th>Horário de funcionamento</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Todos os dias das 0:00h até as 5:00h</td>
        </tr>
        <tr>
            <td>De Segunda-feira a Sexta-feira das 7:00h até as 12:30h, das 14:00h até as 18:00h</td>
        </tr>
        <tr>
            <td>Sábado das 7:00h até as 12:30h</td>
        </tr>
    </tbody>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Joao, se tem um cara pra eu admirar por aqui é você, tipo no caso você fez bem o que eu tava esperando me ajudou a pensar, mudou o ponto de vista, e acabo me ajudando a encontrar outra linha de raciocinio..

 

vou dar uma otima lida no seu, ver até onde se encaixou no que eu espero de fato e volto dizendo onde cheguei e talvez pedindo um complemento.

 

vlwww mesmo cara..

 

você manda mtu bem nas suas respostas.

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Implementado de uma outra maneira mas com uma lógica parecida...vlwww ai cara gosto mtu das suas respostas. caso resolvido e essa solucao citada no tópico é válida..

 

até mais.!

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.