Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: <marquee> i php
Forum PHP.pl > Forum > Po stronie przeglądarki > HTML \ XHTML
primo
Witam,


chciałbym zrobić sobie taki przepływający tekst, który najpierw wyświtlałby mi np. numery telefonów, następny news np. to co nowego pojawiło się w serwisie, a wszystko to poprzez tag <marque>, jednakże z wykorzystaniem php, w taki sposób aby każdy kolejny news byłby oddzielny i wyswietlany określoną liczbę razy. Przykładowo jak numery telefonów przelecą 8 razy, to zostanie wczytany drugi news, a pozniej nastepny i nastepny i znowu pierwszy...
z czego powinienem skorzystać questionmark.gif na co zwrócić uwagę questionmark.gif nakierujcie mnie troszkę proszę...


pozdrawiam


primo
Paul
jak chesz kontrolowac przez php ile razy to przelecialo jak to jest po stronie przegladarki... a po drugie w JS z tego co wiem nie ma konkretnie takiej opcji..

trzeba sobie radzic inaczej:

:arrow: 1. Umieszczasz to marquee w divie i przez JS zmieniasz zawartosc tego diva raz na jakis czas....

:arrow: 2. robisz to jako np. iframe i dajesz meta refresh i za kazdym refreshem bedzie ci sie zmieniac zmienna GET, na podstawie czego bedziesz wiedziec co juz przelecialo...
seaquest
temat raczej dotyczy js i html, wiec przenosze na XHTML, CSS i ECMAScript
primo
no ale jesli te pseudo newsy umiescilbym w bazie danych mysql to przeciez tez chyba jest jakis sposob przymusowego odswiezenia i umieszczenia nowego newsa pomiedzy znacznikami <marquee>

np:

$var = "Nowy numer telefonu 666666666";

[php:1:7d52eed069]<?php
echo <marquee> $var </marquee>
?>[/php:1:7d52eed069]

no a jesli zrobic to z pobraniem z bazy questionmark.gif czy nie tak mysle jak trzeba ?
eS...
[php:1:b8114d99af]<?php
$var = "Nowy numer telefonu 666666666";

echo "<marquee>". $var." </marquee>";


?>[/php:1:b8114d99af]
taki drobny szczegulik winksmiley.jpg
Paul
robisz tak:
[php:1:4509aaf349]<?php
// robisz tablice $zawartosc_marquee, nie wazne czy dane bierzessz z bazy czy z czego...
$ilosc_elementow = count($zawartosc_marquee)-1;
$ktory = $_GET['ktory'];
if(!(is_numeric($ktory) && $ktory >= 0 && $ktory <= $ilosc_elementow)){
$ktory = 0;
}
echo '<html>
<head>
<meta http-equiv="Refresh" content="10; URL=marquee.php?ktory='.($ktory+1).'>
</head>
<body>
<marquee>'.$zawartosc_marquee[$ktory].'</marquee>
</body>
</html>';
?>[/php:1:4509aaf349]
primo
no już nie chcę się czepiać "szczegółów"
pomyślmy nad konkretami
Paul
Cytat
no już nie chcę się czepiać "szczegółów"
pomyślmy nad konkretami

no bardziej konkretnie sie nie da... napisaem ci gotowca wystarczy go zrozumiec i zastosowac winksmiley.jpg

Dziala to na takiej zasadzie, ze odswieza strone co 10 sek (mozesz sobie zmienic) i za kazdym razem zwieksza wartosc zmiennej GET o 1, co powoduje zmienianie sie zawartosci marquee, ktora [zawartosc] jest tablica, a ta zmienna get poprostu wskazuje ktory jej element ma byc wyswietlony...

Prosciej nie umiem tego opisac smile.gif
primo
to wszystko rozumiem i jest ok, ale jeszcze pytanko do tablicy:
to w niej mam umieścić poszczególne newsy ? czyli mam zrobic zmienna
$zawartosc_marquee i do niej przypisac rozne newsy questionmark.gif
Paul
Cytat
ale jeszcze pytanko do tablicy:
to w niej mam umieścić poszczególne newsy

tak, np. w taki sposob:
[php:1:566d33b8b3]<?php
$zawartosc_marquee = explode('~~', 'news1~~news2~~news3~~news4');
?>[/php:1:566d33b8b3]
:arrow: poczytaj o [manual:566d33b8b3]explode[/manual:566d33b8b3]
primo
w tym miejscu podwójna tylda bedzie znakiem oddzialajacym poszczegolne newsy i news bedzie czytany od znaku poczatku do znaku tyldy questionmark.gif wszystko rozumiem tak jak nalezy questionmark.gif wiec biore sie za dokanczanie
Paul
jaknajbardziej dobrze rozumiesz smile.gif
primo
[php:1:22fbe5c3ed]<?php
$news = "Teraz można rezerwować filmy telefonicznie. Nowy numer telefonu to <b>649-23-73</b>";
$news2 = "Nowości już na półkach: Ostatni samuraj";
$news3 = "Otwarcie nowego punktu";
$zawartosc_marquee = "$news~~.$news2~~.$news3";
$zawartosc_marquee = explode("~~", "$zawartosc_marquee");
$ilosc_elementow = count($zawartosc_marquee)-1;
$ktory = $_GET['ktory'];
if(!(is_numeric($ktory) && $ktory >= 0 && $ktory <= $ilosc_elementow)){
$ktory = 0;
}
echo '<html>
<head>
<meta http-equiv="Refresh" content="10; URL=marquee.php?ktory='.($ktory+1).'>
</head>
<body>
<marquee>'.$zawartosc_marquee[$ktory].'</marquee>
</body>
</html>';
?>[/php:1:22fbe5c3ed]

wszystko działa ale mały mankament: mianowicie wczytuje tylko i wyłącznie pierwszy news, nastepnie robi refresh i zas wczytuje pierwszy news, co w tym jest nie tak??
wojtek
Sprobuj tak:

[php:1:9881c5a85f]<?php
$ktory = (int) $_GET['ktory'];

$news = array();
$news[] = "Teraz można rezerwować filmy telefonicznie. Nowy numer telefonu to <b>649-23-73</b>";
$news[] = "Nowości już na półkach: Ostatni samuraj";
$news[] = "Otwarcie nowego punktu";

if (empty($news[$ktory])) {$ktory=0;}

echo '<html>
<head>
<meta http-equiv="Refresh" content="10; URL=marquee.php?ktory='.($ktory+1).'">
</head>
<body>
<marquee>'.$news[$ktory].'</marquee>
</body>
</html>';
?>[/php:1:9881c5a85f]
Paul
Oto działajacy, testowany kod:
[php:1:0ebd880edd]<?php
$zawartosc_marquee = "Teraz można rezerwować filmy telefonicznie. Nowy numer telefonu to
<b>649-23-73</b>~~Nowości już na półkach: Ostatni samuraj~~Otwarcie nowego punktu";
$zawartosc_marquee = explode("~~", $zawartosc_marquee);
$ilosc_elementow = count($zawartosc_marquee)-1;
$ktory = $_GET['ktory'];
if(!(is_numeric($ktory) && $ktory >= 0 && $ktory <= $ilosc_elementow)){
$ktory = 0;
}
echo '<html>
<head>
<meta http-equiv="Refresh" content="5; URL=marquee.php?ktory='.($ktory+1).'">
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
</head>
<body>
<marquee>'.$zawartosc_marquee[$ktory].'</marquee>
</body>
</html>';
?>[/php:1:0ebd880edd]
primo
wielkie dzię ki za pomoc, looknicie jak to działa... ze strony czysto technicznej tego skryptu to wszystko jest git, ale nie pomyslałem o małym mankamencie http://divideo.com.pl/ mianowicie jak przykladowo przegladam zakladki nowosci to skrypt robi refresh i ponownie wraca do strony glownej czyli ustawionej w naglowku idex.php, jak zrobic cos takiego inteligentnego, aby on (skrypt) wiedzial ze ma tylko odswiezac ta tablice a nie cala strone i nie powracac do glownej questionmark.gif

pozdrawiam
Paul
Proponuje zrobic ten caly pasek z ostatniej chwili jako ramke. Przy zmienianu podstron bedzie sie zmieniac tylko ta druga ramka.... Teraz to nie jest najlepsze rozwiazanie bo sie to odswieza co chwile...

to bedzie cos w tym stylu:
[xml:1:cb0afc7c34]
<frameset frameborder="0" framespacing="0" rows="20,*">
<frame name="z_ostatniej" src="marquee.php">
<frame name="text" src="text.php">
</frameset>
[/xml:1:cb0afc7c34]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.