Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP]Zmienna wartość odnośnika
playdewu
post
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 12.07.2013

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


Cześć.
Mam odnośnik do którego chciałbym ustawić zmienną wartość tak, aby linki zmieniały się co dzień.
Da się w jakiś sposób zlistować kilka linków i zrobić tak aby kolejno z listy z upływem dnia były nadawane odnośnikowi?

Dla przykładu, mamy takie zdjątko z odnośnikiem:
(IMG:http://zt-mta.pl/images/webshop/KT.png)
Dziś wartość wynosi http://forum.php.pl/, a jutro dajmy na to będzie http://google.pl, pojutrze http://wp.pl i tak dalej..

Ten post edytował playdewu 24.08.2014, 10:04:31
Go to the top of the page
+Quote Post
Michael2318
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Jasne, że się da. Musisz tylko gdzieś przechowywać obecny dzień (w bazie lub w pliku .txt).

  1. $tablica = array(
  2. 0 => 'http://forum.php.pl',
  3. 1 = > 'http://google.pl',
  4. 2 => 'http://wp.pl'
  5. );
  6.  
  7. $day = $row['last_day']; // w tej zmiennej zakładam, że masz ostatni numer dnia tygodnia, zgodny z funkcją date(), czyli 0 (dla Niedzieli) aż do 6 (dla Soboty).
  8. if ( $day !== date("w", time()) )
  9. {
  10. echo 'Dzisiejszy link: <a href="'.$tablica[(date("w", time()))].'">CLICK</a>';
  11. $sql = "update ..."; // tutaj aktualizujesz tą zmienną $day, na obecny dzień, pobierasz ją z tej funkcji: date("w", time())
  12. }


Jeśli wolisz to przechowywać w pliku .txt to zmienna $day powinna wyglądać tak:

  1. $day = file_get_contents('plik.txt'); // w nim ma się znajdować tylko i wyłącznie liczbowa forma dnia tygodnia


z kolei aktualizacja tej zmiennej powinna wyglądać tak:

  1. if ( file_put_contents('plik.txt', date("w", time())) !== FALSE )
  2. {
  3. echo 'Sukces, zaktualizowano!';
  4. }


Zwróć też uwagę na $tablica - indeksy odpowiadają poszczególnym dniom tygodnia, indeks 0 - Niedziela, 1 - Poniedziałek itd.

Ten post edytował Michael2318 24.08.2014, 10:49:51
Go to the top of the page
+Quote Post
golabow
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 17
Dołączył: 4.07.2014

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


Najlepiej użyć crona, który będzie co dobę uruchamiał skrypt ze zmianą linku.
Natomiast jeżeli nie ma takiej możliwości to można przechowywać w bazie danych lub pliku startowy czas i ostatni użyty link. Przy uruchomieniu skryptu sprawdzać czy nie minęła doba, jeżeli tak to zmieniamy atrybut linku i aktualizujemy dane zewnętrzne.

Napisałem na szybko taki przykład:

  1. <?php
  2.  
  3. $tablicaLinkow = array( 'http://forum.php.pl/', 'http://google.pl', 'http://wp.pl' ); // tablica linkow
  4.  
  5. $db = connectDB(); // tutaj twoja funkcja do polączenia z baza
  6. $q = $db->query( 'SELECT * FROM tabelaCzas LIMIT 1' ); // pobieram pierwszy rekord
  7.  
  8. if ( !$q->num_rows ) // jezeli pusta tablica
  9. {
  10. $time = getdate();
  11. $time = $time[0];
  12. $db->query( "INSERT INTO tabelaCzas VALUES( $time, 0 )" ); // aktualny czas i numer pierwszego elementu tablicy;
  13. }
  14. else // mamy rekord
  15. {
  16. $row = $q->fetch_assoc();
  17. $lastTime = $row['lastTime']; // lastTime to nazwa pola w tabeli
  18. $lastIndex = $row['lastIndex'];
  19.  
  20. $aTime = getdate(); // aktualny czas
  21. $aTime = $aTime[0];
  22. if ( $aTime - $lastTime >= ( 24 * 60 * 60 ) )
  23. {
  24. $aIndex = ( $lastIndex + 1 ) % count( $tablicaLinkow );
  25. $db->query( "UPDATE tabelaCzas SET lastTime=$aTime, lastIndex=$aIndex WHERE lastTime=$lastTime" ); // aktualizacja danych w bazie
  26. }
  27. }
  28.  
  29. ?>


Następnie wystarczy generować link na podstawie aktualnego indeksu w bazie czy pliku.

Ten post edytował golabow 24.08.2014, 10:53:34
Go to the top of the page
+Quote Post
playdewu
post
Post #4





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 12.07.2013

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


Kod Michael2318 działa, ale jest to rozwiązanie dobre na 7 linków (7 dni tygodnia) jeśli dobrze zrozumiałem, ja potrzebuję nieograniczonej ilości linków.
Kod golabow:
Kod
Fatal error: Call to undefined function connectDB() in /home/dewu/domains/zt-mta.pl/public_html/count.php on line 6


Ten post edytował playdewu 24.08.2014, 13:10:37
Go to the top of the page
+Quote Post
by_ikar
post
Post #5





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


  1. <?php
  2.  
  3. $links = array(
  4. 'http://planeta.php.pl/',
  5. 'http://forum.php.pl/',
  6. 'http://phpedia.pl/',
  7. 'http://wortal.php.pl/',
  8. 'http://test.php.pl/',
  9. 'http://php.net/',
  10. 'http://www.mysql.com/',
  11. 'https://github.com/',
  12. 'https://gist.github.com/',
  13. 'http://jsfiddle.net/',
  14. 'http://www.regexr.com/',
  15. 'http://stackoverflow.com',
  16. 'http://httpd.apache.org/',
  17. 'http://nginx.org/',
  18. 'http://www.mongodb.org/',
  19. 'http://redis.io/',
  20. 'http://nodejs.org/',
  21. 'https://packagist.org/',
  22. 'https://www.npmjs.org/',
  23. 'http://getbootstrap.com/',
  24. 'http://jquery.com/',
  25. 'https://code.google.com/',
  26. 'http://symfony.com/',
  27. 'http://laravel.com/',
  28. 'http://framework.zend.com/',
  29. 'http://xcache.lighttpd.net/',
  30. 'http://www.php-fig.org/psr/',
  31. 'https://www.google.pl/',
  32. 'https://www.facebook.com/',
  33. 'http://feedly.com/',
  34. 'https://www.dropbox.com/',
  35. );
  36.  
  37. echo '<a href="'.$links[date('j')-1].'">link</a>';


Edit: a jak chcesz trochę więcej niż 31, no to możesz użyć zamiast date('j') (dzień miesiąca), dzień roku date('z'). Wtedy będziesz mógł w takiej tablicy mieć 365 linków (366 w roku przystępnym).

Ten post edytował by_ikar 24.08.2014, 13:17:46
Go to the top of the page
+Quote Post
Michael2318
post
Post #6





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Dokładnie tak jak poprzednik napisał,a co do pytania odnośnie kodu glowabow, to chodziło mu o skrypt, dzięki któremu łączysz się z bazą danych po prostu.
Go to the top of the page
+Quote Post
golabow
post
Post #7





Grupa: Zarejestrowani
Postów: 53
Pomógł: 17
Dołączył: 4.07.2014

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


Akurat chodziło mi o twoją własną funkcje do łączenia się z bazą danych, ale również można to zapisać przy użyciu funkcji mysqli_connect().
Dodałem też jak wygląda stworzenie linka.

  1. <?php
  2.  
  3. $tablicaLinkow = array( 'http://forum.php.pl/', 'http://google.pl', 'http://wp.pl' ); // tablica linkow
  4.  
  5. $db = mysqli_connect( 'localhost', 'twojLogin', 'twojeHaslo', 'twojaBazaDanych' ); // tutaj twoja funkcja do polączenia z baza
  6. $q = $db->query( 'SELECT * FROM tabelaCzas LIMIT 1' ); // pobieram pierwszy rekord
  7. $klucz = 0; // domyslnie jest to pierwszy link
  8.  
  9. if ( !$q->num_rows ) // jezeli pusta tablica
  10. {
  11. $time = getdate();
  12. $time = $time[0];
  13. $db->query( "INSERT INTO tabelaCzas VALUES( $time, 0 )" ); // aktualny czas i numer pierwszego elementu tablicy;
  14. }
  15. else // mamy rekord
  16. {
  17. $row = $q->fetch_assoc();
  18. $lastTime = $row['lastTime']; // lastTime to nazwa pola w tabeli
  19. $lastIndex = $row['lastIndex'];
  20.  
  21. $aTime = getdate(); // aktualny czas
  22. $aTime = $aTime[0];
  23. if ( $aTime - $lastTime >= ( 24 * 60 * 60 ) )
  24. {
  25. $aIndex = ( $lastIndex + 1 ) % count( $tablicaLinkow );
  26. $db->query( "UPDATE tabelaCzas SET lastTime=$aTime, lastIndex=$aIndex WHERE lastTime=$lastTime" ); // aktualizacja danych w bazie
  27. $klucz = $aIndex; // ustawiam nowy element tablicy
  28. }
  29. }
  30.  
  31. echo "<a href=' {$tablicaLinkow[ $klucz ]} '> Link </a>"; // generuje link
  32.  
  33. ?>


Tablice wykorzystywaną w przykładzie możesz utworzyć poleceniem:
  1. CREATE TABLE tabelaCzas( lastTime int NOT NULL, lastIndex int NOT NULL);
Go to the top of the page
+Quote Post
playdewu
post
Post #8





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 12.07.2013

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


Dziękuję wszystkim za pomoc (IMG:style_emoticons/default/wink.gif) Jeszcze jedno pytanko, w prawdzie nie związane z tematem ale nowego zakładać nie ma sensu, bo pytanie jest banalne.
Mam sobie taki link:
  1. <a href="" id="loading-link" TARGET="_blank">
który po kliknięciu otwiera nową kartę i przenosi nas do niej. Chciałbym żeby po kliknięciu w link otwierała się ta strona w nowej karcie, ale byśmy nadal zostawali w tej pierwotnej (tak jak jest po kliknięciu kółkiem myszy w odnośnik), czego użyć? (IMG:style_emoticons/default/smile.gif)

Ten post edytował playdewu 24.08.2014, 14:04:16
Go to the top of the page
+Quote Post
Michael2318
post
Post #9





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Kod
<a href="http://onet.pl" target="_blank">Odnośnik</a>


o to chodziło?
Go to the top of the page
+Quote Post
by_ikar
post
Post #10





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Chodzi mu o otwarcie nowej strony w tle (jak się kliknie rolką myszki taki sam efekt jest). Niestety za pomocą html tego nie zrobisz i musiałbyś użyć do tego java script: http://jsfiddle.net/3ZmvS/5/ coś takiego na szybko znalazłem co symuluje użycie właśnie rolki do otwarcia linku w tle.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.12.2025 - 05:57