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.SU

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


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

> Описание: Выборка данных из БД форума!
Pitmen
Отправлено: 30 Июля, 2009 - 17:28:12
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июнь 2009  


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




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

Переменной id_post передаю текст самого сообщения. Вывести что post_id, что poster_id получается только если сам текст сообщения на английском если на русском, то просто нечего не выводит. Почему так и как с этим бороться?
 
 Top
Viper
Отправлено: 30 Июля, 2009 - 19:08:15
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




mysql_query("SET NAMES cp1251"); после mysql_connect

если у вас phpBB2. если 3 то там UTF и должно работать норм по-умолчанию. иначе попробуйте UTF8

(Отредактировано автором: 30 Июля, 2009 - 19:10:10)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Pitmen
Отправлено: 30 Июля, 2009 - 19:49:34
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июнь 2009  


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




Viper
Знаеш не помогло, у меня phpBB 3 и я малость в нём запутался! Если разбираешся в нём то помоги, хоть в каком направлении копать.
Вот код кнопки из сообщения, может там что то не так?
CODE (text):
скопировать код в буфер обмена
  1. <form name="otm_1" action="otmetca_1.php" method="POST" enctype="multipart/form-data"><input type="hidden" name="id_post" value="{postrow.MESSAGE}"><input type="hidden" name="user" value="{S_USERNAME}"><input type="hidden" name="today" value="<!-- PHP --> echo $today;<!-- ENDPHP -->"><input type="hidden" name="post_num" value="{postrow.POST_SUBJECT}"><input type="submit" name="otp_11" href="./otmetca_1.php"value="Отметить прочтённым">

{postrow.MESSAGE} это текст сообщения, понимаю, что проще бы было передать просто id сообщения и по нему уже делать выборку, но не могу понять как его передать, точнее где его взять?
 
 Top
Viper
Отправлено: 31 Июля, 2009 - 07:24:36
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




сделайте
echo '<pre>';
print_r($_POST);
echo '</pre>';

посмотрите что приезжает при загрузке страницы, возможно id там. или вместо $_POST, можно $_REQUEST попробовать отловить оттуда.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Pitmen
Отправлено: 31 Июля, 2009 - 08:45:47
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июнь 2009  


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




Viper
Спасибо за подсказку, вот применинил, при $_POST выдаёт такое
Цитата:
Array
(
[id] =>
[id_post] => Это пример сообщения ..............
[user] => bill
[today] => 2009 - 07 - 31 8:29:16
[post_num] => Добро пожаловать в phpBB3
[otp_11] => Отметить прочтённым
тоесть то что я и передаю через кнопку, а когда подставляю $_REQUEST, то
Цитата:
Array
(
[id] =>
[id_post] => Это пример сообщения ................
[user] => bill
[today] => 2009 - 07 - 31 8:37:23
[post_num] => Добро пожаловать в phpBB3
[otp_11] => Отметить прочтённым
[style_cookie] => null
[phpbb3_6lgnu_u] => 58
[phpbb3_6lgnu_k] =>
[phpbb3_6lgnu_sid] => 83b5d3eae4d6754a9a99503efe02d88a
)
То чуть побольше инфы Ну а на странице отправки $_REQUEST выдаёт оч мало инфы
Цитата:
Array
(
[f] => 2
[t] => 1
[sid] => eb78e162654d5487ff24807caae2bc57
)
$_POST вообще нечего не даёт! В чистом виде ID сообщения негде не виден!
 
 Top
Viper
Отправлено: 31 Июля, 2009 - 12:10:43
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




хм... откуда-то же оно его знает... нуно полазить в phpbb3 тогда смогу сказать.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Pitmen
Отправлено: 31 Июля, 2009 - 12:34:18
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июнь 2009  


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




А что вот это
Цитата:
[sid] => eb78e162654d5487ff24807caae2bc57
может через него?
 
 Top
Viper
Отправлено: 31 Июля, 2009 - 13:54:51
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Pitmen пишет:
А что вот это

идентификатор сессии


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Pitmen
Отправлено: 31 Июля, 2009 - 15:41:34
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июнь 2009  


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




Нашол переменную шаблона {postrow.POST_ID}, это Id поста, передал его через пост в обработчик, там сделас сравнение и выборку, всё ок, вот код
PHP:
скопировать код в буфер обмена
  1. header("Content-Type: text/html; charset=utf-8");
  2. $id = $_POST["id"];
  3. $post_num = $_POST["post_num"];
  4. $taim = mysql_escape_string($_POST['today']);
  5. $topic = mysql_escape_string($_POST['topic']);
  6. $user_id = mysql_escape_string($_POST['user']);
  7. $db = mysql_connect("phpBBlight","phpBBlight","phpBBlight");
  8. mysql_query("SET NAMES UTF8");
  9. mysql_select_db("phpBBlight",$db);
  10. $result = mysql_query ("SELECT * FROM phpbb_posts WHERE post_id = '$id'");
  11. $myrow = mysql_fetch_array($result);
там потом вывод типа Пользователь такой то отметил сообщение такое и прочая лабуда, всё работает. Создал таблицу в БД, хочу туда заносить данные, что бы потом можно было посмотреть кто когда отметился, но вот тут то и застопорился нечего не заносится вот код
PHP:
скопировать код в буфер обмена
  1. $id_uzer = mysql_escape_string($myrow[poster_id]);
  2. echo  $id_uzer;
  3. $forum_id = $myrow[forum_id];
  4. $post_id =  $myrow[post_id];
  5. $bd = mysql_connect("phpBBlight","phpBBlight","phpBBlight");
  6. mysql_select_db("phpBBlight",$bd);
  7. $res = mysql_query ("INSERT INTO phpbb_otmet_post (id_uzer ) VALUES ('$id_uzer')$bd");
  8. if ($res == 'true')
  9. {
  10. echo "Информация в базу добавлена успешно!";
  11.  
  12. }
  13. else
  14. {
  15. echo "Информация в базу не добавлена!";
  16. }

Вчём может быть проблема?
(Добавление)
Разобрался проблема была в самой БД, точнее в её названии почемуто 2 _ не воспринималось, интересно почему?
 
 Top
Viper
Отправлено: 31 Июля, 2009 - 16:04:50
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




('$id_uzer')$bd это вообще что ?
если кол-во полей в запросе не соответствует реальным в таблице, то ничего и не запишет.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Pitmen
Отправлено: 31 Июля, 2009 - 16:59:44
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июнь 2009  


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




Да разобрался всё пишет, а с переменными сам иногда путаюсь Радость $bd - второе подключение. Вот теперь вопрос, создал таблицу туда заношу ид сообщения и ид пользователя отметившего его, хочу подключившись кней вытянуть ид сообщения и уже подключившись к другой таблице вытянуть инфу про это сообщение, но только как это потом оформить в цикл, что бы выводилось на подобии "последнии сообщения"
 
 Top
Pitmen
Отправлено: 03 Августа, 2009 - 18:19:37
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июнь 2009  


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




Обьясните плиз, как правильно подключится к двум таблицам в БД и сделать сравнение и потом выборку по условию?
 
 Top
Мелкий Супермодератор
Отправлено: 03 Августа, 2009 - 19:57:07
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Pitmen пишет:
Обьясните плиз, как правильно подключится к двум таблицам в БД и сделать сравнение и потом выборку по условию?

Чего сравнивать хотите?
CODE (text):
скопировать код в буфер обмена
  1. select * from table1,table2 where t1.table1=t2.table2

Выберет все строки с совпадающими значениями полей t1 и t2.


-----
PostgreSQL DBA
 
 Top
Pitmen
Отправлено: 03 Августа, 2009 - 20:37:20
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июнь 2009  


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




Мелкий пишет:
Pitmen пишет:
Обьясните плиз, как правильно подключится к двум таблицам в БД и сделать сравнение и потом выборку по условию?

Чего сравнивать хотите?
CODE (text):
скопировать код в буфер обмена
  1. select * from table1,table2 where t1.table1=t2.table2

Выберет все строки с совпадающими значениями полей t1 и t2.

Хочу сделать на форуме, phpBB вывод последних неотмеченых сообщений. Есть таблица куда они заносятся, и таблица где они все есть, вот хочу что бы выводились только те которых нет в таблице отмеченные, за подсказку спасибо, только вот как их потом вывести в цикле...?
 
 Top
Мелкий Супермодератор
Отправлено: 04 Августа, 2009 - 08:58:19
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $result = mysql_query("select * from table1,table2 where t1.table1=t2.table2")
  3. or die ("Ошибка запроса: ".mysql_error());
  4. while ($ant=mysql_fetch_array($res)) {
  5. /*здесь доступен ассоциативный массив $ant[], ключи - имена столбцов таблиц, значения - значение поля в этой строке.*/
  6. }
  7. ?>
  8.  


Pitmen пишет:
Есть таблица куда они заносятся, и таблица где они все есть, вот хочу что бы выводились только те которых нет в таблице отмеченные

А вот это сложнее, т.к. при связывании таблиц в тезультирующую попадают строки, имеющиеся в обеих таблицах. По крайней мере сходу запрос придумать не получилось


-----
PostgreSQL DBA
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB