как хочешь, кстати сам только заметил [sql]SELECT * FROM `text` ORDER BY `ts` DESC LIMIT 30[/sql] должна быть выборка в убывающей последовательности. в принципе тебе просто надо будет в аякс передавать timestamp и выбирать только те сообщения, которых у пользователя ещё нет. сейчас там тупо 30 последних записей выбирается
PHP: $sql = ("SELECT * FROM `chat_logs` WHERE `privat` = '' AND `date` = '".date('d-m-Y')."' ORDER BY `id` ".$_SESSION[user_chat_sort]." LIMIT 0 , 30");
сортировать по времени сообщения в убывающей последовательности, только тогда массив перевернуть надо будет
PHP: if (empty($error)) { while($nextrow = mysql_fetch_array($sql)) { $template = file_get_contents ('template/win_main.tpl'); $nextrow['what'] = str_replace($_SESSION['username'],'<b>'.$_SESSION['username'].'</b>',$nextrow['what']); $template = str_replace (array('[if_no_error]','[/if_no_error]','{error}'), '', $template); $template = str_replace ('{time}', $nextrow['time'], $template); $template = str_replace ('{who}', $nextrow['who'], $template); $template = str_replace ('{what}', $nextrow['what'], $template); echo $template; } } else { $template = file_get_contents ('template/win_main.tpl'); $template = preg_replace ("#\[if_no_error\](.+?)\[\/if_no_error\]#is", "", $template); $template = str_replace ('{error}', $error, $template); echo $template; } Ага, спасибо Mr.M.I.T. =)))
shurastik, а я не понял, а как это ты передаешь в одном запросе и гед и пост???? Код (Text): ajax('win_mess.php?nick='+nick, 'getText();', 'msg='+msg); У меня как минимум четыре переменные и все передаются постом!
Это я понял... только у меня nick срабатывает ТОЛЬКО елси это личное сообщение... и передается постом!
PHP: <?php function log_write($who, $what, $status = null, $privat = null, $time = null, $html = null) { global $db_server, $db_user, $db_passwd, $db_table, $db_table_users, $db_table_users_id, $db_table_logs; db_connect ($db_server , $db_user, $db_passwd, $db_table); mysql_query('SET NAMES CP1251'); $sql = ("UPDATE `$db_table_users` SET `user_chat_action` = '".time()."' WHERE `$db_table_users_id` = '$_SESSION[user_id]' LIMIT 1"); $sql = mysql_query($sql) or die (mysql_error()); $what = mysql_real_escape_string($what); $who = mysql_real_escape_string($who); $status = mysql_real_escape_string($status); $privat = mysql_real_escape_string($privat); if ($html == '') { $t1 = chr(10); $t2 = chr(13); $what = trim(stripslashes(htmlspecialchars($what))); $what = str_replace($t1,'<br>',$what); $what = str_replace($t2,'<br>',$what); $what = preg_replace('/(.{3})\1*/i','$1',$what); } if ($privat != '') { if ($_POST['status'] != null) { $status = trim(stripslashes(htmlspecialchars($status))); $status = '['.$status.'] '; } $sql = ("INSERT INTO `$db_table_logs` VALUES ('' , '$who', '$what', '$status', '$privat', '".date('d-m-Y')."', '$time')"); $sql = mysql_query($sql) or die (mysql_error()); } else { if ($_POST['status'] != null) { $status = trim(stripslashes(htmlspecialchars($status))); $status = '['.$status.'] '; } $sql = ("INSERT INTO `$db_table_logs` VALUES ('' , '$who', '$what', '$status', '', '".date('d-m-Y')."', '$time')"); $sql = mysql_query($sql) or die (mysql_error()); } } // Закрыли функцию log_write?>
Например: Тебе надо передать в срипт add.php методом GET ник, ник, кому в приват, а методом POST само сообщение [js] ajax('add.php?nik=Vasja&private=Petja', 'getText()', 'message=sdfgdsfdshgsghfgh'); [/js] В самом add.php: PHP: <? $nick = mysql_real_escape_string($_GET['nick']); $private = mysql_real_escape_string($_GET['private']); $message = mysql_real_escape_string($_POST['message']); //логика программы ?> JS функция ajax принимает 3 параметра: 1 - адрес скрипта (туда же и GET идёт) 2 - функция обработки ответа 3 - POST