Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php+ajax]Dzialanie w czasie rzeczywistym
marcio
post
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


EDIT: ok troche pokombinowalem i cos juz odswierza ale tylko 1 raz sad.gif i wiadomosci nie chca sie dodac poprzez ajax oto kod

Glowny plik shout'a shout.php
  1. <?php
  2. if(isset($_COOKIE['name']) && isset($_COOKIE['code']) && isset($_COOKIE['prawa']) && isset($_COOKIE['vip']) && $_COOKIE['prawa'] == 3) {
  3. include('config1.php');
  4. echo('<html><body>
  5. <head>
  6. <script type="text/javascript" src="mintAjax.js"></script>
  7. <script type="text/javascript">
  8.  
  9. function refresh() {
  10. var req = mint.Request();
  11.  
  12. req.OnSuccess = function() {
  13. $("response").innerHTML = this.responseText.toUpperCase();
  14. }
  15.  
  16. req.Send("czytaj.php");
  17. }
  18.  
  19.  
  20. function dodaj() {
  21. var req = mint.Request();
  22. req.AddParam("wpis", $("wpis").value);
  23. req.Send("wpis.php", "response");
  24. }
  25.  
  26. //setInterval("refresh()",1000);
  27. setTimeout("refresh()",1000);
  28. </script>
  29. </head>
  30. <h2>Shout</h2>
  31. <form action="'.$_SERVER['PHP_SELF'].'" method="post" id="form" onsubmit="dodaj(); return false;">
  32. <textarea name="wpis" rows="3" cols="20" style="background-color:#ECECEC; color:#000000; border: 1px solid red;">Wpis</textarea>
  33. <input type="submit" name="dodaj" value="Dodaj" style="background-color:#ECECEC; color:#000000; border: 1px solid blue;">
  34. </form>');
  35.  
  36. echo('<div id="response"></div></body></html>');
  37. }
  38. else echo('<html><body><h1>Dostepn do tej czesci strony zabrionony</h1>/<body></html>');
  39. ?>


Czytaj.php
  1. <?php
  2. include('config1.php');
  3. echo('<html><body>');
  4.  
  5. if($db = mysql_connect($pasy['host'], $pasy['login'], $pasy['haslo'])) {
  6. mysql_select_db($pasy['baza']);
  7.  
  8. $query4 = ('select * from shout order by id desc limit 5');
  9. $wynik4 = mysql_query($query4, $db);
  10.  
  11. echo('<table align="left">');
  12.  
  13. while($ksiega = mysql_fetch_assoc($wynik4)) {
  14.  
  15. $query5 = ('select * from users where login = "'.$ksiega['nick'].'"');
  16. $result = mysql_query($query5, $db);
  17. $lvl = mysql_fetch_assoc($result);
  18.  
  19. if($lvl['lvl'] == 3) $user = '<b style="color:#FF0000">$'.$ksiega['nick'].'</b>';
  20. else if($lvl['lvl'] == 2) $user = '<b style="color:#009900">+'.$ksiega['nick'].'</b>';
  21. else if($lvl['lvl'] == 1 && $lvl['vip'] != 'nie') $user = '<b style="color:#000080">^'.$ksiega['nick'].'</b>';
  22. else if($lvl['lvl'] == 1) $user = '<b style="color:#000000">~'.$ksiega['nick'].'</b>';
  23.  
  24. $wpis = wordwrap(stripslashes($ksiega['wpis']), 20, "r\n", 1);
  25.  
  26. <tr><td><font size="1"><a href="user.php?user='.$ksiega['nick'].'">'.$user.'</a></font> '); 
  27. if($_COOKIE['prawa'] == 2 || $_COOKIE['prawa'] == 3) echo(' <font size="1"><a style="color:#3333FF" href="?action=del&id='.$ksiega['id'].'">[usun]</a></font>');
  28. echo('</td></tr><tr><td><p style="font-size:12px">'.$wpis.'</p></td></tr>');
  29.  }
  30. }
  31. echo('</table></body></html>');
  32. ?>


Wpis.php
  1. <?php
  2.  
  3. include('config1.php');
  4.  
  5. if($db = mysql_connect($pasy['host'], $pasy['login'], $pasy['haslo'])) {
  6. mysql_select_db($pasy['baza']);
  7.  
  8. if(!empty($_POST['wpis']) && isset($_POST['dodaj'])) {
  9.  
  10. if(strlen($_POST['wpis'] < 150)) {
  11.  
  12. $nick = $_COOKIE['name'];
  13. $wpis = addslashes(htmlspecialchars($_POST['wpis']));
  14. $data = date('j/n/Y H:i:s');
  15.  
  16. $nowy = ("insert into shout(nick,wpis,data) values('$nick', '$wpis', '$data')");
  17. mysql_query($nowy, $db);
  18. }
  19. }
  20.  
  21. if(isset($_GET['action']) && $_GET['action'] == 'del') {
  22.  
  23. if($_COOKIE['prawa'] == 2 || $_COOKIE['prawa'] == 3) {
  24.  
  25. mysql_query('delete from shout where id = '.(int)$_GET['id'].'');
  26.  
  27. }
  28.  }
  29. }
  30. ?>


Jednak nie dziala zabardzo jak juz napisalem laduje sie tylko raz potem sa duze litery widzialem gdzies funckje na male ale juz nie pamietam gdzie i do tego nie dodaje wiadomosci za pomoca ajax moze ktos powiedziec co zle robie??

P.S prosze nie patrzec na kod to tylko pseudo kod narazie ma chodzic nawet zabezpieczony nie jest smile.gif

questionmark.gif

P.S dodam ze mam taki blad w konsoli
Cytat
Błąd: dodaj is not a function
Plik źródłowy: http://www.marcio.szu.pl/shout.php
Wiersz: 1


Ten post edytował marcio 28.04.2008, 11:51:38


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
lord_t
post
Post #2





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Spróbuj takiej funkcji refresh:

Kod
function refresh() {
    var req = mint.Request();
    
    req.OnSuccess = function() {
        $("response").innerHTML = this.responseText.toUpperCase();
    }
    
    req.Send("czytaj.php");
    setTimeout("refresh()",1000);
}


Patrz ostatni wiersz:) Tylko odświeżanie co 1 sek to niekoniecznie najlepszy pomysłwinksmiley.jpg


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





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


A dlaczego jednak nie dodaje do bazy wpisu przy pomocy ajax??

P.S @lord_t pomogles i zmienilem co 5 sek


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
lord_t
post
Post #4





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Funkcja dolara użyta w funkcji dodaj przyjmuje id a nie name.

Ale skąd ten błąd o braku funkcji dodaj to nie wiem; może jakaś literówka.


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





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Ok poradzilem sobie w pewnym sensie smile.gif odswierza i dodaje wpisy
  1. <?php
  2. echo('<html><body>
  3. <head>
  4. <script type="text/javascript" src="mintAjax.js"></script>
  5. <script type="text/javascript">
  6.  
  7. function refresh() {
  8. var req = mint.Request();
  9.  
  10. req.OnSuccess = function() {
  11. $("response").innerHTML = this.responseText.toUpperCase();
  12. }
  13.  
  14. req.Send("czytaj.php");
  15. setTimeout("refresh()",5000);
  16. }
  17.  
  18.  
  19. function dodaj() {
  20. var req = mint.Request();
  21.  
  22. req.OnSuccess = function() {
  23. $("response").innerHTML = this.responseText;
  24. }
  25.  
  26. req.SendForm("form");
  27. }
  28.  
  29. setTimeout("refresh()",1000);
  30. </script>
  31. </head>
  32. <h2>Shout</h2>
  33. <form action="wpis.php" method="post" id="form">
  34. <textarea name="wpis" rows="3" cols="20" style="background-color:#ECECEC; color:#000000; border: 1px solid red;">Wpis</textarea>
  35. </form>
  36. <button onclick="dodaj()" style="background-color:#ECECEC; color:#000000; border: 1px solid blue;">Wyślij formularz</button>');
  37.  
  38. echo('<div id="response"></div></body></html>');
  39. ?>

I jest good jednak jest jeszcze cos co mi sie nie podoba ta funkcja this.responseText.toUpperCase(); zmienia wszystkie znaki na duze i powieksza wszystko widzialem gdzies funckje ktora zamiebia wszystko na male znaki ale nie pamietam jej nazwy czy ktos moze podac lub ogolnie funckje zeby teskt mial jego normalna wartosc a nie ze wszystko musi byc duze albo male??

Jeszcze jedno nie wiem czy to wina wielkich liter ale tak mi sie nie zdaje ale gdy klikam na link usun w pliku testowym tam gdzie jest ajax to on wiadomosc sie nie usuwa nawet gdy zmienie wielkie litery na takie jakie powinny byc czy poprostu dla linku mam dodac tez zdarzenie onclick(); z funcka wysylaja tresc metoda get do pliku wpis.php??

Czyli tak
  1. <?php
  2. //wyswietlanie linka
  3. if($_COOKIE['prawa'] == 2 || $_COOKIE['prawa'] == 3) echo(' <font size="1"><a onclick="usun()" style="color:#3333FF" href="?action=del&id='.$ksiega['id'].'">[usun]</a></font>');
  4.  
  5. // i tdo tego dodac taka funkcje w ajax
  6.  
  7. function usun() {
  8.  
  9. var req = mint.Request();
  10. req.AddParam("action", "action=del");
  11. req.AddParam("id", $("id").value);
  12. req.Send("wpis.php", "response");
  13. }
  14. ?>

Czy dobrze mowie bo nie wiem co zrobic z tym usuwaniem albo to wina php oczywiscie plik wpis.php ma nadal taka sama zawartosc jak ta co podalem w pierwszym poscie smile.gif


P.S jak to optymalizowac bo widze ze nie dziala to jak profesjonalny shout w php+js+ajax czy tam w javie tylko poprostu dziala na zasadzie wysyla zapytania w tle i tyle a co z streaming html czy cos takiego trudne jest to do zastosowania??


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
lord_t
post
Post #6





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Funkcja toUpperCase i inne:) Jeśli nie chcesz zmieniać wielkości to wywal tę funkcję razem z poprzedzającą kropką.

Co do usuwania:
Martwi mnie to drugie id tu:
Kod
req.AddParam("id", $("id").value);


$("id").value odszuka element o id="id" (np. <input .... id="id" ...> ) i wyciągnie z niego value.
Proponuje zmienić ten identyfikator na jakiś inny np. id2 winksmiley.jpg


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





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


No ok masz nastepnego + odemnie ogolnie nie majac duzysz liter wpisy usuwa ale dodam funckje zeby po usunieciu zaladowala shout'a smile.gif ogolnie chcialem zapytac czy te rozwiazanie ktore podalem jest dobre to z tym onclick i funckja usun() bo jesli tak to mniej wiecej zrozumialem ajax wieksze problemy mam z js

P.S jaka jest roznica pomiedzy mintAjax a adAjax??

P.S2 znasz jakies dobre kursu na temat js+ajax??Mam 2 ksiazki do js ale glownie chodzi mi o ajax oprocz kursu z aktualnej strony mintAjax

Kurde
  1. <?php
  2. echo('<a onclick="setTimeout("refresh()",5000);" style="color:#3333FF" href="wpis.php?action=del&id='.$ksiega['id'].'">[usun]</a></font>');
  3. ?>

Nie chce dzialac nie laduje shout'a bo usunieciu moge dodac header przy usuwaniu ale po co ladowac cala strone?

Hehe wywala mi syntax'a sorki ale js jeszzce nie znam dlatego lamie

Ten post edytował marcio 28.04.2008, 18:55:08


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
lord_t
post
Post #8





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Chyba dobre (specjalistą nie jestem). Z mintAjaxa nie korzystałem, wczytywać mi się w dokumentację też nie chce;)

MintAjax a advAjax:
Adv to biblioteka implementująca tylko ajaxa, a mint z tego co widzę to bardziej taki mały framework. W przypadku minta wygląda na to, że ktoś zrobił implementację ajaxa a potem zaczął dodawać bajery typu fadeIn, fadeOut. Zainteresuj się jQuery - ma to ajaxa + dużo innych bajerów:)

Kursy:
Ja ajaxa uczyłem się na advAjax (to co na stronce + przykłady). Nie znam kursów.

Troche zamotane to przedostatnie zdanie i nie wiele z niego wiem.


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





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Chodzi o te:
Cytat
Nie chce dzialac nie laduje shout'a bo usunieciu moge dodac header przy usuwaniu ale po co ladowac cala strone?

Chodzilo mi o to ze jak klikne na link do usuniecia wpisu to on sie usuwa jednak shout sie juz do iframe nie laduje zostaje pusta strona i chcialem dodac do tego linka onclick z ladowaniem shout'a ale jakos sobie poradze ogolnie dzieki wezme sie za js a potem za advAjax+mintAjax bo samo php juz nie wystarcza tongue.gif

P.S ogolnie chcialem zapytac jesli dodam emotki to shout'a czy przy dzialaniu skrypty ajax w tle nie bedzie widac ze emotki sie laduaja bo jesli tak to ich tam nie dam bo teraz wyglada wszystko tak plynnie


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
lord_t
post
Post #10





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Możliwe, że ten onclick w <a> coś 'psuje'. Popróbuj co tam nie gra:) Ja widzę suchy kod, Ty masz żywy:)

Jeśli ten plus pomiędzy mint a adv miał oznaczać uźywanie obu tych bibliotek naraz to raczej bez sensu.

Rada: dobrze jeśli przy wyłączonym js strona będzie działać dalej prawidłowo:)

To raczej zależy od tych emotek (waga). To może wgraj je od razu ze stroną? Tylko je ukryj? Ale niech przeglądarka je już ma.


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





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
Jeśli ten plus pomiędzy mint a adv miał oznaczać uźywanie obu tych bibliotek naraz to raczej bez sensu

Nie chodzi zeby nauczyc sie obydwoch w stopniu takim zebym cos w nich potarfil napisac i uzywac je kiedy jest taka potrzeba

Cytat
To raczej zależy od tych emotek (waga). To może wgraj je od razu ze stroną? Tylko je ukryj? Ale niech przeglądarka je już ma.

Duze to one nie waza kolo 1bk smile.gif ale chodzi ci o cache mysle ze jest to zbedne albo ich nie dam w cale i i tak nie widac roznicy w ladowaniu strony gdy ich nie ma smile.gif

Cytat
Rada: dobrze jeśli przy wyłączonym js strona będzie działać dalej prawidłowo:)

Wylacze i zobacze czy dziala tongue.gif


Hehe racja nie dziala a jak to mozna poprawic?

Ten post edytował marcio 28.04.2008, 23:00:26


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
lord_t
post
Post #12





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Ja to widzę tak:
Zakładam, że przed wpisaniem się js-criptu wszystko powinno działać, tyle że z przeładowaniami.
Js sam dopisuje po załadowaniu strony (lub załadowaniu DOM -> funkcja ready() jQuery) wszystko co mu potrzebne tam gdzie trzeba, a co teraz jest wpisane na sztywno np. takie zdarzenie onclick: przy wyłączonym js go nie ma, a przy włączonym zostaje dodane automatycznie.


http://perfectionorvanity.com/2006/08/27/n...awanie-zdarzen/
^patrz też 1. akapit 1.komentarza:)


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #13





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Ok zrozumialem a chcialem zapytac sie jak zrobic animacje podczad gdy ktos kliknie na button dodaj myslalem zeby to zrobic tak mam onclick() na funkcje dodajaca + dodac nowy div z display none nad shout'em i gdy bede dodawac shout'a dac display block dla div o id load i wyswietlic w nim img potem na koniec funckji wyczyscic tego div i dac mu display none
  1. <?php
  2. function dodaj() {
  3.  
  4. window.document.getElementById("load").style.display=(window.document.getElementById("load").style.display == "none") ? "block" : "none";
  5. //po odblokowaniu dac funkcje co by robila img np mint.fx.Round("element"); tylko nie wiem zabardzo jak ja nazwac co wy na to??
  6. var req = mint.Request();
  7.  
  8. req.OnSuccess = function() {
  9. $("response").innerHTML = this.responseText;
  10. }
  11.  
  12. req.SendForm("form");
  13. window.document.forms.form.wpis.value="";
  14. //tu blokujemy
  15. window.document.getElementById("load").style.display=(window.document.getElementById("load").style.display == "none") ? "block" : "none";
  16. }
  17. ?>

Co wy na to??


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
lord_t
post
Post #14





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Z dokumentacji mintAjaxa; funkcje obiektu Request:
Cytat
OnLoading() - funkcja wywoływana podczas ładowania odpowiedzi
OnLoaded() - funkcja wywoływana po załadowaniu odpowiedzi


Chyba dobrze kombinujesz, ale wykorzystaj to ^ .


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





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Mozesz powiedziec z jakiej dokumentacji ja czytam to http://mintajax.pl i tego tam nie widzialem to popatrze na przyklady


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
lord_t
post
Post #16





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


http://mintajax.pl/Dokumentacja/Request/

to OnLoading definiujesz chyba tak samo jak tu OnS... :
Kod
req.OnSuccess = function() {
        $("response").innerHTML = this.responseText;
    }


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #17





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Aha myslalem ze juz takie sa smile.gif a je trzeba napisac samemu?Mysle ze jeszcze nie dam rady tego zrobic nic poczekam jak sie poducze to napisze widzialem gotowca w necie
  1. <?php
  2. <script>
  3.  function anim() // będzie pokazywać animacje przy dodaniu nowego tekstu
  4. {
  5. new Effect.BlindDown(document.getElementById('tresc33')); // pokazyje animacje diva tresc33
  6. }
  7.  
  8. function dodaj() // dodaje tekst do bazy danych ..
  9. {
  10. advAJAX.get({
  11. url: "pokaz.php",
  12. onSuccess : function(obj) { document.getElementById("tresc33").innerHTML = obj.responseText; },
  13. onError : function(obj) { alert("Error: " + obj.status); }
  14. });
  15.  
  16. }
  17.  
  18.  
  19.  
  20.  
  21. function blad()
  22. {
  23. alert('zle popraw dane ');
  24. }
  25.  
  26. function dodajj()
  27. {
  28.  
  29. advAJAX.submit(document.getElementById("the_form"), {
  30.  onLoading : function(obj)
  31. {  document.getElementById("loading").innerHTML = "<img src=load.gif><b>ładowanie czekaj ...</b>";  },
  32.  onComplete : function(obj) {  document.getElementById("loading").innerHTML = ""; },
  33. onSuccess : function(obj) {
  34. if (parseInt(obj.responseText) == 1)
  35. dodaj();
  36. else
  37. blad();
  38.  
  39.  
  40. }
  41.  
  42. });
  43.  
  44. }
  45.  
  46. </script>
  47. ?>

tylko co to za lib i jak tego uzyc w moim przypadku?

Sorki jest to advAjax sciagne go na server i zobacze czy dziala

Ten post edytował marcio 29.04.2008, 20:29:52


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
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: 22.08.2025 - 02:19