Jump to content
Fórum Script Brasil
  • 0

Dúvida Utilizando Datas


joanita
 Share

Question

Como definir preços ex:(Suite verde (epoca baixa 10€ / alta 20€) conforme a data no ano (ou seja metade do ano é época alta a outra metade é baixa)... queria que o script visse a data atual e caso fosse época alta mostrava um preço, se fosse baixa mostrava o outro?

 

Existe forma de ao criar uma reserva, seja gravada a data de inserção e depois no php recuperar a data de inserção?

 

há como definir o script para eliminar automaticamente uma reserva, sempre que esta ultrapasse a data inserida no campo de checkout?

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

1.

<?php
    $inicio_alta = new DateTime("2016-06-15"); //exemplo
    $fim_alta = $inicio_alta->add(new DateInterval("P3M")); //adiciona 3 meses
    echo $fim_alta->format("Y-m-d h:i:s");

E dá também uma olhada neste exemplo.

2. Sim. A opção chama-se CURRENT_TIMESTAMP.

3. Há, utilizando triggers

Edited by wootzor
Link to comment
Share on other sites

  • 0

adoro isso no php, da pra fazer TUDO... o pior é fazelo porque basta um desleixo numa virgula pra já nada funcionar, quem domina a programação facilmente da com os erros, agora quem ta ainda no inicio como eu... desespera muito facilmente!

Ok... preciso mais ajudas (ou propriamente exemplos) o que é necessário postar aqui para me ajudarem a aplicar isso no meu código?

wootzor esse exemplo parece definir apenas os intervalos entre épocas, e como faço o php perceber quando é quando e inserir os valores adequados por epoca? inda nem sequer criei os campos necessários com os valores... como farias?

 

atualmente estamos assim:

<php

    // define a data de inicio da epoca alta
    $inicio_alta = new DateTime("01-04-2016"); //exemplo
    
    //adiciona 5 meses a essa data
    $fim_alta = $inicio_alta->add(new DateInterval("P5M"));
    
    // mostra data do fim da epoca alta
    echo "<p align ='center'>Data de fim da Época Alta: <b>";
    echo $fim_alta->format("d-m-y");
    echo "</b> ás <b>";
    echo $fim_alta->format("h:i:s"); echo "</b></p>";

?>

Edited by joanita
Link to comment
Share on other sites

  • 0
<?php
  $inicio_alta = new DateTime("2016-04-01");
  $fim_alta = $inicio_alta->add(new DateInterval("P5M"));
  echo "Fim da época alta: " . $fim_alta->format("d-m-Y h:i:s") . "<br />";
  $hoje = new DateTime("now");
  if (($hoje >= $inicio_alta) && ($hoje <= $fim_alta))
  {
    //Aplicar Preços de Verão (por ex., pegas no preço "base" da tabela, acrescentas x% e mostras o novo preço)
  }
  else
  {
    //Aplicar Preços de época baixa
  }

 

Link to comment
Share on other sites

  • 0

deixa ver se percebi... e onde é que isso vai buscar os respetivos preços? ou seja cada suite terá que ter 2 preços, o da alta e da baixa...

supõe... n campo suite, quando é escolhida a suite, isso deveria assumir que naquela data o preço daquela suite é tal... e mostraria isso numoutro campo o final da reserva $total que inda não criei na db... mas seria mostrado o valor da reserva nesse campo(mais a frente veremos ainda como adicionar o valor de outros campos e mostrar no $total) ex: preço do late_checkout, preço das atividades, preço camas_extra, preço do jantar_incluido etc... todos devem ser somados e exibido um total do valor geral da reserva com todos os campos

inicialmente eu tinha imaginado que teria que criar na tabela um campo para o valor da epoca baixa, ourto pra alta, um pra data em que foi inserido o registo da reserva, etc... por isso é q penso que seria interessante as pessoas q me ajudam poderem ter acesso ao script para testar e melhorarmos

 

Edited by joanita
Link to comment
Share on other sites

  • 0

A questão é que, se puseres os preços de época alta e época baixa na tabela, vais estar a acrescentar informação "desnecessária" no sentido em que são dados que podem ser inferidos directamente em PHP sem necessidade de armazenamento permanente na base de dados. Imagina que o preço por noite da tua suite mais simples é 100€ (preço base ou de época baixa). Quando chegares à época alta, podes simplesmente ir buscar o valor à BD e recalculares o preço em função da nova margem (ex: $preço *= 1.15), o que permite até maior versatilidade, já que são cálculos que podes fazer e apresentar directamente no script e não precisas de estar constantemente a fazer pedidos à BD.

Edited by wootzor
Link to comment
Share on other sites

  • 0

eu já coloquei estes campos no sql:

  `id` smallint(6) NOT NULL AUTO_INCREMENT,
  `nome` text CHARACTER SET utf8 NOT NULL,
  `telefone` decimal(9,0) NOT NULL,
  `email` varchar(50) CHARACTER SET utf8 NOT NULL,
  `suite` varchar(50) CHARACTER SET utf8 NOT NULL,
  `valor_suite` decimal(9,0) NOT NULL,
  `tipo_reserva` text CHARACTER SET utf8 NOT NULL,
  `data_reserva` date NOT NULL,
  `checkin` date NOT NULL,
  `checkout` date NOT NULL,
  `late_checkout` text CHARACTER SET utf8 NOT NULL,
  `pagamento` decimal(4,0) NOT NULL,
  `hora_chegada` time NOT NULL,
  `camas_extra` varchar(30) CHARACTER SET utf8 NOT NULL,
  `valor_camas_extra` decimal(9,0) NOT NULL,
  `berco` varchar(30) CHARACTER SET utf8 NOT NULL,
  `pequeno_almoco` varchar(30) CHARACTER SET utf8 NOT NULL,
  `jantar` varchar(30) CHARACTER SET utf8 NOT NULL,
  `data_jantar` date NOT NULL,
  `valor_jantar` decimal(9,0) NOT NULL,
  `animais` decimal(1,0) NOT NULL,
  `valor_animais` decimal(9,0) NOT NULL,
  `atividades` varchar(30) CHARACTER SET utf8 NOT NULL,
  `valor_atividade` decimal(9,0) NOT NULL,
  `transporte` varchar(30) CHARACTER SET utf8 NOT NULL,
  `valor_transporte` decimal(9,0) NOT NULL,
  `pedido_especial` varchar(250) CHARACTER SET utf8 NOT NULL,
  `valor_pedido_especial` decimal(9,0) NOT NULL,
  `valor_total` decimal(9,0) NOT NULL,

imagina... o campo "valor_suite" serviria para armazenar o valor, mas poderia ser feito como dizes para verificar se era epoca alta ou baixa e então depositar o valor neste campo... é q é assim... depois sera necessario somar os diversos campor valor e alguns são por ex:os gastos com comida e bebida que atraves do edit vao sendo colocados... tas a ver a coisa?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...