MySQL приват

1. Роман (29.05.2011 / 23:30)
Помогите разобраться как сделать приват на MySQL.
Разбирал ротор, но все равно не понятно...Посоветуйте желательно на примерах smile

2. Тимофей (29.05.2011 / 23:34)
1. Nominal, http://codepad.org/DGJSmLBT вот....подробнее могу Вк )) писал се

3. Женек (30.05.2011 / 00:09)
1. Nominal,

таблицу создаешь messeges

id|out|from|text|status|
1|id_пользователя от кого ушло|id_кому пришло|текст|статус прочтения|


ну и скриптик к ней)

4. Дмитрий (30.05.2011 / 00:51)
3. Basters, в роторе по дурному сделано. 2 отдельные таблицы. Можно всего лишь добавить 2 ячейки - подписка. Получатель и отправитель. По умолчанию обе Ячейки имеют значение "1". Если человек жмет "Удалить письмо" - единичка превращается в ноль. Если обе ячейки "0" - строка удаляется.

Ведь так проще, и меньше места, чем 2 одинаковые таблицы "Входящие/Исходящие" ))))

5. Станислав (30.05.2011 / 01:18)
1. Nominal, ты не прими, конечно, близко к сердцу, но дуй в примеры на php.su

Если сможешь написать простейшую гостевую книгу и систему авторизации (причём не тупо ctrl+c - ctrl+v, а во всём разберёшься досканально), то тогда не возникнет таких вопросов.

6. KOZZ (30.05.2011 / 06:22)
1 таблица:
id (ид письма, инкремент), from(ид юзера от кого письмо), to(ид юзера кому письмо), read (1-прочитано, 0-не прочитано), message(самое сообщение), time(время отправки письма)
-------------------
вот и все, делов то

7. Роман (30.05.2011 / 09:55)
SNELS (30 Мая 2011 / 01:18)
1. Nominal, ты не прими, конечно, близко к сердцу, но дуй в примеры на php.su

Если сможешь написать простейшую гостевую книгу и систему авторизации (причём не тупо ctrl+c - ctrl+v, а во всём разберёшься досканально), то тогда не возникнет таких вопросов.
Я и так написал гостевую, авторизацию/регистрацию, а вот с приватом проблемы возникли

Добавлено через 01:35 сек.
eGo (30 Мая 2011 / 06:22)
1 таблица:
id (ид письма, инкремент), from(ид юзера от кого письмо), to(ид юзера кому письмо), read (1-прочитано, 0-не прочитано), message(самое сообщение), time(время отправки письма)
-------------------
вот и все, делов то
а обрабатывать как ? вот я создал таблицу почти идентичную твоей...
Но как обработать ее не понимаю sad Как понять где чье письмо?
Дима лондон, можешь подробнее про использование таблицы такой рассказать?

8. KOZZ (30.05.2011 / 13:13)
Я и так написал гостевую, авторизацию/регистрацию, а вот с приватом проблемы возникли
глубоко соменваюсь

9. Валерий (30.05.2011 / 14:01)
Вот мой рабочий код для привата.. тупо вставить не получится, но может переделаешь под свои нужды.
<?
//$id - ид юзера, которому пишем.
//Сообщения---
$messages=Array();
if($User->id AND $User->id<>$id)
{
$res=$db->prepare("UPDATE messages SET readed='1' WHERE messages.user_to=? AND messages.user_from=?");
$res->execute(Array($User->id,$id));

include_once D.'/inc/func/pages.php';
//Сообщений на страницу
$on_page=40;

//Всего сообщений между пользователями---------
$res=$db->prepare("SELECT COUNT(*) AS cnt FROM messages 
					WHERE (messages.user_to=? AND messages.user_from=?) OR (messages.user_to=? AND messages.user_from=?);");
$res->execute(Array($User->id,$id,$id,$User->id));
if($rw=$res->fetch(A))$kolvo=$rw['cnt'];else $kolvo=0;
//---------------------------------------------

//Листинг страниц--------
$arr=pages_arr($kolvo,$on_page);
$start=$arr['start'];
$vivod['pages']=pages($arr['page'],$arr['max_page'],H.'/user'.$id.'&amp;p={page}');
//-----------------------

//Получаем список сообщений-----
$res=$db->prepare("SELECT messages.*,users.name,users.id AS u_id,users.last_time
					FROM messages,users
					WHERE ((messages.user_to=? AND messages.user_from=?) OR (messages.user_to=? AND messages.user_from=?))
							AND	users.id=messages.user_from						  
					ORDER BY messages.time DESC LIMIT $start,$on_page;");
$res->execute(Array($User->id,$id,$id,$User->id));
	while($rw=$res->fetch(A))
	{
	$rw['time']=unix2human($rw['time']);
	$rw['mes']=nl2br($rw['mes']);
	$messages[]=$rw;
	}
//------------------------------
}
//------------
?>

Добавлено через 01:19 сек.
Вот код отправки сообщения
<?php
  //Отправляем сообщение юзеру---------------
			if($User->id AND isset($_POST['message']) AND $User->id<>$id)
			{
			$message=str2base($_POST['message']);		
			$str_len=utf8_strlen($message);
			if($str_len<2 OR $str_len>500)error('Сообщение может быть от 2х до 500 символов.');
			
			$res=$db->prepare("INSERT INTO messages (user_to,user_from,mes,time) VALUES (?,?,?,UNIX_TIMESTAMP())");
			$res->execute(Array($id,$User->id,$message));
			loc('user'.$id);
			exit;
			}
?>


10. Валерий (30.05.2011 / 14:05)
Ну и структура таблицы

`id` int(11) NOT NULL AUTO_INCREMENT,
`user_from` int(11) NOT NULL,
`user_to` int(11) NOT NULL,
`mes` varchar(1500) NOT NULL,
`time` int(11) NOT NULL,
`readed` set('0','1') NOT NULL DEFAULT '0',

11. Роман (30.05.2011 / 17:58)
9, 10, Спасибо) Буду разбираться..)

12. asterixos (01.06.2011 / 14:19)
Делается это примерно так
<?
//подключаем файл базы данных
include("db.php");
//устанавливаем подключение к базе
openDB();
//создаем sql-запрос к базе
$db=mysql_query("SELECT * FROM твоя_таблица WHERE NICK=\"$NICK\"");
//выводим циклом все сообщения где НИК в таблице равен Нику,кому хотим написать приватно
while($db2=mysql_fetch_assoc($db))
{
echo $db[NICK];
}
?>

Добавлено через 01:08 сек.
правда там еще должен быть скрипт авторизации и сама оболочка куда ты будешь заходить))

URL: https://visavi.net/topics/21970