
Опытный
 
Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006
Репутация: нет Всего: нет
|
Сообтвенно если вам нужен весь код то вот  вывод | Код | <?php class MessagesTemplate Extends CommonTemplate { public function show($data) { $out = $this->head(). $this->bodytop(). $data. $this->bodybottom(); echo $out; }
//Основные данные public function showMessages($messages) { if(!isset($_REQUEST['tab'])) $sect = 'income'; else $sect = $_REQUEST['tab']; $result = ""; //Выводим блок для отправки сообщений if($_GET['send']==1){ $say=' <div class="agregator agregator_gold agregator_message"> <div class="top"><i> </i><u> </u><b> </b></div> <div class="middle"> <div class="message"> <div class="textarea"> <textarea cols="100" rows="10" name="go"></textarea> </div> </div> </div> <div class="bottom"><i> </i><u> </u><b> </b></div> </div> <div class="message_actions"> <div class="send"> <input type=text name="link" size=80> <a href="#">Отправка</a><br> <div id="img"></div> <a id="send" href="?page=messages&tab=outcome&send=0&messagen=1&id_recipient='.$_GET['id_recipient'].'&id_message='.$_GET['id_message'].'">Отправить</a> <input type="submit" name="registration_submit" value="Отправить"> <a href="?page=messages&tab='.$sect.'&send=0">Отменить</a> </div> <div class="embed"> <a class="media" href="#">Вставить медиа</a> <a class="link" href="#">Вставить ссылку</a> </div> </div>';} else $say=""; $result .= $say; //Выводим пагинатор $this->addcss('/styles/paginator3000.css'); $this->addjsfile('/js/paginator3000.js'); foreach($messages as $message) { $pages++; $amout= ceil($pages / 5); // Вычисляем кол-во страниц. } $result .= '<div class="paginator" id="paginator3"></div> <script type="text/javascript"> pag3 = new Paginator("paginator3", '.$amout.', 1, '.$_GET[pages_id].', "http://ifly/?page=messages&tab='.$sect.'&pages_id="); </script>';
//Отпровляем сообщение ajax if ($_GET['messagen']==1) { $js = " $('#send').click(function(event){ $('#send').html('<img src=indicator.gif id=indicator> Сохранение<br><br>'); $.post('processing.php', { 'page': 'messages', 'formtype': 'mainform', 'tab': 'outcome', 'send': '0', 'messagen': '1', 'id_recipient':'".$_GET['id_recipient']."', 'id_message'='".$_GET['id_message']."' },function(data){ if(data==1) { $('#saving').text(''); } else { $('#saving').html('Ошибка при сохранении<br><br>'); } }); return false; }); "; $this->adddocumentready($js); } //Если спам обновляем бд if($_GET['spam']==1) { $this->spam(); } //Перебераем массив с данными из бд foreach($messages as $message) { $date_time_array = getdate($message[date]); $date_time_array['mday']; $date_time_array['mon']; $date_time_array['year']; $date_time_array['hours']; $date_time_array['minutes']; $date_time_array['seconds']; //Если пишим мы то выводим сообщения в золотой каяемке иначе в серой if($message[speaker]==$this->globals->user_id) $agregator = ' <div class="commentator commentator_gold">'; else $agregator= ' <div class="commentator commentator_white">'; if($_GET[tab]=="income") $agregator= ' <div class="commentator commentator_white">'; elseif($_GET[tab]=="kontacts") $agregator= ' <div class="commentator commentator_white">'; elseif($_GET[tab]=="all") { if($message[speaker]==$this->globals->user_id) $agregator = ' <div class="commentator commentator_gold">'; else $agregator= ' <div class="commentator commentator_white">'; } else $agregator = ' <div class="commentator commentator_gold">'; $result .=' <div class="pager"> </div>'.$agregator.'<div class="avatar"> <a href="#"><img src="images/temp/2.png" alt="" title=""/><span class="corner"> </span></a> </div> <div class="message"> <div class="top"><i> </i><u> </u><b> </b></div> <div class="middle"> <div class="user_info"> <div class="name">'; //Делаем подмену ссылок if($sect == "all") $result .='<a href="?page=userpage&id='.$message[speaker].'">'.$message[s_name].' '.$message[s_last_name].'</a></div>'; else $result .= '<a href="?page=userpage&id='.$message[speaker].'">'.$message[name].' '.$message[lastname].'</a></div>'; if($sect == "kontacts") { $result .='<div class="actions"><a href="?page=messages&tab=all&id_recipient='.$message[speaker].'">Смотреть все сообщения</a></div>'; } elseif($sect == "outcome") { $result .='<div class="actions"><a href="?page=messages&tab='.$sect.'&send=1&id_recipient='.$message[speaker].'&id_message='.$message[id].'">Ответить</a></div>'; } else { if($message[speaker]==$this->globals->user_id) { $result .=' '; } else $result .='<div class="actions"><a href="?page=messages&tab='.$sect.'&send=1&id_recipient='.$message[speaker].'&id_message='.$message[id].'">Ответить</a> <a href="?page=messages&tab='.$sect.'&spam=1&id_recipient='.$message[speaker].'&procents='.$message[procents_message].'&procents_user='.$message[procents_user].'&id_message='.$message[id].'&messages_send='.$message[message].'">Это спам</a></div>'; } $result .=' <span class="date"> '.$date_time_array['mday'].'.'.$date_time_array['mon'].'.'. $date_time_array['year'].' в '.$date_time_array['hours'].':'.$date_time_array['minutes'].' </span> </div> <div class="text"> '.$message[message].'<br> </div> </div> <div class="bottom"><i> </i><u> </u><b> </b></div> </div> </div>'; //Отмичаем сообщения прочтенными $sql = $this->db->prepare("UPDATE messages SET messages.state='Y' WHERE STATE='N'"); $sql->execute(); } $result .= '<div class="paginator" id="paginator2"></div> <script type="text/javascript"> pag3 = new Paginator("paginator2", '.$amout.', 1, '.$_GET[pages_id].', "http://ifly/?page=messages&tab='.$sect.'&pages_id="); </script></div>'; return $result; } } ?>
|
функции | Код | <?php include 'MessagesTemplate.php'; class Messages Extends MessagesTemplate { private $output; //Если нажали "отправить" то отпровляем сообщение public function send() { if($_GET['id_message']>=1) $_GET['id']=$_GET['id_message']+1; else $_GET['id']=1; $date = time(); $procent=0; $theme=''; $state='N'; $sql = $this->db->prepare("INSERT INTO messages (id, user_id, recipient_id, date_send, theme, message, state, procent) VALUES (:id, :user_id, :recipient_id, :date_send, :theme, :message, :state, :procent);"); $sql->bindParam(':id', $_GET['id'], PDO::PARAM_INT); $sql->bindParam(':user_id', $this->globals->user_id, PDO::PARAM_INT); $sql->bindParam(':recipient_id', $_GET['id_recipient'], PDO::PARAM_INT); $sql->bindParam(':date_send', $date, PDO::PARAM_INT); $sql->bindParam(':theme', $theme, PDO::PARAM_INT); $sql->bindParam(':message', $_POST['go'], PDO::PARAM_INT); $sql->bindParam(':state', $state, PDO::PARAM_INT); $sql->bindParam(':procent', $procent, PDO::PARAM_INT); $sql->execute(); //переходим в исходящие сообщения header("Location: ?page=messages&tab=outcome"); } //спам public function spam() { $error=1; if($_COOKIE[id]==$_GET['id_message']) { $error++; } else { //создаем куку на сутки о том что кнопка "отправить спам уже была нажата 1 раз" setcookie("id", $_GET['id_message'], time() +86400); if($_GET['procents']>=5) { $_GET['procents_user']++; $sql1 = $this->db->prepare("DELETE FROM messages WHERE messages.procent=5"); $sql1->execute(); $sql = $this->db->prepare("UPDATE messages SET messages.procent='0' WHERE messages.user_id='$_GET[id_recipient]'' AND messages.message='$_GET[messages_send]'"); $sql->execute(); $sql = $this->db->prepare("UPDATE users SET users.procent='$_GET[procents_user]' WHERE users.id='$_GET[id_recipient]'"); $sql->execute(); } elseif($_GET['procents']<=6) { $_GET['procents']++; $sql = $this->db->prepare("UPDATE messages SET messages.procent='$_GET[procents]' WHERE messages.user_id='$_GET[id_recipient]' AND messages.message='$_GET[messages_send]'"); $sql->execute(); } if($_GET['procents_user']==5) { $sql = $this->db->prepare("UPDATE users SET users.ban='1' WHERE users.id='$_GET[id_recipient]'"); $sql->execute(); } } header("Location: ?page=messages&tab=income"); } //Выборка и вывод сообщений public function index() { $section = "income"; if(isset($_REQUEST['tab'])) $section = $_REQUEST['tab']; $_GET[pages_id] = "1"; if(isset($_REQUEST['pages_id'])) $section = $_REQUEST['pages_id']; $messages = array(); $sql = ""; $p=$_GET[pages_id]*10; if($section == "income") $sql = $this->db->prepare("SELECT m.id, u.name,u.lastname,m.user_id as speaker,m.date_send as date,m.theme,m.message,m.state, m.procent as procents_message, u.procent as procents_user FROM messages m,users u WHERE m.recipient_id=:user_id AND u.id=m.user_id ORDER BY m.date_send desc "); else $sql = $this->db->prepare("SELECT m.id, u.name,u.lastname,m.recipient_id as speaker,m.date_send as date,m.theme,m.message,m.state, m.procent FROM messages m,users u WHERE m.user_id=:user_id AND u.id=m.recipient_id ORDER BY m.date_send desc LIMIT 1,10"); if($section == "kontacts") $sql = $this->db->prepare("SELECT DISTINCT users.id as speaker, users.name, users.lastname FROM ( ( SELECT messages.user_id id FROM messages, users WHERE recipient_id=:user_id ORDER BY messages.date_send desc ) UNION ( SELECT recipient_id FROM messages, users WHERE messages.user_id=:user_id ORDER BY messages.date_send desc ) ) mess INNER JOIN users ON users.id=mess.id"); if($section == "all") $sql = $this->db->prepare("select m.message, sender.id, m.id, m.date_send , sender.name s_name , sender.lastname s_last_name , recipient.name r_name , recipient.lastname r_last_name from messages m, users sender, users recipient where m.user_id = sender.id and m.Recipient_id = recipient.id and m.user_id in (:user_id, $_GET[id_recipient]) and m.Recipient_id in (:user_id, $_GET[id_recipient]) ORDER BY m.date_send desc"); $sql->bindParam(':user_id', $this->globals->user_id, PDO::PARAM_INT); $sql->execute(); $messages = $sql->fetchAll(); $this->output = $this->showMessages($messages); $this->show($this->output); } public function path() { return 'Моя страница > Сообщения > '.$this->getSection(); } public function getSection() { if(!isset($_REQUEST['tab'])) $section = 'income'; else $section = $_REQUEST['tab']; switch($section) { case 'kontacts': return 'Контакты'; case 'income': return 'Входящие'; case 'outcome': return 'Исходящие'; case 'all': return 'Контакты'; } } public function topMenu() { return ' <div class="profile_actions"><div class="profile_actions_in"> <a href="?page=messages&tab=kontacts">Контакты</a> <a href="?page=messages&tab=income">Входящие</a> <a href="?page=messages&tab=outcome">Исходящие</a></div></div> '; } } ?>
|
аякс <?php //Connect to databse | Код | $db = new PDO('mysql:host='.$mysql_connection_host.'; dbname='.$mysql_connection_base.'', $mysql_connection_user, '123'); $db->exec("SET NAMES UTF8"); $path = $_SERVER["DOCUMENT_ROOT"].DIRECTORY_SEPARATOR.'files'.DIRECTORY_SEPARATOR; $photo_path = $path.DIRECTORY_SEPARATOR.'photos'.DIRECTORY_SEPARATOR;
function index() { global $db; //Process session id if (isset($_POST["PHPSESSID"])) { session_id($_POST["PHPSESSID"]); } session_start(); //Check user id list($id, $password) = explode('|', base64_decode($_SESSION['iflycookie'])); //Processing $sql = $db->prepare("SELECT password, salt FROM users where id=:id"); $sql->bindParam(':id', $id, PDO::PARAM_INT); $sql->execute(); list($basepassword, $salt) = $sql->fetch(PDO::FETCH_NUM); $passwordhash = md5($basepassword.$salt); //If stored password is wrong if ($password != $passwordhash) { die("-1"); } switch ($_POST['formtype']) { case 'mainform': mainform_save($id); break; } }
function mainform_save($id) { global $db; if($_GET['id_message']>=1) $_GET['id']=$_GET['id_message']+1; else $_GET['id']=1; $date = time(); $procent=0; $theme=''; $state='N'; $sql = $this->db->prepare("INSERT INTO messages (id, user_id, recipient_id, date_send, theme, message, state, procent) VALUES (:id, :user_id, :recipient_id, :date_send, :theme, :message, :state, :procent);"); $sql->bindParam(':id', $_GET['id'], PDO::PARAM_INT); $sql->bindParam(':user_id', $this->globals->user_id, PDO::PARAM_INT); $sql->bindParam(':recipient_id', $_GET['id_recipient'], PDO::PARAM_INT); $sql->bindParam(':date_send', $date, PDO::PARAM_INT); $sql->bindParam(':theme', $theme, PDO::PARAM_INT); $sql->bindParam(':message', $_POST['go'], PDO::PARAM_INT); $sql->bindParam(':state', $state, PDO::PARAM_INT); $sql->bindParam(':procent', $procent, PDO::PARAM_INT); $sql->execute(); //переходим в исходящие сообщения header("Location: ?page=messages&tab=outcome"); if($sql->errorCode()=="00000") echo 1; else echo 0; }
?>
|
Нужно чтоб сообщения добовлялись в БД. они в принципе добовляются через submit и вызов функции $this->send(); но нужно именно через аякс JQuery
|