Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dzwiek po dodaniu nowego rekordu do bazy
Forum PHP.pl > Forum > Przedszkole
andy1995
Witam. Dzisiaj podczas popoludniowej kupy rozmyslalem troche i wymyslilem cos takiego. Zeby po dodaniu na stronie zostal odegranie 1 raz dzwiek. Da sie takie cos skonstruowac? Mogloby sprawdzac czy formularz zostal wypelniony i wtedy zostaje odegrany dzwiek albo co x sekund sprawdzal w bazie.
rossecki
Formularz, wysyłasz dane do pliku php, jeżeli warunki są spełnione i record jest dodany to aktywujesz jakiś plugin jquery który odegra dźwięk tongue.gif
andy1995
Cytat(rossecki @ 20.07.2012, 00:12:22 ) *
Formularz, wysyłasz dane do pliku php, jeżeli warunki są spełnione i record jest dodany to aktywujesz jakiś plugin jquery który odegra dźwięk tongue.gif


Aha, nawet czaje wszystko. Nie da sie prosciej? Przynajmniej jakis przyklad by sie chociaz przydal.
irmidjusz
Cytat(andy1995 @ 20.07.2012, 00:06:58 ) *
Dzisiaj podczas popoludniowej kupy rozmyslalem troche


urocze
!*!
Cytat(andy1995 @ 20.07.2012, 00:16:51 ) *
Aha, nawet czaje wszystko. Nie da sie prosciej? Przynajmniej jakis przyklad by sie chociaz przydal.


Html5 <audio>
markonix
Cytat(!*! @ 20.07.2012, 05:58:06 ) *
Html5 <audio>

Najlepsza opcja, można też alternatywnie DIV z obiektem flash - dźwiękiem, jeżeli koniecznie ma być zachowana kompatybilność wstecz.
andy1995
Cytat(markonix @ 20.07.2012, 10:51:46 post=) *
Najlepsza opcja, można też alternatywnie DIV z flash - dźwiękiem, jeżeli koniecznie ma być zachowana kompatybilność wstecz.


Wiem jakd dodac dzwiek tylko potrzebuje przykladu jak sprawdzic czy rekord zostal dodany
markonix
No to pokaż kod.. Skąd mam wiedzieć z jakiej rodziny funkcji korzystasz albo nawet z jakiej bazy...

Dla mysql_ jest funkcja mysql_affected_rows
andy1995
Cytat(markonix @ 20.07.2012, 10:56:28 ) *
No to pokaż kod.. Skąd mam wiedzieć z jakiej rodziny funkcji korzystasz albo nawet z jakiej bazy...

Dla mysql_ jest funkcja mysql_affected_rows


Skad mam miec jakis kod jak mowie, ze przydalby mi sie jakis przyklad. Mam tylko zwykly formularz wysylajacy dane do bazy i skrypt w js odgrywajacy dzwiek. Chodzi mi o przyklad z postawieniem warunki
  1. if($nowy_rekord) {
  2. include("sound.js");
  3. }

Rysh
Haha, poczytaj najpierw o php podczas tej popołudniowej kupy. Skryptów JS nie inclujemy do skryptu, ponieważ one wykonują się po stronie klienta a nie serwera.
markonix
Jeżeli formularz nie korzysta np. a AJAX to taki include całkiem możliwe, żeby zdał zadanie.
Ja np. dźwięk dodawałem na czacie - odpytanie bazy o nowe rekordy, nie należące do oglądającego czat.
Bo co Ty chcesz zrobić ? Po wysłaniu formularza wywalić dźwięk ? Po jaką cholerę ? Żeby niewidomi otrzymali komunikat o tym, że wysłali formularz... ?
Rysh
Cytat(markonix @ 20.07.2012, 16:50:12 ) *
Jeżeli formularz nie korzysta np. a AJAX to taki include całkiem możliwe, żeby zdał zadanie.
Ja np. dźwięk dodawałem na czacie - odpytanie bazy o nowe rekordy, nie należące do oglądającego czat.
Bo co Ty chcesz zrobić ? Po wysłaniu formularza wywalić dźwięk ? Po jaką cholerę ? Żeby niewidomi otrzymali komunikat o tym, że wysłali formularz... ?

Jeszcze nie spotkałem się z includowaniem pliku JS wprost do skryptu php.

Masz na myśli takie coś?
  1. <script>
  2. <?php include("plik.js");
  3. </script>

Tylko jaki to ma sens? Skoro można załączyć taki plik w head.
markonix
Ma taki sens aby warunkować jego wyświetlenie w tym head.

Bardziej chodziło by mi o coś takiego:
  1. <?php if ($sound === true): ?>
  2. <script type="text/javascript" src="sound.js"></script>
  3. <?php endif; ?>


Inna opcja to funkcja w JS typu "sound();" i za pomocą PHP jej wywołanie w znacznikach script (echo).
Innych opcje wywołania skryptu w JS za pomocą PHP nie przychodzą mi do głowy (no może jeszcze parsowanie linku ?sound=true) ale wydaje mi to nad wyrost niepotrzebne.
andy1995
Cytat(markonix @ 20.07.2012, 16:50:12 ) *
Jeżeli formularz nie korzysta np. a AJAX to taki include całkiem możliwe, żeby zdał zadanie.
Ja np. dźwięk dodawałem na czacie - odpytanie bazy o nowe rekordy, nie należące do oglądającego czat.
Bo co Ty chcesz zrobić ? Po wysłaniu formularza wywalić dźwięk ? Po jaką cholerę ? Żeby niewidomi otrzymali komunikat o tym, że wysłali formularz... ?


Formularz jest w pliku index.php jezeli zostanie wypelniony to dzwiek zostanie odegrany na stronie np. sound.php. Nie na stronie formularza a na innej stronie, takie powiadomienie ze ktos wypelnil formularz
markonix
No to ajaxem odpytuj serwer co ile chcesz sekund i w momencie pojawiania się nowego formularza w bazie (np. po ostatnim id) odgrywaj dźwięk.

I z góry uprzedzam - nie pytaj się jak to zrobić tylko się wysil i wklej kod - poczytaj o AJAX (jQuery).
andy1995
Cytat(markonix @ 20.07.2012, 17:43:35 ) *
No to ajaxem odpytuj serwer co ile chcesz sekund i w momencie pojawiania się nowego formularza w bazie (np. po ostatnim id) odgrywaj dźwięk.

I z góry uprzedzam - nie pytaj się jak to zrobić tylko się wysil i wklej kod - poczytaj o AJAX (jQuery).


Wymyslilem cos takiego ale nie wiem czy tak sie da.

  1. <script type="text/javascript">
  2. function check()
  3. {
  4. ladowanie_pliku_php_z_zapytaniem_do_bazy;
  5. }
  6. setInterval(check, 2000)
  7. </script>


Skrypt js w pliku w ktorym ma byc odgrywany dzwiek wywolywal by funkcje check co 2 sekundy ktora laduje plik check.php w ktorym znajduje sie zapytanie do bazy czy nowy rekord zostal dodany i jesli tak to zostaje odegrany dzwiek. Tylko wtedy dzwiek odegrany bylby na stronie check.php. Szukalem jak wyslac zapytanie do bazy z jquery ale znalazlem ze trzeba wczytac plik php. Moze ktos mi cos podpowie. Nie jestem zadnym zaawansowanych skrypterem tylko gosciem ktory potrafi napisac prosta strone w php. Nie znam nic poza html i php. Na mojej stronie potrzebuje akurat takiego czegos i to jest najtrudniejsze z wszystkiego co zrobilem.
Rysh
Cytat(markonix @ 20.07.2012, 17:28:33 ) *
Ma taki sens aby warunkować jego wyświetlenie w tym head.

Bardziej chodziło by mi o coś takiego:
  1. <?php if ($sound === true): ?>
  2. <script type="text/javascript" src="sound.js"></script>
  3. <?php endif; ?>


Inna opcja to funkcja w JS typu "sound();" i za pomocą PHP jej wywołanie w znacznikach script (echo).
Innych opcje wywołania skryptu w JS za pomocą PHP nie przychodzą mi do głowy (no może jeszcze parsowanie linku ?sound=true) ale wydaje mi to nad wyrost niepotrzebne.

Takie coś to jeszcze ma sens. Ale co do pomysłu autora, wydaje mi się że jest to zwyczajnie niepotrzebne.
Do chatu owszem, powiadamianie o nowych wiadomościach.
!*!
Cytat(andy1995 @ 20.07.2012, 18:52:30 ) *
Skrypt js w pliku w ktorym ma byc odgrywany dzwiek wywolywal by funkcje check co 2 sekundy ktora laduje plik check.php w ktorym znajduje sie zapytanie do bazy czy nowy rekord zostal dodany i jesli tak to zostaje odegrany dzwiek. Tylko wtedy dzwiek odegrany bylby na stronie check.php. Szukalem jak wyslac zapytanie do bazy z jquery ale znalazlem ze trzeba wczytac plik php. Moze ktos mi cos podpowie. Nie jestem zadnym zaawansowanych skrypterem tylko gosciem ktory potrafi napisac prosta strone w php. Nie znam nic poza html i php. Na mojej stronie potrzebuje akurat takiego czegos i to jest najtrudniejsze z wszystkiego co zrobilem.


Tak samo, tylko że przez .ajax()
andy1995
Cytat(!*! @ 20.07.2012, 19:38:06 ) *
Tak samo, tylko że przez .ajax()


  1. $.ajax({
  2. type: "POST",
  3. url: "check.php",
  4. data: "name=John&location=Boston",
  5. success: function(sound){
  6. var mp3snd = "horse.wav";
  7.  
  8. document.write('<audio autoplay="autoplay">');
  9. document.write('<source src="'+mp3snd+'" type="audio/mpeg">');
  10. document.write('<bgsound src="'+mp3snd+'" loop="1">');
  11. document.write('</audio>');
  12. }
  13. });


Rozumiem, ze w pliku check.php ma byc tylko zapytanie do bazy? Czy ma byc tam postawiony warunek.
Jeszcze jedna rzecz. Co robi w tym przypadku data: "name=John&location=Boston",.
!*!
success zwracany jest zawsze gdy nastąpi poprawne połączenie, a nie to co zwraca kod php. data to nic innego jak informacje jakie chcesz przesłać przez post. w pliku php po udanym udpade odeślij do skryptu json, lub po prostu wykonaj kod JS przez echo lub wyświetl html5 <audio> tag (trochę na rympał, ale co tam, zadziała).
andy1995
Cytat(!*! @ 20.07.2012, 19:59:08 ) *
success zwracany jest zawsze gdy nastąpi poprawne połączenie, a nie to co zwraca kod php. data to nic innego jak informacje jakie chcesz przesłać przez post. w pliku php po udanym udpade odeślij do skryptu json, lub po prostu wykonaj kod JS przez echo lub wyświetl html5 <audio> tag (trochę na rympał, ale co tam, zadziała).


Teraz nie wiem kompletnie nic, jak tego dokonac. Jak w innym pliku .php zrobie zeby odgrywal dzwiek to co mi z tego. 0 pomyslu jak to zrobic.
markonix
Po pierwsze zastanów się jak ma wygląd zapytanie odpytujące czy pojawił się nowy rekord.
Proste rozwiązanie np. w przypadku tabeli z ID auto increment to po prostu w zmiennej JS zapisywać:

  1. var lastId = <?= $lastId; ?>


Potem tą zmienną przekazujesz do skryptu odpytującego i sprawdzasz czy powstał nowy rekord. Możesz to robić w PHP i zwracać np. napis 'ok', możesz też zwracać ostatnie ID i już JS sprawdzasz czy newId > lastId.

Jakkolwiek to sprawdzisz to wtedy wystarczy wykonać skrypt z dźwiękiem.

Jeżeli to jest dla Ciebie nadal skomplikowane to sobie daruj ten pomysł i usprawniaj swoje formularze w zakresie swoich sił bo na razie po Twoim kodzie to śmiem twierdzić, że Twój JavaScript jest na poziomie kopiowania kodu z tutoriali. Poza tym co z tego, że zostanie odegrany dźwięk co tylko będzie irytować człowieka. Jeżeli pojawia się dźwięk to o czymś on informuje i musi to być jasno skonkretyzowane - oprócz dźwięku musiałby się pojawić jakiś komunikat na stronie typu "Nowy formularz", można to usprawnić o "migający" tiittle co jest bardzo pomocne (widać z której karty w przeglądarce pochodził dźwięk).
andy1995
Cytat(markonix @ 21.07.2012, 01:54:33 ) *
Po pierwsze zastanów się jak ma wygląd zapytanie odpytujące czy pojawił się nowy rekord.
Proste rozwiązanie np. w przypadku tabeli z ID auto increment to po prostu w zmiennej JS zapisywać:

  1. var lastId = <?= $lastId; ?>


Potem tą zmienną przekazujesz do skryptu odpytującego i sprawdzasz czy powstał nowy rekord. Możesz to robić w PHP i zwracać np. napis 'ok', możesz też zwracać ostatnie ID i już JS sprawdzasz czy newId > lastId.

Jakkolwiek to sprawdzisz to wtedy wystarczy wykonać skrypt z dźwiękiem.

Jeżeli to jest dla Ciebie nadal skomplikowane to sobie daruj ten pomysł i usprawniaj swoje formularze w zakresie swoich sił bo na razie po Twoim kodzie to śmiem twierdzić, że Twój JavaScript jest na poziomie kopiowania kodu z tutoriali. Poza tym co z tego, że zostanie odegrany dźwięk co tylko będzie irytować człowieka. Jeżeli pojawia się dźwięk to o czymś on informuje i musi to być jasno skonkretyzowane - oprócz dźwięku musiałby się pojawić jakiś komunikat na stronie typu "Nowy formularz", można to usprawnić o "migający" tiittle co jest bardzo pomocne (widać z której karty w przeglądarce pochodził dźwięk).


Migajace title to tez dobry pomysl. Ale formularz jest wypelniany z zupelnie innego komputera.

markonix
Cytat(andy1995 @ 21.07.2012, 02:16:36 ) *
Ale formularz jest wypelniany z zupelnie innego komputera.


I co w związku z tym?
andy1995
Cytat(markonix @ 21.07.2012, 02:20:25 ) *
I co w związku z tym?


Bo piszesz ze dzwiek bedzie irytowal, on ma informowac mnie jak ktos wypelni formularz. Bo nie chce mi sie co kilka sekund odswiezac strony, a tak to wiem kiedy ja odswiezyc.
markonix
Czyli w sensie, że to jest rozwiązanie wyłącznie dla Ciebie (dla Twojej wygody, nikt inny nie korzysta) wtedy spoko bo wiesz co to za dźwięk.
Więc userbility ma mniejsze znaczenie jeżeli wiesz, że nikt inny z tego nie będzie korzystał.

Więc działaj, wszystko potrzebne podałem Ci.
!*!
Cytat
Bo piszesz ze dzwiek bedzie irytowal, on ma informowac mnie jak ktos wypelni formularz. Bo nie chce mi sie co kilka sekund odswiezac strony, a tak to wiem kiedy ja odswiezyc.


To zastanów się w końcu czego chcesz. I na przyszłość opisuj to konkretniej.
W takiej sytuacji... Łączysz się z bazą przez swój skrypt, co ileś tam minut i jak będzie nowy rekord włączysz dźwięk. Sposobów na to jest kilka

1. odpalasz skrypt, i w przeglądarce ustawisz odświeżanie strony co X sekund/minut. (najprostsze)
2. łączysz się przez ajax, na tej samej zasadzie (średno zaawansowane)
3. odpalasz u siebie skrypt + websocets i wtedy nie zarzynasz bazy jak w przypadku punktów wyżej, bo dźwięk i skrypt zostanie wykonany tylko w przypadku gdy nowy rekord zostanie dodany, a nie jak w przykładach wyżej, za każym razem w ustalonym odstępie czasowym (skomplikowane)
zeeltom
Czy da się zrobić coś a'la dzwonek na stronę?
Chodzi mi o jakiś przycisk na stronie forum i po jego naciśnięciu ma się u wszystkich, którzy mają otwartą stronę, pojawić jakiś krótki sygnał dźwiękowy mid lub wav.
mlawnik
Złota łopatka dla pana wink.gif

Dodajesz pole w bazie, a w kodzie strony ajaxem sprawdzasz czy to pole jest wypełnione czy nie.
Analogiczny przykład do podanych wcześniej.
Po gotowce zapraszamy do działu giełda.
zeeltom
Jako gość nie widzę takiego działu.
Może jakiś krótki opis, jeśli da się krótko? Nie jestem za mocny w bazach danych itp.
markonix
Cytat(zeeltom @ 7.12.2013, 07:20:13 ) *
Jako gość nie widzę takiego działu.

Nie widzę problemu abyś się zarejestrował, skoro wymagasz tu gotowców to możesz poświęcić od siebie chociaż te 2 minuty.
zeeltom
To podziękuję. Nie będę się specjalnie rejestrował dla jednego pytania.

Pozdrawiam.
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.