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
Форумы портала PHP.SU :: Версия для печати :: php/mysql сообщения пользователей
Форумы портала PHP.SU » » Вопросы новичков » php/mysql сообщения пользователей

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

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

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

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

что касается первого варианта с добавлением поля для 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 скрипт который буит генерить отправленные сообщения......мб ктото сможет помочь))?
4. Данил_123 - 22 Октября, 2011 - 20:32:05 - перейти к сообщению
впринципе можно сделать, если что этот пост редокну.. Есть идейка
5. DeepVarvar - 22 Октября, 2011 - 21:30:19 - перейти к сообщению
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


Поправил кой чего...
6. MBmusic - 22 Октября, 2011 - 21:55:18 - перейти к сообщению
эмм, написал ваш запрос, работает не коректно......в базу то записывает все, но наоборот) в поле даты записывает сам пост, а в поле поста дату, а вместо самого поста выводит 4567)....ну это не важно) важно то что я не знаю как сделать что бы считывался id пользователя и записывался в базу, в вашем случае id для всех пользователей буит 4567, но это же не коректно......а что касается jquery то я хотел сказать что параметры из php можно передавать в скрипт и наоборот......както так)
(Добавление)
нашел примерно то что мне нужно, вот видосик http://wall[dot]9lessons[dot]info/
хотелось бы чето в таком стиле) но токо без фоток и прочей тухты, только текстовые сообщения
7. Данил_123 - 22 Октября, 2011 - 22:36:54 - перейти к сообщению
Все написал, не знаю робит, нет.. Не проверял изменил структуру базы.. Можешь обратно поменять:
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
(Добавление)
Проверь отпишись
8. MBmusic - 23 Октября, 2011 - 18:58:18 - перейти к сообщению
в запросе на запись нету поля id, тоесть мы не записываем в базу id пользователя отправившего сообщение......врядле будет работать, у меня тоже самое в коде что и у вас...
9. Данил_123 - 23 Октября, 2011 - 19:28:58 - перейти к сообщению
это то что нужно.. Не использую id можно сразу увидеть кому и от кого сообщение.. Да и структуру таблицы я поменял, обрати внимание
10. MBmusic - 25 Октября, 2011 - 20:46:59 - перейти к сообщению
короч сделал такую штуку:
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......
что это такое?)
11. Данил_123 - 26 Октября, 2011 - 15:35:54 - перейти к сообщению
Это

замени на это
PHP:
скопировать код в буфер обмена
  1. $login=$_SESSION['login'];
В скрипте вывода

 

Powered by ExBB FM 1.0 RC1