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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
BakTi
Отправлено: 07 Июня, 2012 - 23:00:00
Post Id


Новичок


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


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




Имеются 2 базы данных:
1) films (id,title,author(автор))
2) sum_users (id,login,news(кол-во новостей))

Форма для удаления новости:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $result_del = mysql_query("SELECT id,title,author FROM films");
  3. $myrow_del = mysql_fetch_array($result_del);
  4.  
  5. $result_user = mysql_query("SELECT login,news FROM sum_users");
  6. $myrow_user = mysql_fetch_array($result_user);
  7.  
  8. $author = $myrow_del["author"];
  9. $login = $myrow_user["login"];
  10.  
  11. $row = mysql_query("SELECT news FROM sum_users WHERE '$login'='$author'");
  12. $news = mysql_fetch_array($row);
  13.  
  14. do
  15. {
  16. printf ("&nbsp;<input name='id' type='radio' value='%s'> %s ( %s - $news)<br>",$myrow_del["id"],$myrow_del["title"],$myrow_del["author"]);
  17. }
  18. while ($myrow_del = mysql_fetch_array($result_del));
  19. ?>


Хочу вывести в таком виде: "Название ( Автор / Кол-во новостей автора )", но вместо кол-ва новостей выводит "Array". Где ошибка ?
 
 Top
Mefisopy
Отправлено: 08 Июня, 2012 - 06:40:47
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2012  


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




Так вы и получаете массив функцией

Если вам нужно только количество записей, то вместо этой функции нужна другая
PHP:
скопировать код в буфер обмена
  1. //Заменить это
  2. $news = mysql_fetch_array($row);
  3. // На это
  4. $news = mysql_num_rows($row);
 
 Top
sKaa
Отправлено: 08 Июня, 2012 - 07:02:57
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


BakTi пишет:
Имеются 2 базы данных:
1) films (id,title,author(автор))
2) sum_users (id,login,news(кол-во новостей))

Эти "базы" впредь называй по-простому : "Таблицы"
 
 Top
BakTi
Отправлено: 08 Июня, 2012 - 07:35:56
Post Id


Новичок


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


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




Mefisopy выводит везде цифру 2, хотя у юзера ID1 - 5 новостей, у ID2 - 1
 
 Top
Mefisopy
Отправлено: 08 Июня, 2012 - 13:32:54
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2012  


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




Хм Не сразу въехал в суть.
PHP:
скопировать код в буфер обмена
  1. $result_del = mysql_query("SELECT id,title,author FROM films");
  2. $myrow_del = mysql_fetch_array($result_del);
  3.  
  4. $result_user = mysql_query("SELECT login,news FROM sum_users");
  5. $myrow_user = mysql_fetch_array($result_user);

Код выше возвращает ассоциативный массив.

То есть нужно по другому выводить.
PHP:
скопировать код в буфер обмена
  1. $author = $myrow_del[0]["author"];
  2. $login = $myrow_user[0]["login"];

Хотя бы так, но тут массив фильмов и массив user'ов. Так что join'ом или циклами выбирать. Однако
 
 Top
BakTi
Отправлено: 08 Июня, 2012 - 14:12:35
Post Id


Новичок


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


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




Mefisopy если так, то везде показывает 1
(Добавление)
Если так, то показывает максимально значение
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $result_del = mysql_query("SELECT id,title,author FROM films");
  4. $myrow_del = mysql_fetch_array($result_del);
  5.  
  6. $author = $myrow_del["author"];
  7.  
  8. $row = mysql_query("SELECT news FROM sum_users WHERE login='$author'");
  9. $news = mysql_fetch_array($row);
  10.  
  11. do
  12. {
  13. printf ("&nbsp;<input name='id' type='radio' value='%s'> %s ( %s - ".$news["news"].")<br>",$myrow_del["id"],$myrow_del["title"],$myrow_del["author"]);
  14. }
  15. while ($myrow_del = mysql_fetch_array($result_del));
  16. ?>
  17.  
 
 Top
Мелкий Супермодератор
Отправлено: 08 Июня, 2012 - 14:50:37
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $news = mysql_query("SELECT `id`,`title`,`author`, `news` FROM `films` join `sum_users` on `login`=`author`");
  2. while ($row = mysql_fetch_assoc($news)) {
  3. var_dump($row);
  4. }

Если я верно понимаю, по какому признаку объединяются таблицы и что с них вообще лежит.


-----
PostgreSQL DBA
 
 Top
BakTi
Отправлено: 08 Июня, 2012 - 22:52:36
Post Id



Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Нояб. 2010  
Откуда: Россия


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




Мелкий Хочу вывести все новости в таком виде: "Название ( Автор / Кол-во новостей автора )", где автор берется из таблицы "films" (author), где кол-во новостей берется из таблицы "sum_users" (news), т.е. надо вывести автора новости и кол-во его новостей
 
 Top
armancho7777777 Супермодератор
Отправлено: 09 Июня, 2012 - 06:06:17
Post Id



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


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


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




BakTi пишет:
Mefisopy если так, то везде показывает 1
(Добавление)
Если так, то показывает максимально значение
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $result_del = mysql_query("SELECT id,title,author FROM films");
  4. $myrow_del = mysql_fetch_array($result_del);
  5.  
  6. $author = $myrow_del["author"];
  7.  
  8. $row = mysql_query("SELECT news FROM sum_users WHERE login='$author'");
  9. $news = mysql_fetch_array($row);
  10.  
  11. do
  12. {
  13. printf ("&nbsp;<input name='id' type='radio' value='%s'> %s ( %s - ".$news["news"].")<br>",$myrow_del["id"],$myrow_del["title"],$myrow_del["author"]);
  14. }
  15. while ($myrow_del = mysql_fetch_array($result_del));
  16. ?>
  17.  



Код - а ля попов... ?

PHP:
скопировать код в буфер обмена
  1.  
  2. $res = mysql_query("
  3.             SELECT
  4.             fm.`id`, fm.`title`, fm.`author`,
  5.             sum.`news`
  6.             FROM `films` fm
  7.             WHERE sum.`login`=fm.`author`
  8.             ");
  9.                          
  10. while ($row = mysql_fetch_assoc($res))
  11. {
  12.         echo '<input name="id" type="radio" value="'.$row['id'].'"> '.
  13.         $row['title'].' ('.$row['author'].' - '.$row['news'].')<br>';
  14. }
  15.  


Как-то так...

(Отредактировано автором: 09 Июня, 2012 - 06:10:10)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB