Mostrar página a certo dia

Frango.

Power Member
Boas!

Tenho uma página em PHP a mostrar uma certa programação semanal.. O que eu queria era por exemplo, na Terça-Feira mostrar logo a programação para Terça-Feira.

Muito obrigado desde já.
 
mas não me esclareceste. a tua programação vai ser apenas 7 coisas diferentes (uma para cada dia da semana, sendo igual todas as semanas) ou cada dia vai ter sempre uma coisa diferente?

para usar a função date:
PHP:
//aqui recebes um número entre 0 e 6, correspondente ao dia da semana
$dia_semana = date("w");

//aqui o dia da semana por extenso
$dia_semana_ext = date("D");

//aqui o dia do mês, entre 01, e 31
$dia_mes = date("d");

//aqui a data completa, no formato DD-MM-YYYY
$data = date("d-m-Y");
mais informação sobre outros tipos de formatação que podes usar para esta função (que como podes ver é completamente personalizáve), encontras aqui: http://pt2.php.net/date
 
Tens os dados numa BD, certo?
A tabela da programacao tem um campo com a data, certo?
Só tens de fazer um select em que fazes um where com a data de hoje.
 
Sim tenho uma "página" para cada dia. usei um código que usa várias páginas por exemplo:

index.php?pagina=1

e dentro do echo tá o conteúdo.

mas não me esclareceste. a tua programação vai ser apenas 7 coisas diferentes (uma para cada dia da semana, sendo igual todas as semanas) ou cada dia vai ter sempre uma coisa diferente?

para usar a função date:
PHP:
//aqui recebes um número entre 0 e 6, correspondente ao dia da semana
$dia_semana = date("w");

//aqui o dia da semana por extenso
$dia_semana_ext = date("D");

//aqui o dia do mês, entre 01, e 31
$dia_mes = date("d");

//aqui a data completa, no formato DD-MM-YYYY
$data = date("d-m-Y");
mais informação sobre outros tipos de formatação que podes usar para esta função (que como podes ver é completamente personalizáve), encontras aqui: http://pt2.php.net/date

Vai ser uma para cada dia da semana igual todas as semanas.

Nota que não uso base de dados.


-----------------------------------------------------

Após umas pesquisas no google percebi que o PHP date serve para ver que dia é hoje e o switch é para mostrar o dia.. pronto é mais ou menos isso.. eu queria integrar essas "coisas" no meu site aqui está o meu código:

Código:
<?

if (!$dia){

echo "<a href='programacao.php'><u>Segunda</u></a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Aqui a programação"";

} elseif ($dia=='terca'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'><u>Terça</u></a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Aqui a programação"";

} elseif ($dia=='quarta'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'><u>Quarta</u></a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Aqui a programação"";

} elseif ($dia=='quinta'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'><u>Quinta</u></a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Aqui a programação"";
}

elseif ($dia=='sexta'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'><u>Sexta</u></a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Aqui a programação"";
}

elseif ($dia=='sabado'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'><u>Sábado</u></a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Aqui a programação"";
}

elseif ($dia=='domingo'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'><u>Domingo</u></a><br/><br/>Aqui a programação";
}

?>

como integro?
 
Última edição:
então basta-te usar a primeira opção dos exemplos que eu dei. com isso recebes um número referente ao dia da semana (0 para Domingo, até 6 para Sábado), e fazes simplesmente isto:

PHP:
switch ($dia_semana) {
   case 0:
      //mostrar opções para Domingo
      break;

   case 1:
      //opções para Segunda
      break;

//etc...

}
}
 
Por acaso estou a fazer neste momento um script para o caso que referes, é para mostrar a ementa de um restaurante, como a ementa varia todas as semanas o que estou a fazer é:

  • numa página a pessoa introduz a ementa para a semana toda (no Domingo faz a ementa para a semana);
  • esta ementa é guardada num ficheiro em que cada linha corresponde ao dia da semana, a começar na 2ª-feira.
  • os diferentes pratos do dia são separados por ponto e virgula
Para um caso destes não vale a pena usar base de dados.

Para ler basta abrir o ficheiro para um array, separado pela quebra de linha e a seguir voltar a separar os items do dia que estão divididos pelo ;(ponto e virgula)

A seguir tens as funções que uso

grava os dados no ficheiro:

PHP:
     /*
        $fileToWork    -> file to save the menu (plus password on 1st line)
        Return 0        -> problems working with file
        Return 1        -> ends Ok
        Return 2        -> date field not filled        
     */
    function saves_menu ($fileToWork,$arrToWrite) {
        $data             = $_POST['data'];
        $dia_semana        = $_POST['dia_semana'];
        $keePass        = 'TESTE';
        $msgCode        = '';
        $strToWrite        = '';
         //gets the password from the file
         $fr     = fopen ($fileToWork,"r");
        if (!$fr) {
            $msgCode = 0;
        } else {
            $keepPass = fgets ($fr);
            fclose($fr);
            $strToWrite = $keepPass;
            $strToWrite .= implode ("\n",$arrToWrite);
            $fr         = fopen ($fileToWork, "w");
            if (!$fr) {
                fclose ($fr);
                $msgCode = 0;
            } else {
                fwrite ($fr,$strToWrite);
                fclose($fr);
                $msgCode = 1;
            } // fr
        } // filecontents        
        return $msgCode;
    } // function
vai buscar os dados no ficheiro e cria uma array separada por dia da semana
PHP:
     // returns an array with the menu, or returns an error
    function get_menu ($fileToWork) {
        $file_content = '';
        $fr = fopen($fileToWork, 'r');
        if(!$fr) {
            return 0;
        } else {
            fclose ($fr);        
            $file_content = file( $fileToWork );
            unset ($file_content[0]); // removes the password field
        } // fr
        return $file_content;
    } // function
mostra os itens separados pelo dia da semana
PHP:
     // shows the menu in menu page (ementa.php)
    function Show_menu ($fileToWork){
         // array with menu for each
        $arr_menu         = get_menu ($fileToWork);
        $menu_date        = $arr_menu[1]; // gets the field with the week starting date (should indicate monday)
        $date_ok        = date_validation ($menu_date); // checks if the date field as a valid  date on it
        unset ($arr_menu[1]); // leaves only the week days on array
        $arr_week = array('2ª Feira','3ª Feira','4ª Feira','5ª Feira', '6ª Feira', 'Sábado');
        if ($date_ok ){
            $menu_date    = str_replace ('-','/',$menu_date);
            $split_date = explode ('/',$menu_date);
             // valid date, shows the week days name plus the date
            for ($x=0;$x<6;$x++){
                $arr_week [$x] .= ', '.date('d/m/Y', mktime(0, 0, 0, $split_date[1], $split_date[0]+$x, $split_date[2]));
            }
        }
        $daily_menu     = '';
        $str_formated    = '' ; // format the output html with DL and UL according
        
        
        if ($arr_menu == 0 ) {
            return 0;
        } else {
            $str_formated = '<dl>';
            $x=0;
            foreach ($arr_menu as $value) {
                $str_formated     .= "<dt>{$arr_week[$x]}</dt>";
                $x++;
                $str_formated     .= '<dd><ul>';                
                // split the menu for each day
                $daily_menu = explode (';',$value);
                foreach ($daily_menu as $value){
                     // formats the daily menu for html ul
                    $str_formated .= '<li>' . $value . '</li>';                
                }
                $str_formated     .= '</ul></dd>';                
            }
            $str_formated     .= '</dl>';                
        }
        return $str_formated;
    } // function
Conteúdo do ficheiro
PHP:
--- início do ficheiro -----
palavra-passe, para evitar abusos:)
15/09/2008 <- dia da 2ª feira, os outros dias são tirados deste
Dobrada;Coxas de Frango
Carne assada;Filetes de pescada com arroz de tomate
Carne de porco à alentejana; Carapaus Cozidos
Mão de vaca c/ grão; Maionese com mostarda;Rojões com manteiga;Bitoques
Carne de vaca à primavera; Pataniscas c/ arroz de tomate
Rancho c/ feijão;Arroz de pato
--- fim do ficheiro -----
 
omg deu-me erro :sad1:

pus o código assim:

PHP:
<?
$dia_semana = date("w");

switch ($dia_semana) {
   case 1:

if (!$dia){

echo "<a href='programacao.php'><u>Segunda</u></a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Programação";
break;
}

switch ($dia_semana) {
   case 2:

} elseif ($dia=='terca'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'><u>Terça</u></a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Programação";
break;
}

switch ($dia_semana) {
   case 3:
} elseif ($dia=='quarta'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'><u>Quarta</u></a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Programação";
break;

switch ($dia_semana) {
   case 4:
} elseif ($dia=='quinta'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'><u>Quinta</u></a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Programação";
break;

}
switch ($dia_semana) {
   case 5:

elseif ($dia=='sexta'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'><u>Sexta</u></a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Programação";
break;
}

switch ($dia_semana) {
   case 6:
elseif ($dia=='sabado'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'><u>Sábado</u></a> | <a href='?dia=domingo'>Domingo</a><br/><br/>Programação";
break;
}

switch ($dia_semana) {
   case 7:
elseif ($dia=='domingo'){

echo "<a href='programacao.php'>Segunda</a> | <a href='?dia=terca'>Terça</a> | <a href='?dia=quarta'>Quarta</a> | <a href='?dia=quinta'>Quinta</a> | <a href='?dia=sexta'>Sexta</a> | <a href='?dia=sabado'>Sábado</a> | <a href='?dia=domingo'><u>Domingo</u></a><br/><br/>Programação";
break;
}

?>

Código:
[B]Parse error[/B]:  parse error, unexpected T_ELSEIF in [B]/home/www/******/******/programacao.php[/B] on line [B]105[/B]

O que tá mal? Podem corrigir sff?
 
funcionou.. mas agora queria por o else if para as paginas ficarem programacao?dia=segunda tipo ter as duas funcionalidades php.. como faço agora?

novo código :P

PHP:
<?
$dia_semana = date("w");

switch ($dia_semana) {
case "1":
    echo "i is apple";
    break;
case "2":
    echo "i is bar";
    break;
case "3":
    echo "i is cake";
    break;
}
?>
 
Algo do genero...

PHP:
$dia_semana = date("w");
if(!isset($_GET['dia']) {
    switch ($dia_semana) {
       case "1":
          echo "i is apple";
       break;
       case "2":
          echo "i is bar";
       break;
       case "3":
          echo "i is cake";
       break;
   }
} else {
   switch ($_GET['dia']) {
      case "segunda":
          echo "i is apple";
      break;
      case "terca":
          echo "i is bar";
      break;
      case "quarta":
          echo "i is cake";
      break;
      // etc
   }
}
?>
 
Algo do genero...

PHP:
$dia_semana = date("w");
if(!isset($_GET['dia']) {
    switch ($dia_semana) {
       case "1":
          echo "i is apple";
       break;
       case "2":
          echo "i is bar";
       break;
       case "3":
          echo "i is cake";
       break;
   }
} else {
   switch ($_GET['dia']) {
      case "segunda":
          echo "i is apple";
      break;
      case "terca":
          echo "i is bar";
      break;
      case "quarta":
          echo "i is cake";
      break;
      // etc
   }
}
?>

Exprimentei agora e não deu :(
 
PHP:
<?
$dia_semana = date("w");
if(!isset($_GET['dia'])) {
    switch ($dia_semana) {
       case "1":
          echo "i is apple";
       break;
       case "2":
          echo "i is bar";
       break;
       case "3":
          echo "i is cake";
       break;
   }
} else {
   switch ($_GET['dia']) {
      case "segunda":
          echo "i is apple";
      break;
      case "terca":
          echo "i is bar";
      break;
      case "quarta":
          echo "i is cake";
      break;
      // etc
   }
}
?>

Pois, estive a ver e tinha-me esquecido de um parentesis. Corrigido! : P

Agora estive a testar e já está a funcionar:

http://webartdesign-eu.net/teste.php
Aparece "i is cake" porque hoje é quarta.

Se puseres
http://webartdesign-eu.net/teste.php?dia=quarta
Também aparece o mesmo

E se puseres
http://webartdesign-eu.net/teste.php?dia=terca
Aparece "i is bar"
 
é desnecessário usar dois cases diferentes para fazer a mesma coisa, quando podem fazer isto:

PHP:
$dia = isset($_GET['dia']) ? $_GET['dia'] : date("w");

switch ($dia) {
   case "domingo":
   case "0":
      //código para o domingo
      break;

   case "segunda":
   case "1":
      //código para segunda
      break;

//etc, etc
}

mas melhor ainda, porque é que o $_GET['dia'] tem que vir num formato (o dia por extenso), e o date() tem que vir noutro(o número do dia)?
não era muito mais simples e lógico dar o mesmo tipo de valores aos dois?

neste caso, podem usar valores numéricos de 0 a 6, ou então os dias por extenso, mas em inglês (porque é assim que eles são retornados do date() )

de qualquer das formas, tudo isto é mais lógico do que fazer dois swith diferentes para a mesma coisa
 
é desnecessário usar dois cases diferentes para fazer a mesma coisa, quando podem fazer isto:

PHP:
$dia = isset($_GET['dia']) ? $_GET['dia'] : date("w");

switch ($dia) {
   case "domingo":
   case "0":
      //código para o domingo
      break;

   case "segunda":
   case "1":
      //código para segunda
      break;

//etc, etc
}
mas melhor ainda, porque é que o $_GET['dia'] tem que vir num formato (o dia por extenso), e o date() tem que vir noutro(o número do dia)?
não era muito mais simples e lógico dar o mesmo tipo de valores aos dois?

neste caso, podem usar valores numéricos de 0 a 6, ou então os dias por extenso, mas em inglês (porque é assim que eles são retornados do date() )

de qualquer das formas, tudo isto é mais lógico do que fazer dois swith diferentes para a mesma coisa

Hey! Obrigado MPalhas! Funcionou perfeitamente!
 
Back
Topo