Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
 
Start new topic
Odpowiedzi
v1t4n
post
Post #2





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 (IMG:http://forum.php.pl/style_emoticons/default/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 "";
}
Go to the top of the page
+Quote Post

Posty w temacie


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: 3.10.2025 - 01:24