Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: php/mysql сообщения пользователей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
MBmusic
Отправлено: 22 Октября, 2011 - 19:25:03
Post Id


Посетитель


Покинул форум
Сообщений всего: 481
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




всем привет) в общем такой вопрос:
мне нужно сделать систему отправки сообщений на стену, ну типо как вконтакте(wall.posts), типо что бы пользователь не обязательно зарегистрирован мог зайти к зарегистрированому пользователю на страницу и написать сообщение которое публикуется на его странице......
отправленные сообщения должны "знать" своих пользователей, ну типо что бы сообщение отпрвленное конкретному пользователю, относилось непосредственно к нему)
у меня есть база данных с двумя таблицами
таблица users где хранится инфа о зареганых пользователях, с полями:
user_id
username
email
password

таблица messages где хранятся сообщения пользователей, с полями:
id
text1
date

в общем написаные сообщения заносятся в таблицу messages......мне говорили что типо надо создать в таблице сообщений дополнительное поле, куда будут записыватся id пользователей кому адресованы сообщения, пробовал так делать, но мне так и никто не помог написать правильный запрос на запись в базу id из другой таблицы......еще говорили что можно это сделать както через невидимое поле, и с помощью jquery присваивать сообщения id получившых пользователей и сразу же выводить их на стену, (кстате по такой технологии сделаны соц сети facebook и вк)......но тоже както смутно обьяснили, да и не получилось у меня так сделать......так что помогите плз кто знает как это делать))
 
 Top
Данил_123
Отправлено: 22 Октября, 2011 - 19:34:16
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




Вы соц. сеть пишите? Ну правильно говорили.. Это нужно для того чтоб определить отправителя.. Выложите код, поглядим, что можно сделать


-----
http://mysitecost.ru
 
 Top
MBmusic
Отправлено: 22 Октября, 2011 - 19:50:01
Post Id


Посетитель


Покинул форум
Сообщений всего: 481
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




нет, я не соц сеть делаю) просто появилась идейка сайтика, решил чтото динамическое замутить с регистрацией пользователей и стеной с постами...

что касается первого варианта с добавлением поля для id пользователей......
в общем я создал в таблице messages поле user_id в которое должны записыватся id пользователей из другой таблицы users, и соответственно выводится потом для каждого пользователя свои сообщения
вот запрос на запись в базу сообщения и соответственно в новое user_id запись id поьзователя из другой таблицы:

$queryreg = mysql_query("INSERT INTO `messages` (`text1`, `date`, `user_id`) VALUES ('$text1', '$date', '$user_id')");

но запрос неработает, незаписывает в базу id пользователей......
второй способ(мне он больше нравится, я больше склоняюсь к нему), это через jquery, токо хз как))
в общем при добавлении сообщения на стену, должно приписывать сообщению id поьзователя кому было отправлено сообщение...

<table style='padding-bottom:20px;' id="65">
...
...
...
</table>

вот типо отправленное сообщение, как видно id="65", это id пользователя получившего сообщение, но есть проблемка) при добавлении сообщения приписывает id первого пользователя в базе, неважно какому пользователю отправлять сообщение, всегда буит приписывать первому......
вот что я примудрил)) :

<table style='padding-bottom:20px;' id="
<?php
$ot = mysql_query ("SELECT * FROM `users` WHERE `user_id`=`user_id`");
$ress = mysql_fetch_array ($ot);
echo $ress['user_id'];

?>
">
...
...
...
</table>

и пока не получается сделать что бы сообщения "знали" своих пользователей), и сам jquery скрипт который буит генерить отправленные сообщения......мб ктото сможет помочь))?

(Отредактировано автором: 22 Октября, 2011 - 19:52:44)

 
 Top
Данил_123
Отправлено: 22 Октября, 2011 - 20:32:05
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




впринципе можно сделать, если что этот пост редокну.. Есть идейка


-----
http://mysitecost.ru
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Октября, 2011 - 21:30:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




MBmusic пишет:
можно это сделать както через невидимое поле
Из темной материи..
MBmusic пишет:
никто не помог написать правильный запрос на запись в базу id из другой таблицы

PHP:
скопировать код в буфер обмена
  1. $user_id = 4567;
  2. $message = "Шышел пышел...";
  3. mysql_query("INSERT INTO messages (id,user_id,text1,`date`)
  4.    VALUES (NULL,$user_id,'$message',NOW())");

(Добавление)
MBmusic пишет:
второй способ(мне он больше нравится, я больше склоняюсь к нему), это через jquery
Ага... jquery прямо так с базой умеет работать.
(Добавление)
MBmusic пишет:
вот что я примудрил)) :
Выкинуть и забыть как самый страшный срам в жизни.
(Добавление)
Итак. Две таблицы.
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS users (
  2.   id BIGINT NOT NULL AUTO_INCREMENT,
  3.   name CHAR(128) NOT NULL,
  4.   PRIMARY KEY (id)
  5.   )
  6.   ENGINE = MYISAM;

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS messages (
  2.   id BIGINT NOT NULL AUTO_INCREMENT,
  3.   user_id BIGINT NOT NULL,
  4.   theme CHAR(255) NOT NULL,
  5.   mess TEXT NOT NULL,
  6.   mdate DATETIME NOT NULL,
  7.   PRIMARY KEY (id)
  8.   )
  9.   ENGINE = MYISAM;


Запись нового сообщения:
CODE (SQL):
скопировать код в буфер обмена
  1. INSER INTO messages (id,user_id,theme,mess,mdate)
  2.   VALUES (NULL,$user_id,'тема сообщения','Шышел пышел..',NOW())

Тащим сообщения сразу с именами юзеров, по 30 на страницу:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT m.theme,m.mess,m.mdate,u.name
  2.   FROM messages m
  3.   LEFT JOIN users u ON u.id = m.user_id
  4.   ORDER BY m.mdate DESC LIMIT 0,30


Поправил кой чего...

(Отредактировано автором: 22 Октября, 2011 - 21:47:01)

 
 Top
MBmusic
Отправлено: 22 Октября, 2011 - 21:55:18
Post Id


Посетитель


Покинул форум
Сообщений всего: 481
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




эмм, написал ваш запрос, работает не коректно......в базу то записывает все, но наоборот) в поле даты записывает сам пост, а в поле поста дату, а вместо самого поста выводит 4567)....ну это не важно) важно то что я не знаю как сделать что бы считывался id пользователя и записывался в базу, в вашем случае id для всех пользователей буит 4567, но это же не коректно......а что касается jquery то я хотел сказать что параметры из php можно передавать в скрипт и наоборот......както так)
(Добавление)
нашел примерно то что мне нужно, вот видосик http://wall[dot]9lessons[dot]info/
хотелось бы чето в таком стиле) но токо без фоток и прочей тухты, только текстовые сообщения
 
 Top
Данил_123
Отправлено: 22 Октября, 2011 - 22:36:54
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




Все написал, не знаю робит, нет.. Не проверял изменил структуру базы.. Можешь обратно поменять:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /* Этот скрипт выводит сообщения */
  3. $id=$_SESSION['user_id'];
  4. /* Переменые mysql */
  5. $mysql_login="root";
  6. $mysql_passwd="12345";
  7. $dbname="user";
  8. $table_text="messages";
  9.  
  10. /* конект к базе*/
  11. MYSQL_CONNECT("localhost","$mysql_login","$mysql_passwd") or die ("Невозможно подключиться к базе");
  12. MYSQL_SELECT_DB($dbname) or die ("Невозможно выбрать базу данных");
  13. $num_post=0;
  14. $query=mysql_query("SELECT * FROM $table_text WHERE $id=`id`"); //сомневаюсь в этой строчке
  15. if(!$query) echo "Нет возможности выдать посты";
  16. else
  17. {
  18. while($rows = mysql_fetch_array($query));
  19.  
  20. echo $rows['login'];
  21. echo '</h2>';
  22. echo "Сообщение";
  23. echo $row['text'];
  24. echo 'Отправлено ';
  25. echo $row['data'];
  26. echo 'В';
  27. echo $row['time'];
  28. }
  29. ?>


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /* Этот скрипт, записывает, информацию о сообщение */
  3. /* Переменые mysql */
  4. $mysql_login="root";
  5. $mysql_passwd="12345";
  6. $dbname="user";
  7. $table_text="messages";
  8.  
  9. /* Пачка переменых */
  10. $date_today = date("d.m.y");
  11. $today[1] = date("H:i:s"); // время добавления, только в мукуле столбец добавь
  12. $login = $_SESSION['login']; // логин отправителя
  13. $login_to=$_POST['login_to']; // логин получателя
  14. $text=$_POST['text'];
  15.  
  16. /* конект к базе*/
  17. MYSQL_CONNECT("localhost","$mysql_login","$mysql_passwd") or die ("Невозможно подключиться к базе");
  18. MYSQL_SELECT_DB($dbname) or die ("Невозможно выбрать базу данных");
  19.  
  20. $query="INSERT INTO $table_text($login,'$login_to','$text','$data', '$time')"; // запись в базу
  21. $result=MYSQL_QUERY($query);
  22. if($result) echo "Запись добавлена";
  23. if(!$result) echo "Запись не добавлена";
  24. ?>


База имеет структуру:login,login_to,text,data,time
(Добавление)
Проверь отпишись


-----
http://mysitecost.ru
 
 Top
MBmusic
Отправлено: 23 Октября, 2011 - 18:58:18
Post Id


Посетитель


Покинул форум
Сообщений всего: 481
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




в запросе на запись нету поля id, тоесть мы не записываем в базу id пользователя отправившего сообщение......врядле будет работать, у меня тоже самое в коде что и у вас...
 
 Top
Данил_123
Отправлено: 23 Октября, 2011 - 19:28:58
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




это то что нужно.. Не использую id можно сразу увидеть кому и от кого сообщение.. Да и структуру таблицы я поменял, обрати внимание


-----
http://mysitecost.ru
 
 Top
MBmusic
Отправлено: 25 Октября, 2011 - 20:46:59
Post Id


Посетитель


Покинул форум
Сообщений всего: 481
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




короч сделал такую штуку:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $user_id = mysql_query ("SELECT user_id FROM users WHERE username='$username'");

здесь я переменной присвоил из другой таблицы id пользователя
и после этого делаю запись в другую таблицу
CODE (htmlphp):
скопировать код в буфер обмена
  1. $queryreg = mysql_query("INSERT INTO `messages` (`text1`, `date`, `user_id`) VALUES ('$text1', '$date', '$user_id')");


но в таблице в поле user_id вместо id записывает что попало, а именно Resource id #8......
что это такое?)

(Отредактировано автором: 25 Октября, 2011 - 20:47:31)

 
 Top
Данил_123
Отправлено: 26 Октября, 2011 - 15:35:54
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




Это

замени на это
В скрипте вывода


-----
http://mysitecost.ru
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB