Центр пользователя  |  Ваши сообщения  |  FAQ
Форум поддержки phpBB » Общие » PHP и MySQL

Вопрос по выборке из БД

Обсуждение вопросов, связанных с разработкой web-систем

Сообщение 30 июл 2009, 22:37

Для форума нужна фича с отметкой о прочтении именно сообщения а не всего топика. Сделал кнопочку, которая передаёт в обработчик текст сообщения обработчику, но вот столкнулся с тем что когда делаеш выборку потом из БД, а именно из таблицы phpbb_posts сравниваются только записи на английском языке! Вот код обработчика
Код: выделить все
$id_post = $_POST["id_post"];
$taim = mysql_escape_string($_POST['today']);
$topic = mysql_escape_string($_POST['topic']);
$user_id = mysql_escape_string($_POST['user']);
$db = mysql_connect("phpBBlight","phpBBlight","phpBBlight");
mysql_select_db("phpBBlight",$db);
$result = mysql_query ("SELECT * FROM phpbb_posts WHERE post_text = '$id_post'");
$myrow = mysql_fetch_array($result);
echo $myrow[post_id];
echo $myrow[poster_id];

Переменной id_post передаю текст самого сообщения через {postrow.MESSAGE}. Понимаю, что проще бы было передать просто id сообщения и по нему уже делать выборку, но не могу понять как его передать, точнее где его взять? Вывести что post_id, что poster_id получается только если сам текст сообщения на английском если на русском, то просто нечего не выводит. Почему так и как с этим бороться?
Pitmen

 

Сообщение 31 июл 2009, 09:39

Pitmen
Чем вам все-таки не угодила переменная шаблона {postrow.POST_ID} и потом выборка из базы по id.

Ваш подход порочен еще и тем, что при двух сообщениях с одинаковым текстом получится полная чепуха.
Самая страшная ошибка - это ошибка без конкретных причин и видимых последствий.

Личка и icq - только для личных вопросов. Консультации в личке оказываю только за плату.
Все остальное будет игнорироваться.
Alek$
Поддержка
 
Сообщений: 262
Зарегистрирован:
28 янв 2009, 16:41
Откуда:
Новосибирск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение 31 июл 2009, 10:35

Alek$ писал(а):Чем вам все-таки не угодила переменная шаблона {postrow.POST_ID} и потом выборка из базы по id.

Ваш подход порочен еще и тем, что при двух сообщениях с одинаковым текстом получится полная чепуха.

Спасибо большое, я вот всё и думал где взять эти переменные шаблона, а именно ID поста! А где вообще находятся эти переменные?
Pitmen

 

Сообщение 31 июл 2009, 10:48

Pitmen
задаются они во viewtopic.php, вызовом $template->assign_block_vars('postrow', ... )
Самая страшная ошибка - это ошибка без конкретных причин и видимых последствий.

Личка и icq - только для личных вопросов. Консультации в личке оказываю только за плату.
Все остальное будет игнорироваться.
Alek$
Поддержка
 
Сообщений: 262
Зарегистрирован:
28 янв 2009, 16:41
Откуда:
Новосибирск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение 31 июл 2009, 12:43

Alek$ писал(а):Ваш подход порочен еще и тем, что при двух сообщениях с одинаковым текстом получится полная чепуха.

А какой подход Вы посоветуете?
Pitmen

 

Сообщение 31 июл 2009, 13:56

Pitmen
Через POST_ID
Самая страшная ошибка - это ошибка без конкретных причин и видимых последствий.

Личка и icq - только для личных вопросов. Консультации в личке оказываю только за плату.
Все остальное будет игнорироваться.
Alek$
Поддержка
 
Сообщений: 262
Зарегистрирован:
28 янв 2009, 16:41
Откуда:
Новосибирск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение 31 июл 2009, 16:06

Alek$ писал(а):Через POST_ID

Впринципе я сейчас и пошол этим путё, сперва через POST_ID переданный методом пост подключился к БД и вывел пользователю инфу, о том что он отметил пост такойто в теме такойто и пр. вот код
Код: выделить все
 header("Content-Type: text/html; charset=utf-8");
 $id = $_POST["id"];
 $post_num = $_POST["post_num"];
 $taim = mysql_escape_string($_POST['today']);
 $topic = mysql_escape_string($_POST['topic']);
 $user_id = mysql_escape_string($_POST['user']);
 $db = mysql_connect("phpBBlight","phpBBlight","phpBBlight");
 mysql_query("SET NAMES UTF8");
 mysql_select_db("phpBBlight",$db);
 $result = mysql_query ("SELECT * FROM phpbb_posts WHERE post_id = '$id'");
 $myrow = mysql_fetch_array($result);
                       <!-- ENDPHP -->
<a href="<!-- PHP -->echo $_SERVER['HTTP_REFERER'];<!-- ENDPHP --> " title="Назад">Вернуться назад.</a><br>

<h2>Отмеченные сообщения</h2>

<div class="panel">
<div class="inner"><span class="corners-top"><span></span></span>

<div class="content">
<p> <h2><a class="titles" href="{U_VIEW_TOPIC}">{TOPIC_TITLE}</a></h2>
<h2>Сообщение </h2><br>
Заголовок сообщения:  "<!-- PHP -->echo $myrow[post_subject];<!-- ENDPHP -->"<br>
"<!-- PHP -->echo $myrow[post_text];<!-- ENDPHP -->"<br><br><h2>   отмечено пользователем <!-- PHP -->echo $user_id;<!-- ENDPHP --> как прочтённое! <p>
<!-- PHP -->echo  $taim;<!-- ENDPHP --></p></h2>
            <!-- PHP -->

Создал таблицу и собираюсь туда заносить данные о том кто и когда какое сообщение пометил, но вот тут и возникла проблемма, не хочет заносить данные и всё, вот код очередной попытки, вроде всё правильно, но почему не заносит?
Код: выделить все
<!-- PHP -->
$id_uzer = mysql_escape_string($myrow[poster_id]);
echo  $id_uzer;
$forum_id = $myrow[forum_id];
$post_id =  $myrow[post_id];
$bd = mysql_connect("phpBBlight","phpBBlight","phpBBlight");
 mysql_select_db("phpBBlight",$bd);
$res = mysql_query ("INSERT INTO phpbb_otmet_post (id_uzer ) VALUES ('$id_uzer')$bd");
if ($res == 'true')
{
echo "Информация в базу добавлена успешно!";

}
else
{
echo "Информация в базу не добавлена!";
}
Pitmen

 

Сообщение 31 июл 2009, 16:13

Потому что у вас вот в этой строчке закрывающая двойная кавычка стоит ге попало:
Код: выделить все
$res = mysql_query ("INSERT INTO phpbb_otmet_post (id_uzer ) VALUES ('$id_uzer')$bd")


Такую тривиальную ошибку можно было бы и самому заметить.
Самая страшная ошибка - это ошибка без конкретных причин и видимых последствий.

Личка и icq - только для личных вопросов. Консультации в личке оказываю только за плату.
Все остальное будет игнорироваться.
Alek$
Поддержка
 
Сообщений: 262
Зарегистрирован:
28 янв 2009, 16:41
Откуда:
Новосибирск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение 31 июл 2009, 17:08

Спасибо, так правильно?
Код: выделить все
$res = mysql_query ("INSERT INTO phpBBlight_otmetpost (id_uzer ) VALUES ('$user_id');");

и ещё там проблема в названии таблицы было почему то 2 _ в названии не воспринималось, убрал и всё заработало!
Pitmen

 

Сообщение 31 июл 2009, 17:12

Pitmen писал(а):так правильно?

Ну, если забить на то, что в phpBB есть свой класс для работы с БД, то да.
Самая страшная ошибка - это ошибка без конкретных причин и видимых последствий.

Личка и icq - только для личных вопросов. Консультации в личке оказываю только за плату.
Все остальное будет игнорироваться.
Alek$
Поддержка
 
Сообщений: 262
Зарегистрирован:
28 янв 2009, 16:41
Откуда:
Новосибирск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.


Вернуться в PHP и MySQL

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Форум поддержки phpBB
2008 - 2017 © BB3x.ru - русская поддержка форума phpBB3
Создано на основе phpBB® Forum Software © phpBB Group
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама