Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Napisy wyświetlane w czasie
Forum PHP.pl > Forum > Po stronie przeglądarki
Tho
Wiadomo jak wygląda plik z napisami do filmów: jest czas i obok tego tekst jaki się wyświetla, jak zrobić coś takiego na stronie? Nie chcę odtwarzacza filmów! Tylko jakby odtwarzacz napisów, który w danej sekundzie wyświetli dany napis, po wciśnięciu play.

Przyda się w tym celu pewnie coś z JavaScript, ale co jeszcze? Jak zrobić by to było LEKKIE?
buliq
Przyda się sam JS smile.gif W php wygenerujesz json z napisów ale tablicę js jak ci wygodniej. Po wciśnięciu play będziesz co sekundę zwiększał zmienną czas i porównywał czy pokazać już nowe napisy smile.gif Tyle smile.gif
Fifi209
Nie zapominaj, że tam jest czas od-do kiedy mają się wyświetlać napisy, to również musisz zabrać pod uwagę.

Napisz może do czego jest Ci to potrzebne, to będzie można podać więcej pomysłów.
Tho
W zasadzie zbyt dużo mi nie wyjaśniliście(nic!) wink.gif Aczkolwiek dzięki za przynajmniej próbę pomocy.

Pytacie do czego to ma służyć - ma to być pokaz slajdów uruchamiany przyciskiem play wraz z napisami, podpisem do każdego obrazka, ale nie chce by było to jako obrazek+napis i wyświetlane co jakiś czas, a zorganizowane w czasie, czas=obrazek+napis, mam określać sam ile dany slajd(napis+obrazek/obrazki - jeden podpis dla kilku obrazków z kolei).

Jak to zacząć by móc później wymanewrować z tego w coś większego, a złym zaczęciem nie zepsuć sobie perspektyw?
buliq
To może podpowiem tak:

[JAVASCRIPT] pobierz, plaintext
  1. var napisy = new Array();
  2.  
  3. //przypisujesz tablicy elementy w formie:
  4. // napisy[kiedy_wyswietlic] = napis;
  5. ...
  6. var time =0;
  7. $("#play").click(function() {
  8. setInterval(function() {
  9.  
  10. if (napisy[time]!==null)
  11. $("#napis").html(napisy[time]);
  12.  
  13. time++;
  14. },1000);
  15. });
  16.  
[JAVASCRIPT] pobierz, plaintext


I to by było na tyle. Prościej się nie da.
Tho
Sorry, ale piszecie tak wprost jak bym był programistą smile.gif

Jaką tablicę pod to podpiąć i jak to zrobić?

Co robi w kodzie powyżej ".html", mam utworzyć jakiś plik html? Co w nim umieścić.

Chciałbym by wszystkie teksty tych pokazów, były poukładane w bazie danych, tak samo jak obrazki im odpowiadające.

Czy skorzystać może z jakiegoś już stworzonego skryptu pokazu slajdów?
buliq
Oj widzę że będzie ciężko sad.gif

Więc tak. Musisz się zdecydować albo odtwarzasz z plików .txt .srt itp. albo odtwarzasz z bazy danych. Przypadek pierwszy:

  1. $dane = file($nazwa_pliku);
  2. foreach($dane as $line) {
  3. //nie wiem jaki format pliku z napisami jest więc musisz poniżej zmienić
  4. $data = explode(";",$line);
  5. $text = $data[3];
  6. $time = $data[0];
  7. echo 'napisy['.$time.'] = "'.$text.'";';


i to wstawiasz w 5 lini powyższego kodu.

Sposób na baze danych jest taks samo tylko że zamiast tworzenia tablicy pliku pobierasz te dane z bazy danych. Wszystko wstawiasz w pliku *.php smile.gif
Tho
Cytat(buliq @ 4.08.2011, 14:27:22 ) *
Oj widzę że będzie ciężko sad.gif

Nie wspominałem? smile.gif

Czy aby nie ma błędu w tym kodzie php, bo gdy go dodaje, wyświetla w moim edytorze kodu błąd(już po dodaniu "?>" oczywiście).

Mam to połączyć z tym js powyżej? Czy jest to osobny skrypt?

Dzięki za wyrozumiałość. wink.gif
buliq
Cytat(buliq @ 4.08.2011, 14:27:22 ) *
i to wstawiasz w 5 lini powyższego kodu.



Oczywiście ze jest błąd smile.gif Nie znalazłeś go ?sad.gif nie ma klamry na końcu dla foreach sad.gif
Tho
Znalazłem, ale teraz widzę że robisz to specjalnie i mi strzelasz z ucha dla zabawy... Ale pewnie Ty sam się nauczyłeś wszystkiego, bez niczyjej pomocy... Czy mógłby ktoś dodać przynajmniej do tego jakieś komentarze, kompletnie tego nie łapię i prawdopodobnie tego całego php się nie naucze nigdy.
buliq
Forum jest aby pomagać innym a nie robić tego za nich sad.gif Taki problem jak brak klamry powinien być łatwy do wyłapania. Najpierw powinieneś zaopatrzyć się w wiedzę podstawową na ten temat i dopiero pisać coś w ten deseń. A ja sam się nie uczyłem, miałem od tego google i poradniki smile.gif

  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  5. <meta name="Description" content=" [wstaw tu opis strony] " />
  6. <meta name="Keywords" content=" [wstaw tu slowa kluczowe] " />
  7.  
  8. <title> [tytuł strony] </title>
  9.  
  10. <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
  11. <script type="text/javascript">
  12. $(document).ready(function() {
  13. var napisy = new Array(); //definicja tablicy
  14. <?php
  15. $dane = file("xxx.txt"); // do tablicy array w php wrzucasz wszystkie linie z pliku
  16. foreach($dane as $line) { // iteracja tablicy po liniach pliku
  17. //nie wiem jaki format pliku z napisami jest więc musisz poniżej zmienić
  18. $data = explode(";",$line); // podzielenie ciągu znaków na tablicę, jako separator użyto ;
  19. $text = $data[3]; // 4 element to tekst
  20. $time = $data[0]; // 1 element to czas
  21. echo 'napisy['.$time.'] = "'.$text.'";'; //przypisanie do js
  22. }
  23. ?>
  24. var time =0; // znacznik czasowy
  25. $("#play").click(function() { // jak wciśniemy cos o id="play"
  26. setInterval(function() { // uruchom co 1000 sekund ten kod
  27. if (napisy[time]!==null) // jeżeli w tablicy jest napis z aktualnym czasem
  28. $("#napis").html(napisy[time]); // to przypisz go elementowi o id="napis"
  29. time++; // zwiększ czas o 1
  30. },1000);
  31. return false;
  32. });
  33. });
  34. </script>
  35. </head>
  36. <a href="#" id="play">Play</a>
  37. <div id="napis"></div>
  38.  
  39.  
  40. </body>
  41. </html>


1 plik
Tho
Dzięki, ale powiesz mi co robi tam:

Cytat
$("#napis").html(napisy[time]);


?

I gdzie wpisać w jakiej sekundzie i co ma się wyświetlać? Sorry, ale najważniejszego nie napisałeś smile.gif 2 plusy już są, czy będzie 3-ci? smile.gif
buliq
To nie dla plusów robię tongue.gif

ten fragment wpisuje do div id="napis" tekst z tablicy napisy.
Natomiast tablica napisy zbudowana jest tak:
napisy[czas_w_ktorym_wyswietlc] = "tekst do wyswietlenia";
Tho
Czy aby napewno tam nic nie brakuję, żeby nie było główkowałem z godzinę, czy znów mnie nie podpuszczasz, czy "zmuszasz do myślenia".

Nie wierze już że ten skrypt działa, albo mój hosting jest do dupy, albo błąd jest całkiem gdzie indziej. Czy mógłbyś to gdzieś zauploadować bym miał dowód że to na pewno działa, wtedy już sam poszukam błędu. wink.gif

Jeszcze raz wielkie dzięki.
buliq
To niestety krótko główkowałeś sad.gif. I tutaj były błędy.

Oto kod:

  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  4. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  5. <meta name="Description" content=" [wstaw tu opis strony] " />
  6. <meta name="Keywords" content=" [wstaw tu slowa kluczowe] " />
  7.  
  8. <title> [tytuł strony] </title>
  9.  
  10. <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
  11. <script type="text/javascript">
  12. $(document).ready(function() {
  13. var napisy = new Array(); //definicja tablicy
  14. var stopOn = 0;
  15. <?php
  16. $dane = file("film.txt"); // do tablicy array w php wrzucasz wszystkie linie z pliku
  17. foreach($dane as $line) { // iteracja tablicy po liniach pliku
  18. //nie wiem jaki format pliku z napisami jest więc musisz poniżej zmienić
  19. $data = explode(";",$line); // podzielenie ciągu znaków na tablicę, jako separator użyto ;
  20. $text = $data[3]; // 4 element to tekst
  21. $time = $data[0]; // 1 element to czas
  22. echo "napisy[".$time."] = \"".trim($text)."\";\r\n"; //przypisanie do js
  23. }
  24. $stop = $dane[count($dane)-1];
  25. $stop = explode(";",$stop);
  26. echo "stopOn = ".$stop[0].";\r\n";
  27. ?>
  28.  
  29. var time = 0; // znacznik czasowy
  30. $("#play").click(function() { // jak wciśniemy cos o id="play"
  31. var inter = setInterval(function() { // uruchom co 1000 sekund ten kod
  32. if (time==stopOn) clearInterval(inter);
  33. if (napisy[time]!==null) // jeżeli w tablicy jest napis z aktualnym czasem
  34. $("#napis").html(napisy[time]); // to przypisz go elementowi o id="napis"
  35. $("#time").html("Czas: "+time); //jaki aktualnie czas
  36.  
  37. time++; // zwiększ czas o 1
  38. },1000);
  39. return false;
  40. });
  41. });
  42. </script>
  43. </head>
  44. <a href="#" id="play">Play</a>
  45. <div id="napis"></div>
  46. <div id="time"></div>
  47.  
  48.  
  49. </body>
  50. </html>


oto adres: http://buliq.pl/lal.php#
oto plik tekstowy: http://buliq.pl/film.txt
Tho
Wielkie dzięki!

Postanowiłem sam się pobawić, znalazłem i przerobiłem znaleziony formularz:

Kod
<form action="subtitles.php" method="post">
słowa:<br />
<input type="text" name="lyrics" /><br />
<input type="submit" value="dodaj" />
</form>

<?php
// odbieramy dane z formularza
$lyrics = ($_POST['lyrics']);

if($lyrics) {
    
    // łączymy się z bazą danych
    $connection = @mysql_connect('localhost', 'root', '')
    or die('Brak połączenia z serwerem MySQL');
    $db = @mysql_select_db('vd', $connection)
    or die('Nie mogę połączyć się z bazą danych');
    
    // dodajemy rekord do bazy
    $ins = @mysql_query("INSERT INTO subtitles SET lyrics='$lyrics'");
    
    if($ins) echo "Rekord został dodany poprawnie";
    else echo "Błąd nie udało się dodać nowego rekordu";
    
    mysql_close($connection);
}

?>


Przy pierwszym odświeżeniu pokazuje mi:

Notice: Undefined index: lyrics in:

Kod
$lyrics = ($_POST['lyrics']);


Gdzie tu błąd?

Gdy jednak dodam jakieś proste litery i odświeze, ostrzeżenia już nie ma, ale muszę dodawać proste znaki(bez np angielskich "He's" itd).

Pokazuje : "Błąd nie udało się dodać nowego rekordu". Gdy dodaje to samo przyz phpma:

Kod
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'm scared
3' at line 1


Jak zrobić by znak ' nie rozwalał zapytania a był poprostu częścią tekstu?

Jeszcze raz wielkie dzięki za pomoc!
buliq
E_NOTICE: Undefined index - Niezdefiniowany indeks tablicy (tutaj $_POST). Sprawdzaj czy jest coś w tej tablicy za pomocą empty lub isset

Co do drugiego: strip_tags, addslashes
Tho
Siedzę z godzinę, już mało nerwicy nie dostałem, aż w końcu widzę że błąd przestał się pokazywać po zmianie w taki sposób:

Kod
$lyrics = $_POST;
$_POST['lyrics'] = $lyrics;


Choć nie wiem czy to jest poprawnie i co to robi, bo chyba nic, musi to być zrobione tylko dla świętego spokoju chyba, tak? Ważne że błędu nie ma... biggrin.gif

Chociaż nie całkiem, teraz patrzę a nowo dodane rekordy do bazy to:

Kod
Array
            21    Array
            22    Array
            23    Array
            24    Array
            25    Array
            26    Array
            27    Array
            28    Array
            29    Array
            30    Array
            31    Array
            32    Array
            33    Array


? sciana.gif
buliq
Ajajajajaj jak ty namieszałeś sad.gif Wskazałem wyraźnie funkcję empty smile.gif i isset. A twoim zadaniem było przyjrzenie się manualowi i wykonaniu jednego if'a smile.gif

Obecnie dla $lyrics przypisujesz calą zawartość $_POST po czym zawartość tą wrzucasz do $_POST['lyrics'] ... to samo jak byś zrobił to: $_POST['lyrics']=$_POST co nie ma kompletnie sensu. I jest zbędne.
Tho
Dobra, dzięki, nie zrobiłem tego i nie mam już do tego siły.

Spytam tylko: od czego najlepiej zacząć naukę tych podstaw? Na razie obejrzałem 1 kurs gdzieś 2 godzinny, przeczytałem połowę z wikibooks - ile razy to jeszcze przeczytać bym zaczął się orientować? I ogólnie od czego zacząć.

Dzięki, pozdrawiam.
buliq
Ja przeczytałem na początku z 10 kursów, a po każdym robiłem sobie w praktyce. Przede wszystkim dużo pisać smile.gif A jak czegoś nie wiesz to manual i google to podstawa.
Tho
Naprawdę, przeszukałem wszystko, ale nawet jeśli znalazłem jakąś cenną radę to "-co to znaczy", "czy to dodać, pod przed", "zamknąć klamrę?", "co to te zielone napisy, a co te czerwone"...

Proszę ostatni raz o wskazanie błędów w:

Cytat
$lyrics = $_POST['lyrics'];


I jak podpiąć strip_tags i addslashes, do inputa? W if? Sam nie wiem co piszę... laugh.gif Jakiś samouczek by się przydał by rozróżnić słówka i raz na zawsze wbić sobie co które słowo znaczy.

PS: Dzięki po raz 100 smile.gif
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.