| |
|
|
| | У вас на форуме есть графа АВТОР. Щелкнув по ней открывается окно с информацией о пользователе. Как это выпросчитываете, что именно этому пользователю соответствует данная информация? Я хочу у себя в гостевой сделать тоже типо этого. Помогите мне пожалуйсто. | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 22:32)
| | | у каждого автора есть свой идентификационный номер, который в данном случае методом GET передается скрипту-обработчику ... этот скрипт исходя из полученного id выводит информацию о конкретном пользователе
http://softtime.ru/forum/info.php?id_forum=1&id_author=3865 | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(09.08.2006 в 22:34)
| | | а id получает он (автор) при регестрации на сайте и хронится в куках? Так ведь? | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 22:49)
| | | да, в большенстве случаев это auto_increment поле базы данных ... то есть при добавлении в базу новых данных, значение увеличивается на один автоматически ... ну, можно сказать, это порядковый номер пользователя ... здесь так и написано "Порядковый номер"
а хранится он не обязательно в куках .. там его даже может и не быть ... пригенерации страницы для каждого автора из базы данных выбирается его id, который помещается в сцылку
<a class=authorreg href=info.php?id_forum=1&id_author=3865>Roo$</a>
ну важно тут только "id_author=3865"
|
ведь посмотреть инфу о пользователе может не только зарегистрированный участник (так и хочется "учаснег" написать =)) - это я о куках .. они тут ни причем ...
зы: а вообще, здесь, на форуме, все сообщения хранятся в базе данных .. для каждого сообщения известен id написавшего его пользователя .. который собсно и подставляется в ссылку. | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(09.08.2006 в 22:59)
| | | А каким образом выбирается id автора из БД? | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 23:19)
| | | //зы: а вообще, здесь, на форуме, все сообщения хранятся в базе данных ..
//для каждого сообщения известен id написавшего его пользователя ..
//который собсно и подставляется в ссылку.
Вобщем так :) ... в базе данных отдельно от сообщений хранятся названия темы, каждое имеет свой id .. отдельно хранятся сообщения, у каждого сообщения есть свой id и id темы, к которой принадлежит это сообщение... кроме того для каждого сообщения хранится id написавшего его автора ... (а имя скорее всего выбирается исходя из этого id, дополнительным запросом в базу данных ... в таблицу пользователей, где хранится информацыя о пользователе .. исходя из этого id ищется имя автора, и все остальное, если нужно... хотя я точно не могу сказать - не смотрел скрипты данного форума)
вобщем в для кождого сообщения хранится сам текст сообщения, id автора, время создания и прочее .. | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 23:19)
| | | А каким образом выбирается id автора из БД?
Обычно по ID ищут, его из БД не достают, он как раз для взятия информации о пользователе из БД и нужен. | |
| |
|
|
| |
|
|
| |
для: Unkind™
(09.08.2006 в 23:30)
| | | Полностью согласен с тобой. Но, мне сказали что его раздают автоматически при гинерации страницы. Вот и я хочу узнать как это возможно. Нужно, наверное оталкиваться от чегота? | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 23:34)
| | | кто мог такое сказать o_O ??? =))
неужели не понятно написал? эх .. так старался :))) | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(09.08.2006 в 23:37)
| | | Извините пож., не так вырозился.... Они выбираются (id)... Каким образом? | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 23:39)
| | | хех, ну ты даешь .. :)
//вобщем в для кождого сообщения хранится сам текст сообщения,
//id автора, время создания и прочее ..
тоесть для каждого сообщения известен ид создавшего его пользователя .. его выбирать толком то и не нужно, все под рукой ..
например, можно хранить сообщения в таком виде
id || id_автора || id_темы_к_которой_принадлежит_сообщение || само_сообщение | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 23:39)
| | | Смотрел щас куки (softtime), там есть такое слово PHPSESSID с длинными цифраим. Они играют какуюнибудь роль (для выбирания id)? | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 23:43)
| | | да нет же, не играют ! :))
смотри как строится тема:
идет цикл, при которором выбираюся все сообщения с идентификатором данной темы. Затем рассматривается каждое выбранное сообщение ... составляется таблица, куда записываются данные .. а id написавшего автора для каждого сообщения известен! | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(09.08.2006 в 23:46)
| | | а вообще наверно надо было начинать не с этого ... как хранятся записи в твоей гостевой книге ?? в базе данных или файлах ? и в каком виде? | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(09.08.2006 в 23:46)
| | | Теперь понял... Допустим у меня сообщения в гост.книге хрогятся в файлах. Как мне тогда вывести информацию о любом пользователе? | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 23:52)
| | | Все пользователи гостевой книге хронятся в БД (id, name, pass,...) | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 23:55)
| | | странно вообще поступил .. авторы в базе, а сообщения в файлах .. хм :)
а как вообще сообщения хранятся, только текст чтоли? каким образом они тогда выводятся? автор же должен быть известен o_O
если принципиально нужно работать с файлами, то можно хранить сообщения допустим так:
id_автора|||время создания|||текст_сообщения
"|||" - это разделитель, может быть любой ..
ну время создания конечно же не обязательно .. можно туда чего хочешь запихнуть .. перед выводом конечно же нужно обработать .. и выводить только "текст_сообщения" | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(09.08.2006 в 23:58)
| | | Ты не понял.. Гостевая хронит данные в файлах следующим образом...
Name
date time
messages
А информацию о пользователях я хочу выкидывать из БД | |
| |
|
|
| |
|
|
| |
для: Roo$
(10.08.2006 в 00:03)
| | | да все я понял :) ... это я и имел ввиду, только формат немного другой ..
....................
... сижу думаю .....
..................
мдеее .. вон что ты имел ввиду говоря "и хронится в куках?" ...
тебя интересует, как узнать id написавшего сообщения при выводе или при добавлении сообщения? при выводе он вообще-то должен быть известен (у тебя вместо "Name" можно было записывать как раз этот id .. или не вместо ... перед именем например)
а вообще я запутался чесно говоря :( ... как ты узнаешь имя автора? автор сам его себе выбирает (если так, то с таким же успехом можно подобрать себе и id ) или оно берется из куков?
при авторизации можно в куки помещать имя, можно id ...
в куках ид нужен (можно обойтись и без него, конечно ... и проверить его не мешало бы) при добавлении сообщения
а при выборке он будет уже известен
здесь на форуме в куках хранится имя, ид выбирается по имени, наверное ... | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(10.08.2006 в 00:13)
| | | У меня авторизация и основана какрас на куках. Там я хроню имя и пароль. Эти данные я сверяю с данными в БД. Если добавить туда (в куки) id, что у нас получится? Информацию о других пользователях я не смогу просмотреть? | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(10.08.2006 в 00:13)
| | | вобщем имя у тебя известно ..
делаешь запрос в базу типа "SELECT id FROM users WHERE name=$name" и будет тебе id .. (если у пользователей он есть в твоей базе ... а не только username и pass) | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(10.08.2006 в 00:24)
| | | Id есть в БД моей.. | |
| |
|
|
| |
|
|
| |
для: Roo$
(10.08.2006 в 00:25)
| | | ну и славненько :)))
при выводе сообщения у тебя известно имя (которое хранится в файле) .. делаем запрос в базу данных
"SELECT id FROM users WHERE name=$name"
и id тоже известен .. далее наверно ты уже понял сам
и менять ничего не надо (хотя я бы лучше сообщения в базе данных хранил) | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(10.08.2006 в 00:28)
| | | Нет... | |
| |
|
|
| |
|
|
| |
для: Roo$
(10.08.2006 в 00:30)
| | | не, у тебя будет как раз id автора сообщения .. допустим он сидит в переменной $id
больше тебе ничего не надо .. при выводе сообщения имя автора делаешь ссылкой типа вот этого
<a href=info.php?id_author=3865>Roo$</a>
и все, больше ничего не надо ...
потом нужен скрипт, показывающий инфу о пользователе .. собсно сам info.php
скрипт типа этого (пример)
<?
$id = ereg_replace ("[^0-9]", "", $_GET['id']); // ид - это только цифры .. для безопасности
$query = "SELECT * FROM users WHERE id='$id'"; // запрос для выборки инфы о юзере
$usr = mysql_query($query); // выполняем запрос
$user = mysql_fetch_array ($usr); // создаем массив
$user_name = $user['name']; // выбираем из массива имя пользователя
$user_еще_всякая_инфа = $user['*******']; // еще чего-нить, если есть
echo " ************** "; // все выводим
?>
|
| |
| |
|
|
| |
|
|
| |
для: kasmanaft
(10.08.2006 в 00:39)
| | | Я щас буду пробывать... Если че, наверное сегодня уже поздно, буду завтра "мучить" тебя. Ок? | |
| |
|
|
| |
|
|
| |
для: Roo$
(10.08.2006 в 00:50)
| | | хех, ок :))
пробуй, должно получиться!
если что, кто-нибудь обязательно поможет.
ЗЫ: и в правду спать уже пора =) (у меня почти 3 уже)
Удачи! | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(10.08.2006 в 00:54)
| | | У меня что то не получается.... Вот что у меня на данный момент есть..
echo "<a href=info.php?id_user=$id> ".$login"</a>";
Где $id это id пользователя в базе данных. Я его получил следующим образом:
$query = "SELECT id_user FROM userlist WHERE name='$login'";
$nme = mysql_query($query);
$id = mysql_result($nme, 0);
Когда я навожу курс.мышки на данную ссылку, то высвечивается ссылка info.php?id_user=
Почему? Ведь по идеи должно быть info.php?id_user=2 (3,4,5....... id пользователя) | |
| |
|
|
| |
|
|
| |
для: Roo$
(10.08.2006 в 21:51)
| | | Cheops подскажи!!!!! | |
| |
|
|
| |
|
|
| |
для: Roo$
(10.08.2006 в 21:51)
| | | Замените блок
<?php
$query = "SELECT id_user FROM userlist WHERE name='$login'";
$nme = mysql_query($query);
$id = mysql_result($nme, 0);
?>
|
следующим образом
<?php
$query = "SELECT id_user FROM userlist WHERE name='$login'";
$nme = mysql_query($query);
if(!$nme) exit(mysql_erorr());
$id = mysql_result($nme, 0);
?>
|
Что выводит? | |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2006 в 00:49)
| | | Все по прежнему. Нет того результата, что нужно. Я выше описал структуру записи данных в файл. Читаю я их следующим образом:
$file[0] - это имя польз.
$file[1] - дата
$file[2] - сообщение
Исходя отсюда я запрос делаю так:
$query = "SELECT id_user FROM userlist WHERE name='$file[0]";
Но так ничего не происходит. | |
| |
|
|
| |
|
|
| |
для: Roo$
(11.08.2006 в 00:58)
| | | Поставьте проверку после выполенения SQL-запроса функцией mysql_query(), как описано двумя постами выше - нигде ошибки не происходит в SQL? | |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2006 в 01:16)
| | | Поставил, ошибок нигде нет... но и результата нет
info.php?id_user=
Может из-за того что это я все делаю в отдельной функции Readmessages? | |
| |
|
|
| |
|
|
| |
для: Roo$
(11.08.2006 в 01:21)
| | | Вполне такое может быть - вы параметры функции передаёте? | |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2006 в 02:13)
| | | Наверное нет. Потому что у меня в функции вообще не работает SQL. Вообще ни какую информацию из базы даных он не выводит. А что нужно указать, в качестве параметров? | |
| |
|
|
| |
|
|
| |
для: Roo$
(11.08.2006 в 19:14)
| | | Можно твой readmessages поглядеть ?
Есть идея, что нужно сделать $login = trim($login) ... так, телепатически ... конечно же, могу ошибаться ...
(нужно поглядеть функцию, и судя по ней уже говорить о нужных параметрах ;)) | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(11.08.2006 в 19:20)
| | | Вот index.php, в ней есть эта функция.... | |
| |
|
|
| |
|
|
| |
для: Roo$
(11.08.2006 в 19:24)
| | | Да, наверняка, надо сделать trim(username) ....
то есть поступить примерно так:
$user_name = $file[0];
$user_name = trim($user_name);
$query = "SELECT id_user FROM userlist WHERE name='$user_name'";
$nme = mysql_query($query);
if(!$nme) exit(mysql_erorr());
$id = mysql_result($nme, 0);
|
| |
| |
|
|
| |
|
|
| |
для: kasmanaft
(11.08.2006 в 19:48)
| | | Работает!!!!!!!!!!!!!!!!! Большое спасибо!!!!!!!!! | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(11.08.2006 в 19:48)
| | | А теперь в info.php, тоже надо что то переделовать...? | |
| |
|
|
| |
|
|
| |
для: Roo$
(11.08.2006 в 19:57)
| | | Вроде и так должно работать ..
Так нужно было сделать потому что в файле после имени пользователя стоит знак переноса строки ( \n или \r\n ) , который нужно отбросить, т.к. в базе данных имя пользователя записано без него. Это и делает ф-я trim | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(11.08.2006 в 20:00)
| | | У меня вылетает ошибка
Notice: Undefined index: name in c:\inetpub\wwwroot\authorization\guest2\info.php on line 7
Сам файл info.php выгледит так
<?
include "../config.php";
$id = ereg_replace ("[^0-9]", "", $_GET['id_user']);
$query = "SELECT id_user FROM userlist WHERE id_user='$id'";
$usr = mysql_query($query);
$user = mysql_fetch_array ($usr);
$user_name = $user['name'];
echo $user_name;
?> | |
| |
|
|
| |
|
|
| |
для: Roo$
(11.08.2006 в 20:18)
| | | Все понял, просто надо было сделать так $query = "SELECT * FROM userlist WHERE id_user='$id'";
Огромное спасибо kasmanaft за помощь..... | |
| |
|
|
| |
|
|
| |
для: Roo$
(11.08.2006 в 20:30)
| | | Теперь, объясните, каким образом можно сделать в инфе о пользователе... пункты "Число сообщений" и "Последний вход в гостевую комнату" | |
| |
|
|
| |
|
|
| |
для: Roo$
(11.08.2006 в 21:28)
| | | хех, ну а если подумать ? ;))
1) либо прямым способом считать сообщения (увеличивать счетчик при добавлении), либо тупым перебором открывать каждый файл и считать
2) собсно слов нет ... надо записывать время куда-нибудь .. чтож тут еще придумать ;) | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(11.08.2006 в 23:47)
| | | Время я хочу записывать в БД полльзователей (userlist). Создать там еще одну калонку и записывать туда время его посещения. Можно так? А кол-во сообщений... тоже может так? | |
| |
|
|
| |
|
|
| |
для: Roo$
(12.08.2006 в 00:07)
| | | ну да ... все туда наверно и записывай .. все, относительно юзеров | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(12.08.2006 в 14:59)
| | | Давай попробуем записать время последнего посещения пользователя в БД. Как оно примерно будет выглядить? | |
| |
|
|
| |
|
|
| |
для: Roo$
(12.08.2006 в 18:22)
| | | Как хочешь, так и будет выглядеть :))
Я бы посоветовал записывать timestamp (секунды от 1970 года) .. то есть time() ... записывать в базу данных перед отображением страницы
Дату формировать при помощи функции date ( *** ) | |
| |
|
|
| |
|
|
| |
для: Roo$
(12.08.2006 в 00:07)
| | | Ты строишь проект не правильно. Надо сначало продумать какие функции будет выполнять проект а потом его писать. Начинать конечно же с разментки базы данных.
попробуй начать заного и разметить отделные таблицы для отдельных нужд. например
posts
id | title | post | date | posted_user | posted_id
id - айди записи (поста) автоинкремент, int(10)
title - заголовок сообщения, varchar(255)
post - само сообщение, text
date - дата отправки этого сообщения, int(10) (советую пользоваться отметками вемени юникс)
posted_user - имя человека оставившего сообщение, varchar(250) (по сути дубликат колонки из следущей таблицы, но этот шаг ускорит работу и уменьшит запрос)
posted_id - айди человека который оставил запись
users
id | name | pwd | reg_date | last_visit
id -без комментариев =)
name - имя (логин), varchar(250)
pwd - пароль. например в модном МД5 =), varchar(33)
reg_date - дата регистрации, int(10)
last_visit - дата последнего визита, int(10)
user_extra
id | mem_id | avatar | signature
id -без комментариев =)
mem_id - айди совпадающий с колонкой айпи в таблице users
avatar - аватарка пользователя и т.д.
в эту таблицу можно наприхать всего что пользователь введет при регистрации, джае его ориентацию :) | |
| |
|
|
| |
|
|
| |
для: Равечка
(12.08.2006 в 16:20)
| | | >name - имя (логин), varchar(250)
>pwd - пароль. например в модном МД5 =), varchar(33)
>reg_date - дата регистрации, int(10)
>last_visit - дата последнего визита, int(10)
имя длинной в 250 символов?
если пароль в модном мд5 то почему длинна 33 а не 32
даты TIMESTAMP | |
| |
|
|
| |
|
|
| |
для: RV
(12.08.2006 в 18:36)
| | | имхо имена разные бывают, насчет мд 5 опечаталась. а насчет таймстмп - это тупизм. | |
| |
|
|
| |
|
|
| |
для: Равечка
(12.08.2006 в 21:29)
| | | имена бывают разные. дай волю и пользователи дадут имя длиннее чем 250 символов.
32 символа во всех нормальных скриптах.
и чем не нравится timestamp ? | |
| |
|
|
| |
|
|
| |
для: Roo$
(09.08.2006 в 22:32)
| | | Тема слишком длинная, если что-то осталось не выясненным давайте заведём новую тему. | |
| |
|
|