Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос массивов 
:(
    Опции темы
krasgames
Дата 8.2.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый мастер
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



В базе данных есть несколько строк, которые объединяет то, что их написал один пользователь, порядковый номер которого указывается в определенном столбце. Нужно не просто выделить массив, а если склероз меня не сьел, это можно сделать так:
Код

$cool = $database -> database_query("SELECT `album_id` FROM `se_albums` WHERE `album_user_id` = '$t_uid'");
$database -> database_fetch_array($cool);

Нужно после посчитать количество строчек, где упоминается этот порядковый номер пользователя. Как посчитать? 
А вообще там все немного запутанней, есть порядковый номер, по нему нужно определить номера *альбомов*, созданных пользователями, а уже по этим номерам в другой таблице искать, сколько файлов находится в этих альбомах. Я считаю, что надо сначала создать массив, который будет содержать в любом порядке номера альбомов, а потом выполнить запрос, который бы посчитал в другой таблице общее количество файлов, распиханных по этим альбомам. Жду ваших предложений.

Добавлено через 1 минуту и 48 секунд
ЗЫ Я не шарю в языке, когда речь заходит о массивах, поэтому я написал сюда скорее для того, чтобы освежить грамматику, с помощью которой работать с массивом, а потом уже алгоритм.

Добавлено через 13 минут и 52 секунды
Я сам начну с ошибки, которая возникла при выполнении более простого. Я расчитывал, что это выдаст мне число созданных *альбомов*: 
Код

$cool = $database -> database_query("SELECT `album_id` FROM `se_albums` WHERE `album_user_id` = '$t_uid'");
list($t_cool) = array_count_values($database -> database_fetch_array($cool));

Оно что-то не понимает, хотя названия столбцов я более-менее проверил. Просто не выдает какого-либо значения.
PM MAIL   Вверх
Ипатьев
Дата 8.2.2010, 21:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



а что возвращает метод database_query?
PM MAIL   Вверх
Severyanin
Дата 9.2.2010, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



Да и вообще, думаю, описание класса, который инстанцирует объект $database было бы полезным, иначе мало что можно сказать


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
krasgames
Дата 9.2.2010, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый мастер
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Я хз, зачем это в движке. $database->database_query заменяет mysql_query. По крайней мере, так думая, я уже писал до этого запросы, и все работало.
PM MAIL   Вверх
Ипатьев
Дата 9.2.2010, 10:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Я не спрашивал, зачем это в движке.
Я спросил, что эта функция возвращает.
Если эта функция заменяет mysql_query, то ваш код не имеет смысла.
Поищите где-нибудь учебник, в котором описывается работа с mysql_query

Это сообщение отредактировал(а) Ипатьев - 9.2.2010, 10:18
PM MAIL   Вверх
Severyanin
Дата 9.2.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



krasgames, скорее всего, перед такими запросами нужно еще послать запрос на работу с определенной бд и проверить, есть ли вообще подключение к mysql


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
krasgames
Дата 9.2.2010, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый мастер
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Возможно, она делает и подключение. Я давно не смотрел это, не помню, как там подключение происходило. Могу сказать лишь, что $database->database_query выполняет работу функции mysql_query. 
Пример работающего запроса:
Код

$p3 = $database -> database_query("SELECT `user_views_profile` FROM `se_users` WHERE `user_id` = '$t_uid'");
list($tp3) = $database -> database_fetch_array($p3);


Это сообщение отредактировал(а) krasgames - 9.2.2010, 18:04
PM MAIL   Вверх
Ипатьев
Дата 9.2.2010, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



на самом деле я неправильный вопрос задал
что делает метод database_fetch_array?

после ответа на этот вопрос можно будет переходить к правильному запросу.

правильный запрос - "SELECT count(`album_id`) FROM `se_albums` WHERE `album_user_id` = '$t_uid'"
результат этого запроса можно будет получить с помощью кода из последнего сообщения
PM MAIL   Вверх
krasgames
Дата 9.2.2010, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый мастер
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



database_fetch_array, как я понял, делает то же, что и mysql_fetch_array.
Код

$cool = $database -> database_query("SELECT count(`album_id`) FROM `se_albums` WHERE `album_user_id` = '$t_uid'");
list($t_cool) = $database -> database_fetch_array($cool));

Так работает. Какие замечания? Я не знаю, как можно сделать проще, мне до этого на этом же форуме только это предлагали.
Но теперь мне надо посчитать не число album_id, а сформировать массив, содержащий все album_id для данного album_user_id. После этого сделать запрос, в котором после where будут перечисленны album_id, а количество файлов после SELECT будет считаться через count. Но может можно и по другому. То есть перехожу к следующей части вопроса. 

Это сообщение отредактировал(а) krasgames - 9.2.2010, 20:16
PM MAIL   Вверх
Ипатьев
Дата 9.2.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(krasgames @  9.2.2010,  20:14 Найти цитируемый пост)
database_fetch_array, как я понял, делает то же, что и mysql_fetch_array.

в этом случае надо внимательно почитать в документации, что делает функция mysql_fetch_array, и подумать, что вернет array_count_values(), если ей передать результат работы mysql_fetch_array


Цитата(krasgames @  9.2.2010,  20:14 Найти цитируемый пост)
То есть перехожу к следующей части вопроса. 

Все подсчеты должна делать база данных
Слышали когда-нибудь про джойны?
PM MAIL   Вверх
krasgames
Дата 10.2.2010, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый мастер
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



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

$fi2_array = Array();
$fi2_query = $database -> database_query("SELECT `album_id` FROM 

`se_albums` WHERE `album_user_id` = '$su'");
while($fi2 = $database->database_fetch_assoc($fi2_query)) 
{    $fi2_array[]=Array('album_id' => $fi2[album_id]);}

Код

{section name=fi2_loop loop=$fi2}
{$fi2[fi2_loop]}
    {/section}

Выводит array полезное количество раз. Где ошибся?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.