Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX] Shout, j/w
wizard144
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 4.05.2009

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


Zrobiłem shoutbox który odświeżam za pomocą Crona co 5 sekund. Niestety wygląda to dosyć mało estetycznie.

Wiem że powinienem zajrzeć do dokumentacji Ajaxa ale problem w tym że z advAjax nic nie rozumiem -> brak podstaw js.

Czy mógłby mnie ktoś nakierować ? Wiem że setInterval jest tu niezbędne ale interesują mnie zapytania jquery. Jak to zrobić aby zżeralo jak najmniej "trasferu"... żeby po prostu nie muliło.

Pozdrawiam!
Go to the top of the page
+Quote Post
v1t4n
post
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

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


ja zrobilem sobie funkcje rekurencyjna:

Kod
function shoutbox(){
    var boxik = getById('sb'); //id diva do ktorego ladujesz tresc shoutboxa
    advAJAX.get({
        url: "modules/shoutbox.php", //plik php ktory generuje zawartosc shoutboxa
        onSuccess : function(obj) {
            boxik.innerHTML = obj.responseText; //podstawianie sciagnietego textu
            boxik.style.overflow = 'auto'; //pierduly zeby sie na FF nie rypalo
            setTimeout("shoutbox()", 10000); //interwał wpisz sobie sam :), ja mam 10 sekund
        },
        onError : function(obj) { alert("Error: " + obj.status); }
    });
}


funkcje trzeba zaladowac do body eventem onload.


PS
moge ci udostepnic również funkcję do dodawania nowych wpisów w shoutboxie

Ten post edytował v1t4n 4.05.2009, 18:59:27


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post
wizard144
post
Post #3





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 4.05.2009

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


Nowe wpisy dodaje sobie w osobnym Ifram-e smile.gif Zawsze jakieś rozwiązanie, fakt że toporne ale jednak smile.gif

PS.

Dzięki za funkcję, zaraz wypróbuję jak będzie działała smile.gif

Próbowałem to dostosować do Iframe-a którego mam

CODE


<iframe width=\"510\" height=\"500\" name=\"shout\" src=\"shoutbox/klub.php?nr=$nr&f=$funkcja\" valign=\"top\" border=\"0\" id='sb' onload=\"shoutbox()\">
Twoja przeglądarka nie obsługuje ramek
</iframe>



CODE

<?php
require_once('******.***'); // ładujemy połączenie z bazą smile.gif

$funkcja=mysql_real_escape_string(htmlspecialchars($_GET['f'])); //zmienna funkcji
$nr=mysql_real_escape_string(htmlspecialchars($_GET['nr'])); // zmienne nr pokoju
?>


<html>
<head>
<meta http-equiv="Refresh" content="5"> // TEGO MUSZĘ SIĘ POZBYĆ smile.gif
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script>
function shoutbox(){ // Twoja funkcja smile.gif
var boxik = getById('sb'); //id diva do ktorego ladujesz tresc shoutboxa
advAJAX.get({
url: "klub.php?nr=<?php echo $nr; ?>&f=<?php echo $funkcja; ?>", //plik php ktory generuje zawartosc shoutboxa
onSuccess : function(obj) {
boxik.innerHTML = obj.responseText; //pierduly zeby sie na FF nie rypalo
boxik.style.overflow = 'auto'; //jw
setTimeout("shoutbox()", 5000); //interwał wpisz sobie sam smile.gif, ja mam 10 sekund
},
onError : function(obj) { alert("Error: " + obj.status); }
});
}
</script>
</head>
<body bgcolor="black" onload="shoutbox();">
<center>
<div id='sb'>

//dalsza część kodu -> tabele itd (wszystko co pobiera z bazy danych)
</div>
</center>
</body>
</html>





Tak to u mnie by wyglądało...

Co Ty na to ?
Go to the top of the page
+Quote Post
v1t4n
post
Post #4





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

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


Nie napisales czy masz blad ale ja na twoim miejscu odszedlbym od ramek:

Pokaze ci co ja mam i jak mi to dziala

shoutbox.js:
Kod
function shoutbox(){
    var boxik = getById('sb');
    //alert('dupa');
    advAJAX.get({
        url: "modules/shoutbox.php",
        onSuccess : function(obj) {
            boxik.innerHTML = obj.responseText;
            boxik.style.overflow = 'auto';
            setTimeout("shoutbox()", 10000);
        },
        onError : function(obj) { alert("Error: " + obj.status); }
    });
    //boxik.innerHTML = a
}

function shoutboxAddText(){
    var texcik = getById('inText');
    advAJAX.get({
        url: "modules/shoutbox_add_text.php",
        parameters: {
            'PHPSESSID' : getCookie('PHPSESSID'),
            'text' : texcik.value
        },
        onSuccess : function(obj) {
            shoutbox();
            texcik.value = '';
        },
        onError : function(obj) { alert("Error: " + obj.status); }
    });
}


index.php (w body nadal zostaje onload="shoutbox()";):
  1. <div class="shoutbox" id="sb"></div>
  2.            <div class="shoutbox-3">
  3.                <?php
  4.                    if ($_SESSION['logged_in']) {
  5.                        print '
  6.                        <form>
  7.                            <input type="text" style="width:200px;" id="inText"/><br/>
  8.                            <input type="button" value="Dodaj" onClick="shoutboxAddText();"/>
  9.                        </form>';
  10.                    } else print 'Musisz się zalogować by móc bluzgać na Shoutboxie.'
  11.                ?>
  12.            </div>


shoutbox.php:
  1. <?php
  2. $sql1 = "SELECT s.author, u.nickname, s.text, (SELECT COUNT(f.id) FROM files_info f WHERE f.author = s.author) AS uc FROM `shoutbox` s, users u WHERE u.id = s.author ORDER BY s.`id` DESC LIMIT 0,20";
  3. $sql2 = mysql_query($sql1);
  4. $a=1;
  5. while($row = mysql_fetch_array($sql2)){
  6.    print '<div class="shoutbox-'.($a%2).'">'.user_link($row[1], $row[0], $row[3]).': '.$row[2].'</div>';
  7.    $a++;
  8. }
  9. ?>


shoutbox_add_text.php:
  1. <?php
  2. $login = $_SESSION['login'];
  3. $pass = $_SESSION['password'];
  4. if (!empty($login)&&!empty($pass)) {
  5.    $user = mysql_fetch_row(mysql_query("SELECT `user` FROM `accounts` WHERE MD5(`login`) = '$login' AND MD5(`password`) = '$pass' LIMIT 0,1"));
  6.    if ($user[0]) {
  7.        $text = $_GET['text'];
  8.        if (!empty($text)) {
  9.            $datestamp = mktime();
  10.            $asd = mysql_query("INSERT INTO `shoutbox` (`author`, `text`, `date`) VALUES ('$user[0]', '$text', $datestamp)");
  11.            $xaxa = $asd == true ? '1' : '5';
  12.            print $xaxa;
  13.        } else print '4';
  14.    } else print '3';
  15. } else print '2';
  16. ?>


shoutbox_add_text zwraca wartosc 1 jesli wszystko dziala - jesli cos nie dziala to mozna latwo podejzec co po nr bledu smile.gif

shoutbox.css:
Kod
div.shoutbox {
    border:2px solid #777;
    width:200px;
    height:350px;
    background-color:#eee;
    overflow:auto;
}

div.shoutbox-1 {
    padding:2px;
    background-color:#ccc;
}
div.shoutbox-0 {
    padding:2px;
    background-color:#ddd;
}

div.shoutbox-3 {
    width:204px;
    color:#eee;
}


tabela w bazie:
id (INDEX, smallint, auto_increment)|author (tinyint)|text (text)|date (int)


Potrzebujesz jeszcze advAjaX i funkcje w JS do ciastek:
Kod
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
Go to the top of the page
+Quote Post
wizard144
post
Post #5





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 4.05.2009

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


Widzisz, ja w ogóle advAjaxa nie zaincludowałem. To może być przyczyną ... W każdym bądź razie dzięki smile.gif może coś z tego stworze smile.gif

+ dla Ciebie smile.gif
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: 20.08.2025 - 12:56