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


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

> Описание: Связать воедино, так сказать :)
Eihwaz
Отправлено: 12 Ноября, 2007 - 22:45:37
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2007  


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




Здравствуйте!
Начал осваивать потихоньку php, калькуляторы уже писал, настало время для работы с БД. У меня вопрос (скорее из разряда рутинных):
Есть две таблицы в базе данных.
Первая таблица:
cities_list

city_id - ну, ясно Улыбка

city_name - список городов
Вторая:
entries_list

entry_id - это ИД записей для городов

city_id - при добавлении записи пользователь выбирает из выпадающего списка город, а значение (1,2,3,4 и т.д.) записываются сюда при отправке формы.

entry_author
- ну, это автор записи, хотя здесь это роли не играет...
... (ну и так далее)

Записи из первой таблицы выводятся в браузер в две колонки следующим скриптом:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. include "../config.php";
  5.  
  6. $query = "SELECT city_id, city_name FROM cities_list";
  7. $result = mysql_query($query);
  8. $rows = mysql_num_rows($result);
  9. $final = 0;
  10.  
  11. echo "<table width=100%>";  
  12.  
  13. for($i=0;$i<$rows;$i++) {
  14.   mysql_data_seek($result,$i);
  15.   $city_arr=mysql_fetch_array($result);
  16.   {
  17. if($final == 0) echo "<tr>";
  18. echo "<td>".$city_arr['city_name']."</td>";
  19.     $final++;
  20.     if($final == 2)
  21.     {
  22.        echo "</tr>";
  23.        $final = 0;
  24.     }
  25.   }
  26. }
  27.   echo "</table>";
  28.   ?>
  29.  


Все это выводится именно так, как нужно, но (и вот здесь я запоролся пока):
Как под каждым городом ".$city_arr['city_name']." можно вывести число записей для этого города (entry_id) из второй таблицы (имеется ввиду именно количество записей)? Т.е., там, где city_id совпадают в первой и во второй таблице.
Большое спасибо заранее всем откликнувшимся.
 
 Top
evgenijj
Отправлено: 13 Ноября, 2007 - 09:09:00
Post Id



Участник


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT a.city_id id, a.city_name name, COUNT(*) cnt
  3. FROM cities_list a INNER JOIN entries_list b
  4. ON a.city_id=b.city_id
  5. GROUP BY id, name
  6. ORDER BY cnt DESC";
  7. $res = mysql_query( $query );
  8. echo '<table border="1">';
  9. while ( $city = mysql_fetch_array( $res ) )
  10. {
  11.   echo '<tr>';
  12.   echo '<td>'.city['id'].'</td>';
  13.   echo '<td>'.city['name'].'</td>';
  14.   echo '<td>'.city['cnt'].'</td>';
  15.   echo '</tr>';
  16. }
  17. echo '</table>';
  18.  
 
 Top
Eihwaz
Отправлено: 15 Ноября, 2007 - 12:29:44
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2007  


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




Спасибо, evgenijj!
Единственное - вывод данных должен быть таким, по-идее:
PHP:
скопировать код в буфер обмена
  1.  
  2.    echo "<td>".$city['id']."</td>";
  3.    echo "<td>".$city['name']."</td>";
  4.    echo "<td>".$city['cnt']."</td>";
  5.  

Но при работе выдает ошибку:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in x:\home\localhost\www\practice\forum_script.php on line 10

На 10-й строке:
while ( $city = mysql_fetch_array( $res ) )
Вобщем, будем разбираться, книги есть Улыбка Но если кто поможет, тоже будет хорошо.
 
 Top
valenok Модератор
Отправлено: 15 Ноября, 2007 - 12:50:58
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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






-----
Truly yours, Sasha.
 
My status
 Top
evgenijj
Отправлено: 15 Ноября, 2007 - 12:56:42
Post Id



Участник


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


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




http://phpfaq[dot]ru/debug
Цитата:

При возникновении проблем с функциями mysql (supplied argument is not a valid MySQL result resource) под строкой, где произошла ошибка, обязательно надо вывести на экран mysql_error() и сам запрос - для визуального контроля и копирования на форум.

Попробуй выполнить запрос через phpMyAdmin.
 
 Top
Eihwaz
Отправлено: 15 Ноября, 2007 - 14:01:03
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2007  


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




Хе-х Улыбка
Спасибо большое - ошибка была результатом тупого копирования с форума - поленился запрос разобрать (испужался такой конструкции). При выполнении запроса через PhpMyAdmin все стало на свои места, спасибо Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB