Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] zmieniajacy sie tekst co 3 sekundy
roghatt
post
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


Witam.
Ponizszy kod wyswietla mi losowy link z nazwa miasta

  1. <?php
  2. $wynik4= mysql_query ("SELECT * FROM miasto ORDER BY RAND() LIMIT 1");
  3. while($row=mysql_fetch_array($wynik4))
  4. {
  5.    $city=$row['miasto'];
  6.    echo "<a target=\"_blank\" href=\"http://www.";
  7.    echo $miasto;
  8.    echo ".domena.pl\">www.";
  9.    echo $city;
  10.    echo ".domena.pl</a>";
  11.  
  12. }
  13. ?>


jak zrobic aby np na stronie automatycznie co 3 sekundy pobieralo mi nowa nazwe z bazy. Po prostu zeby co 3 sekundy wyswietlal sie link do innego miasta.
albo inny sposob ze za jednym razem pobiore wszystkie nazwy z bazy i bede mial np wypisane jedno pod drugim, ale jak zrobic zeby pozniej losowo wyswietlal co 3 sekundy. Chodzi mi o samo wyswietlanie, taki automat.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Zainteresuj się AJAX-em. Najłatwiej skorzystać z gotowca typu jquery czy mintAjax, ale napisanie własnego też nie jest trudne - dobry kurs jest na Wikipedii

W sumie to jest też inna możliwość. Z bazy danych wyciągasz wszystkie dane(lub np. koło 100, zależy ile masz tych miast) i wrzucasz wszystko do tablicy, którą następnie przekazujesz do JS, a ta losuje co 3 sekundy odpowiednie miasto smile.gif

Ten post edytował kamil4u 24.04.2009, 13:27:22


--------------------
Go to the top of the page
+Quote Post
roghatt
post
Post #3





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


widze ze ogolnie mintajax mnie zainteresowal, ale takie szybkie pytanie...
przyklady sa np:
  1. <?php
  2. function OnLoad() {  
  3.    var tabs = mint.gui.CreateTabWidget("tabsContent");
  4.  
  5.    tabs.fading = true;
  6.    tabs.activeClass = "active";
  7.    tabs.hoverClass = "hover";
  8.  
  9.    tabs.AddItem("tab1", "tab1", "text", "tab1.html");
  10.    tabs.AddItem("tab2", "tab2", "text", "tab2.html");
  11.    tabs.AddItem("tab3", "tab3", "text", "tab3.html");
  12.  
  13.    mint.fx.Round("tabsContentOuter", "all", "small", true);
  14. }
  15. ?>


  1. <?php
  2. <div id="tab1"></div>
  3. <div id="tab2"></div>
  4. <div id="tab3"></div>
  5.  
  6. <div id="tabsContentOuter">
  7.    <div id="tabsContent"></div>
  8. </div>
  9. ?>


w ktorym miejscu umieszcza sie to pierwsze?
umieszcze nie
  1. <?php
  2. <script type="text/javascript" src="mintAjax.js"></script>
  3. ?>
to inna bajka i to dodatkowo, ale gdzie ten pierwszy kod sie umieszcza?
Go to the top of the page
+Quote Post
kamil4u
post
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


W znacznikach <script></script> w <head>? A samą funkcję wywołujesz w ... popatrz sobie w ich źródło bo nie wiem smile.gif

Ten post edytował kamil4u 24.04.2009, 14:18:48


--------------------
Go to the top of the page
+Quote Post
roghatt
post
Post #5





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


no wlasnie nie... tak robie i nic sie nie dzieje
czegos brakuje
Go to the top of the page
+Quote Post
piotrooo89
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




to też masz mieć w head. w znacznikach <script>.

  1. function OnLoad() {
  2. var tabs = mint.gui.CreateTabWidget("tabsContent");
  3.  
  4. tabs.fading = true;
  5. tabs.activeClass = "active";
  6. tabs.hoverClass = "hover";
  7.  
  8. tabs.AddItem("tab1", "tab1", "text", "tab1.html");
  9. tabs.AddItem("tab2", "tab2", "text", "tab2.html");
  10. tabs.AddItem("tab3", "tab3", "text", "tab3.html");
  11.  
  12. mint.fx.Round("tabsContentOuter", "all", "small", true);
  13. }


najlepiej pod deklaracją tego:

  1. <script type="text/javascript" src="mintAjax.js"></script>


--------------------
Go to the top of the page
+Quote Post
kamil4u
post
Post #7





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Dodaj zdarzenie load dla body:
Kod
<body onLoad="OnLoad();">


@UP: Ale funkcję należy jeszcze wywołać smile.gif

Ten post edytował kamil4u 24.04.2009, 14:33:14


--------------------
Go to the top of the page
+Quote Post
piotrooo89
post
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




~kamil4u chyba onload a nie onLoad.


--------------------
Go to the top of the page
+Quote Post
roghatt
post
Post #9





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


No to mam cos takiego

  1. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  2. <TITLE>title</TITLE>
  3. <script type="text/javascript" src="mintAjax.js">
  4. <script type="text/javascript">
  5. function OnLoad() {
  6. var tabs = mint.gui.CreateTabWidget("tabsContent");
  7.  
  8. tabs.fading = true;
  9. tabs.activeClass = "active";
  10. tabs.hoverClass = "hover";
  11.  
  12. tabs.AddItem("tab1", "tab1", "text", "tab1.html");
  13. tabs.AddItem("tab2", "tab2", "text", "tab2.html");
  14. tabs.AddItem("tab3", "tab3", "text", "tab3.html");
  15.  
  16. mint.fx.Round("tabsContentOuter", "all", "small", true);
  17. }
  18. </HEAD>
  19. <body onload="OnLoad()">
  20.  
  21. <div id="tab1"></div>
  22. <div id="tab2"></div>
  23. <div id="tab3"></div>
  24.  
  25. <div id="tabsContentOuter">
  26. <div id="tabsContent"></div>
  27. </div>
  28. </BODY>
  29. </HTML>


i wyswietla sie biala strona
plik index.html mam w tym samym katalogu co mintAjax.js
Go to the top of the page
+Quote Post
kamil4u
post
Post #10





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Jako atrybut HTML bez znaczenia. Jak deklarujemy zdarzenie np. tak:
Kod
referencja_do_elementu.onload = funkcja; //tu wielkość ma znaczenie (bez podtekstów)


Mówiłem wcześniej żebyś w źródło popatrzył: http://mintajax.pl/templates/mintajax/guide/widget_tabs.php

Ten post edytował kamil4u 24.04.2009, 14:40:56


--------------------
Go to the top of the page
+Quote Post
piotrooo89
post
Post #11


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




wystyluj to.

  1. <style type="text/css">
  2.  
  3. .tab {
  4. cursor: pointer;
  5. float: left;
  6. clear: none;
  7. width: 126px;
  8. height: 24px;
  9. line-height: 24px;
  10. color: White;
  11. text-align: center;
  12. margin: 0px 4px;
  13. background-image: url(img/tab.gif);
  14. }
  15.  
  16. .hover, .active {
  17. background-image: url(img/tab_hover.gif);
  18. }
  19.  
  20. .tabsContentOuter {
  21. width: 450px;
  22. height: 200px;
  23. border: 1px solid #68660B;
  24. float: left;
  25. clear: none;
  26. }
  27.  
  28. #tabsContent {
  29. padding: 2px 4px;
  30. }
  31.  
  32. </style>


i jeszcze pamiętaj ze w plikach tab1.html, tab2.html, tab3.html musisz coś mieć.


--------------------
Go to the top of the page
+Quote Post
roghatt
post
Post #12





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


no teraz juz dziala:) te style mnie zgubily, dzieki Wam za pomoc
Go to the top of the page
+Quote Post
Crozin
post
Post #13





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


To teraz wywal to, bo korzystanie tutaj z AJAXa to głupota. Niepotrzebnie katujesz serwer dziesiątkami, a wręcz tysiącami bezsensownych zapytań, które również obciążają bazę.

Pobierz odrazu ok. 50 rekordów (nie ma potrzeby większej ilości. Nic się nie stanie jak po 150 sekundach ogłoszenia zaczną się powtarzać. No chyba, że z założenia użytkownik będzie miał się gapić w "dodatkowy bajer" przez 2:30 minuty i tak przeglądać treść serwisu - ale wtedy to trzeba zmienić założenie :])

1) Pobierasz 50 rekordów i wyświetlasz je w formie JSowej tablicy dwuwymiarowej:
Kod
var data = new Array(
  new Array(12, "Treść", "http://link", "data"),
  new Array(12, "Treść", "http://link", "data"),
  new Array(12, "Treść", "http://link", "data"),
  new Array(12, "Treść", "http://link", "data"),
  itd.
);
W kodzie XHTML pamiętaj o tym by wyświetlić statycznie pierwszy rekord (tak by użytkownicy bez JS również widzieli jakąś treść (statyczną)).
  1. <p id="abc"><a href="http://link"><span>data</span> Treść</a></p>


I po stronie PHP to tyle. Teraz wystarczy napisać prosty skrypt JS, który:
1) Najpierw przy pomocy window.setInterval() będzie wykonywał co 3 sekundy jakąś funkcję
2) Funkcja ta przy pomocy element.removeChild(child) usunie całą treść elementu (element to referencja do p#abc, a child to referencja do p#abc > a)
3) Następnie przy pomocy document.createElement(), element.setAttribute() oraz element.appendChild() utworzy nowy link i wrzuci go w miejsce starego.

Roziwązanie dużo łatwiejsze oraz mniej pamięcio/czasożerne.
Go to the top of the page
+Quote Post
kamil4u
post
Post #14





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Nie żebym się czepiał, ale napisałem:
Cytat
W sumie to jest też inna możliwość. Z bazy danych wyciągasz wszystkie dane(lub np. koło 100, zależy ile masz tych miast) i wrzucasz wszystko do tablicy, którą następnie przekazujesz do JS, a ta losuje co 3 sekundy odpowiednie miasto smile.gif
(i w sumie to masz rację, że lepiej będzie nie męczyć serwera [tego już nie napisałem] smile.gif )

I pytanie o de mnie:
Cytat
2) Funkcja ta przy pomocy element.removeChild(child) usunie całą treść elementu (element to referencja do p#abc, a child to referencja do p#abc > a)
3) Następnie przy pomocy document.createElement(), element.setAttribute() oraz element.appendChild() utworzy nowy link i wrzuci go w miejsce starego.

IMO lepiej będzie jak będziemy zmieniać tylko parametry starego linku zamiast usuwać i tworzyć elementy co 3s. Nie uważasz?

Ten post edytował kamil4u 24.04.2009, 15:20:46


--------------------
Go to the top of the page
+Quote Post
Crozin
post
Post #15





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Racja - nie pomyślałem o tym winksmiley.jpg
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 Aktualny czas: 19.08.2025 - 06:32