Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dany tekst o danej godzine każdego dnia tygodnia
WyPaLaCz
post 5.02.2004, 00:51:54
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.02.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam

Potrzebuję skryptu i prosilbym Was drodzy użytkownicy o pomoc. Skrypt ma wyglądac mniej wiecej tak:

W poniedzialek w godzinach od 0.00 do 18.00 wyswietlany byłby tekst1, następnie od 18.01 do 19.59 tekst2 itd, następnie we wtorek znowu od 0.00 do 18.00 chcialbym aby się wyswietlał, ale tym razem już zupełnie inny tekst3 a od 18.00 do 19.59 tekst4 itd. analogicznie, aż do niedzieli...

Byłbym bardzo wdzieczny za pomoc, w dostarczeniu mi takiego skryptu. Z góry dziękuje, Adrian.
?>[/php]
Go to the top of the page
+Quote Post
Bakus
post 5.02.2004, 01:41:57
Post #2


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


[php:1:a2bc08ad85]<?
function pokaz_tekst($start, $stop, $tekst)
{
$uts = time();
if($start < $uts && $stop > $uts)
print $tekst;
}

pokaz_tekst(1075941780, 1095941820, "Tekst");

/*
Wyjaśnienie:
W przypadku, gdy chcesz by napis pojawiał się pomiędzy dniem 5 lutego 2004 i godziną 01:43:00 a dniem 23 września 2004 i godziną 14:17:00, to wykorzystujesz powyższy przykład...

Jak to działa?
A no mianowicie:
Funkcja time() zwraca czas unix'a (po opis zapraszam do googli i dokumentacji php). Na tej podstawie funkcja srawdza, czy ten moment mieści się w ramach czasowych wskazanych w parametrach funkcji.
Jak generować taki znacznik czasu?
mktime ("godziny", "minuty", "sekundy", "miesiące", "dni", "lata")
w takim układzie by znaleść w/w daty wykonałem mały skrypcik:
*/
print mktime (1, 43, 0, 2, 5, 2004) . "<BR>n";
print mktime (14, 17, 0, 23, 9, 2004) . "<BR>n";
/*
Proste?

Aaaa... dla całkowitej jasności... wykonaj sobie:
*/
date("d.m.Y H:i:s", 1095941820);
/*
i popatrz na wynik...
Drugi parametr funkcji date to opcjonalny znacznik czasu z którego będzie generowana data...
*/
?>[/php:1:a2bc08ad85]
Sorki, że wszystko w znaczniku php, ale tak wygląda czytelniej w brew pozorom...


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
WyPaLaCz
post 6.02.2004, 13:05:21
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.02.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Dzięki, ale nie dokładnie o to mi chodziło, bo tam jest konkretne i musialbym napisac skrypt na cały rok... a mi chodzi, że teksty mają wyswietlać na stronie radia internetowego - kto teraz gra.

Ja się ucze dopiero i nie potrafię czegoś takiego sam napisać, chodzi iż w nocy leci muzyka to, zeby tekst wyświetlał się "Tylko muzyka" a od 18 w poniedziałek gra DJ1, to żeby o 18 skrypt pokazał tekst "Gra DJ1" a od 20 dj2 czyli "Gra DJ2" a we wtorek już dj3... I chcialbym napisac taki tygodniowy skrypt powtarzający się tak samo każdego tygodnia...
Go to the top of the page
+Quote Post
rzseattle
post 6.02.2004, 14:56:48
Post #4





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Stworz sobie tablice o stroktoze:
[php:1:e5e7700dc9]<?php
$plan[0][00] = 'Gra muzyka';
//..
$plan[6][24] = 'Gra dj Hela';
?>[/php:1:e5e7700dc9]

gdzie pierwszy element tablicy to dzien tygodnia (niedziela - 0, sobota -6 ) a drugi to godzina:
$plan[dzien_tygodnia][godzina]

no i funkcja to nic prostszego

[php:1:e5e7700dc9]<?php
function plan ( $arr ){
$curr_id = $arr[date("w")];
$curr_id = array_reverse($curr_id);
foreach($curr_id as $godzina => $plan){
if($godzina<=date("G")){
return $plan;
}
}
}

//wywolanie
print plan($plan);
?>[/php:1:e5e7700dc9]

ps Niedawno podalem podobny skrypt do wyswietlania imienin, wiec na przyszlosc uzywaj http://php.pl/search.php


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
DeyV
post 6.02.2004, 15:05:05
Post #5





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




można też tak. Z wykorzystaniem OOP, i możliwością podawania minut.
Podstaowowa różnica to to, ze podaje się nie godziny, a przedziały czasowe
[php:1:79442da677]<?php

/**
*@data 2004-02-06
*@autor DeyV
*/
class ogloszenia
{
var $arrLista = array();


/**
* wyświetla pasujące wpisy
* @param booean Czy przerywać po 1 wpisie
*/
function drukuj( $booOnlyOne=FALSE )
{
$intNow = $this->prepareData( $this->getData() );
$arrWynik = array();
if( empty( $this->arrLista ) )
{
return;
}
foreach( $this->arrLista as $arrWiersz )
{
if( $arrWiersz[0] <= $intNow and $arrWiersz[1] >= $intNow )
{
$arrWynik[] = $arrWiersz[2];
if( $booOnlyOne )
{
break;
}
}
}

if( !empty( $arrWynik ) )
{
echo 'Dziś: '. implode( ', ', $arrWynik );
}
}



/**
* @param string data w formacie 1.16.35 (dzień tygodnia, godzina, minuty )
* @param string data w formacie 1.16.35 (dzień tygodnia, godzina, minuty )
*/
function addWpis( $data1, $data2, $text )
{
$this->arrLista[] = array(
$this->prepareData( $data1 ),
$this->prepareData( $data2 ),
$text
);

}

/**
* aktualna data w postaci 1.16.35 (dzień tygodnia, godzina, minuty )
* @return string
*/
function getData( )
{
return date( 'w.G.i' );
}


/**
* zwraca date w minutach od początku tygodnia, czyli poniedziałku, godzina 00:00
* @param string data w formacie 1.16.35 (dzień tygodnia, godzina, minuty )
* @return int
*/
function prepareData( $strData )
{
$arrTmp = explode( '.', $strData );
if( $arrTmp[0]==0)
{
$arrTmp[0] = 7;
}

$intData = $arrTmp[2] + 60*$arrTmp[1] + 60*24*($arrTmp[0]) ;
return $intData;
}
}


$objOgloszenia = new ogloszenia;

$objOgloszenia -> addWpis( '5.14.48', '5.15.40', 'piątek, pomiedzy 14.48 a 15.40 ' );
$objOgloszenia -> addWpis( '5.14.48', '5.15.03', 'piątek, pomiedzy 14.48 a 15.03 ' );

$objOgloszenia -> addWpis( '5.14.40', '5.14.45', 'piątek, pomiedzy 14.40 a 14.45 ' );

$objOgloszenia ->drukuj();
?>[/php:1:79442da677]


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
WyPaLaCz
post 10.02.2004, 01:31:17
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.02.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Nie było mnie tutaj wcześniej - dzięki wielkie za pomoc, skrypcik działa OK. Pozdrawiam, punkcik za pomoc przyznany...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:50