За последние 24 часа нас посетил 23901 программист и 1750 роботов. Сейчас ищут 1229 программистов ...

[beta] И снова чат... шаблонный

Тема в разделе "Решения, алгоритмы", создана пользователем EvelRus, 30 июл 2008.

  1. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Давай! Спасибо!
     
  2. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
  3. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    Естественно, там ничего не оптимизировано. Кода мало, думаю сам разберёшься
     
  4. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    спасибо! А можно будет тупо спереть?:))
     
  5. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    как хочешь, кстати сам только заметил

    [sql]SELECT * FROM `text` ORDER BY `ts` DESC LIMIT 30[/sql]

    должна быть выборка в убывающей последовательности. в принципе тебе просто надо будет в аякс передавать timestamp и выбирать только те сообщения, которых у пользователя ещё нет.

    сейчас там тупо 30 последних записей выбирается
     
  6. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    а просто sql изменить низзя?
     
  7. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    Там сейчас ASC стоит, т.е. сообщения после 30-го не будут выбираться

    в смысле?
     
  8. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. $sql = ("SELECT * FROM `chat_logs` WHERE `privat` = '' AND `date` = '".date('d-m-Y')."' ORDER BY `id` ".$_SESSION[user_chat_sort]." LIMIT 0 , 30");
     
  9. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    сортировать по времени сообщения в убывающей последовательности, только тогда массив перевернуть надо будет :)
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    PHP:
    1.  if (empty($error))
    2.  {
    3.   while($nextrow = mysql_fetch_array($sql))
    4.   {
    5.    $template = file_get_contents ('template/win_main.tpl');
    6.    $nextrow['what'] = str_replace($_SESSION['username'],'<b>'.$_SESSION['username'].'</b>',$nextrow['what']);
    7.    $template = str_replace (array('[if_no_error]','[/if_no_error]','{error}'), '', $template);
    8.    $template = str_replace ('{time}', $nextrow['time'], $template);
    9.    $template = str_replace ('{who}', $nextrow['who'], $template);
    10.    $template = str_replace ('{what}', $nextrow['what'], $template);
    11.    echo $template;
    12.   }
    13.  }
    14.  else
    15.  {
    16.   $template = file_get_contents ('template/win_main.tpl');
    17.   $template = preg_replace ("#\[if_no_error\](.+?)\[\/if_no_error\]#is", "", $template);
    18.   $template = str_replace ('{error}', $error, $template);
    19.   echo $template;
    20.  }
    Ага, спасибо Mr.M.I.T. =)))
     
  11. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Ага! Спасибо! ))))

    Я честно пишу что при помощи php.ru чат сделан :)))))
     
  12. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    shurastik, а я не понял, а как это ты передаешь в одном запросе и гед и пост????

    Код (Text):
    1. ajax('win_mess.php?nick='+nick, 'getText();', 'msg='+msg);
    У меня как минимум четыре переменные и все передаются постом!
     
  13. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    win_mess.php?nick='+nick - GET

    msg='+msg - POST
     
  14. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Это я понял... только у меня nick срабатывает ТОЛЬКО елси это личное сообщение... и передается постом!
     
  15. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    покажи код отправки :)
     
  16. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?php
    2. function log_write($who, $what, $status = null, $privat = null, $time = null, $html = null)
    3. {
    4.  global $db_server, $db_user, $db_passwd,  $db_table, $db_table_users, $db_table_users_id, $db_table_logs;
    5.  db_connect ($db_server , $db_user, $db_passwd, $db_table);
    6.  mysql_query('SET NAMES CP1251');
    7.  $sql = ("UPDATE `$db_table_users` SET `user_chat_action` = '".time()."' WHERE `$db_table_users_id` = '$_SESSION[user_id]' LIMIT 1");
    8.  $sql = mysql_query($sql) or die (mysql_error());
    9.  $what = mysql_real_escape_string($what);
    10.  $who = mysql_real_escape_string($who);
    11.  $status = mysql_real_escape_string($status);
    12.  $privat = mysql_real_escape_string($privat);
    13.  if ($html == '')
    14.  {
    15.  $t1 = chr(10);
    16.  $t2 = chr(13);
    17.  $what = trim(stripslashes(htmlspecialchars($what)));
    18.  $what = str_replace($t1,'<br>',$what);
    19.  $what = str_replace($t2,'<br>',$what);
    20.  $what = preg_replace('/(.{3})\1*/i','$1',$what);
    21.  }
    22.  if ($privat != '')
    23.  {
    24.   if ($_POST['status'] != null)
    25.   {
    26.    $status = trim(stripslashes(htmlspecialchars($status)));
    27.    $status = '['.$status.'] ';
    28.   }
    29.   $sql = ("INSERT INTO `$db_table_logs` VALUES ('' , '$who', '$what', '$status', '$privat', '".date('d-m-Y')."', '$time')");
    30.   $sql = mysql_query($sql) or die (mysql_error());
    31.  }
    32. else
    33.  {
    34.   if ($_POST['status'] != null)
    35.   {
    36.    $status = trim(stripslashes(htmlspecialchars($status)));
    37.    $status = '['.$status.'] ';
    38.   }
    39.   $sql = ("INSERT INTO `$db_table_logs` VALUES ('' , '$who', '$what', '$status', '', '".date('d-m-Y')."', '$time')");
    40.   $sql = mysql_query($sql) or die (mysql_error());
    41.   }
    42. } // Закрыли функцию log_write?>
     
  17. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    а в функции ajax() что пишешь?
     
  18. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Пока ничего... т.к. понять не могу как это два разных типа запроса в одном потоке
     
  19. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    Например:
    Тебе надо передать в срипт add.php методом GET ник, ник, кому в приват, а методом POST само сообщение

    [js]
    ajax('add.php?nik=Vasja&private=Petja', 'getText()', 'message=sdfgdsfdshgsghfgh');
    [/js]

    В самом add.php:

    PHP:
    1.  
    2. <?
    3.    $nick = mysql_real_escape_string($_GET['nick']);
    4.    $private = mysql_real_escape_string($_GET['private']);
    5.    $message = mysql_real_escape_string($_POST['message']);
    6.  
    7.    //логика программы
    8. ?>
    9.  
    JS функция ajax принимает 3 параметра:

    1 - адрес скрипта (туда же и GET идёт)
    2 - функция обработки ответа
    3 - POST
     
  20. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    мне надо передать ВСЁ постом!!! никаких гетов!
     
  21. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    про HTTP заголовки почитай
     
  22. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    [js]
    ajax('add.php', 'getText()', 'message=sdfgdsfdshgsghfgh&nik=Vasja&private=Petja');
    [/js]
     
  23. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    аа.. так можно?)) тогда ждите :)
     
  24. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Что-то я запутался... Можешь стукнуться ко мне в асю и объяснить? :)))
    Спасибо!
     
  25. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    не, я работаю :D скинь номерок в личку, вечерком, или завтра пообщаемся