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 :: Вопрос по выборке из БД [2]

 PHP.SU

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


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

> Описание: Выборка данных из БД форума!
Pitmen
Отправлено: 04 Августа, 2009 - 09:03:22
Post Id


Новичок


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


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




Сделал вот так
CODE (text):
скопировать код в буфер обмена
  1. $db = mysql_connect("phpBBlight","phpBBlight","phpBBlight");
  2.  mysql_query("SET NAMES UTF8");
  3.      mysql_select_db("phpBBlight",$db);
  4. $result = mysql_query ("select * from phpBBlight_otmetpost,phpbb_posts where id_post.phpBBlight_otmetpost = post_id.phpbb_posts");
  5.  $myrow = mysql_fetch_array($result);
  6.  echo "<br> ID пользователя:" .$myrow[poster_id];

нечего не выводит, почему, что не так? И как написать то что мне надо вывести все записи из таблицы phpbb_posts где post_id не совпадает с id_post в таблице phpBBlight_otmetpost . Тоесть по простому говаря в таблицу phpBBlight_otmetpost заносились ID отмеченых постов а в таблице phpbb_posts находятся вообще все посты вот и надо выводить те посты которые не отмечены, вот ужос!
 
 Top
Мелкий Супермодератор
Отправлено: 04 Августа, 2009 - 10:11:36
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $db = mysql_connect("phpBBlight","phpBBlight","phpBBlight");
  2. mysql_query("SET NAMES UTF8");
  3. mysql_select_db("phpBBlight",$db);
  4. $result = mysql_query ("select * from phpBBlight_otmetpost,phpbb_posts where id_post.phpBBlight_otmetpost = post_id.phpbb_posts")
  5.                         or die(mysql_error);
  6. $myrow = mysql_fetch_array($result);
  7. echo "<br> ID пользователя:" .$myrow['poster_id'];

Дополните так и смотрите, на что ругается мускул.


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


Новичок


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


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




Мелкий
Сделал как Вы сказали написало mysql_error
(Добавление)
Ура, вот так заработало!!!
PHP:
скопировать код в буфер обмена
  1. $db = mysql_connect("phpBBlight","phpBBlight","phpBBlight");
  2.  mysql_query("SET NAMES UTF8");
  3.      mysql_select_db("phpBBlight",$db);
  4. $result = mysql_query ("SELECT phpbb_posts.* FROM phpbb_posts,phpBBlight_otmetpost WHERE phpbb_posts.post_id=phpBBlight_otmetpost.id_post");
  5.  $myrow = mysql_fetch_array($result);
  6.  echo $myrow[post_id];

Но это он сравнивает и выводит совпадения, если я правильно понял, а как сделать наоборот, тоесть те которые уже занесены в phpBBlight_otmetpost не выводить из phpbb_posts а выводить те id которых нет?
(Добавление)
Незнаю правильно или нет, сделал чисто по наитию, вроде всё работает!
PHP:
скопировать код в буфер обмена
  1. $db = mysql_connect("phpBBlight","phpBBlight","phpBBlight");
  2.  mysql_query("SET NAMES UTF8");
  3.      mysql_select_db("phpBBlight",$db);
  4. $result = mysql_query ("SELECT * FROM phpbb_posts WHERE post_id NOT IN (SELECT id_post FROM phpBBlight_otmetpost)");
  5.  $myrow = mysql_fetch_array($result);
  6.  echo $myrow[post_text];

Посмотрите ктонить, всё ли правильно?
 
 Top
boonya
Отправлено: 06 Июля, 2010 - 08:29:36
Post Id


Новичок


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


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




Вот только зачем мучиться с стандартными РНР функциями для MySQL, если в phpbb есть специальны класс для этого, который и сокращает количество кода и адаптирует запросы для любой из поддерживаемых БД?
Может лучше вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $sql_array = array(
  3.         'SELECT'        => '*',
  4.         'FROM'  => POSTS_TABLE,
  5.         'WHERE' => "post_id NOT IN (SELECT id_post FROM phpBBlight_otmetpost)",
  6. );
  7. $sql = $db->sql_build_query('SELECT', $sql_array);
  8. $result = $db->sql_query($sql);
  9. $myrow = $db->sql_fetchrow($result)
  10. echo $myrow[post_text];
  11.  

Вот только вторую таблицу, я так понял, вы создали сами... По этому, желательно, её имя занести в константу в файле ./includes/constants.php
Выглядеть это должно вот так:
PHP:
скопировать код в буфер обмена
  1. define('OTMETPOST_TABLE', $table_prefix . 'otmetpost');

Тогда в условии WHERE вашего запроса нужно будет написать следующее:
CODE (SQL):
скопировать код в буфер обмена
  1. "post_id NOT IN (SELECT id_post FROM ". OTMETPOST_TABLE .")"

Последнее пригодится на случай если у вас изменится имя базы данных, а вернее префикс таблиц. Тогда не придётся ковыряться в скрипте повторно.
 
 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