За последние 24 часа нас посетили 60348 программистов и 1819 роботов. Сейчас ищет 831 программист ...

Как вывести количество картинок пользователя

Тема в разделе "PHP и базы данных", создана пользователем AkudJEE, 2 авг 2012.

  1. AkudJEE

    AkudJEE Активный пользователь

    С нами с:
    29 июл 2012
    Сообщения:
    29
    Симпатии:
    0
    Привет всем.
    У меня возник такой вопрос. Я создаю сайт с картинками, в котором пользователь может загружать картинки. Возле каждой картинки на сайте стоит имя пользователя, который их загрузил. Как сделать так, чтобы возле пользователя было количество картинок, которые он загрузил на сайт?
    Делаю вот такой запрос:

    PHP:

    Код (Text):
    1.    <?PHP
    2.          $query = mysql_query("SELECT COUNT(*) FROM db_name");
    3.          $sql = "SELECT * FROM db_name";
    4.          $result = mysql_query($sql)  or die(mysql_error());
    5.          while ($row = mysql_fetch_assoc($result))
    6.          {
    7.            $table .= $row['owner'];
    8.           }
    9.             echo $table;
    10.                     ?>
    Здесь owner это id пользователя на свою картинку. На сайт выводятся все id пользователя, которые есть на данный момент, сколько картинок загрузил, столько штук и выводится id пользователя. Мне нужно вывести их количество, и присвоить их к картинке пользователя.
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Самый быстроработающий вариант будет хранить в таблице с пользователями (помимо всех их данных) количество загруженных пользователем картинок.
    В момент загрузки картинки, соответственно, увеличивать эту цифру в б.д.
    Пример б.д.
    Код (Text):
    1. CREATE TABLE `users` (
    2.     `id` INT NOT NULL AUTO_INCREMENT,
    3.     `login` VARCHAR(20) NOT NULL DEFAULT '',
    4.     `password` VARCHAR(32) NOT NULL DEFAULT '',
    5.     `email` VARCHAR(128) NOT NULL DEFAULT '',
    6.     `images` INT NOT NULL DEFAULT 0,
    7.     PRIMARY KEY(`id`)
    8. ) ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci;
    9.  
    10. CREATE TABLE `images` (
    11.     `id` INT NOT NULL AUTO_INCREMENT,
    12.     `user_id` INT NOT NULL DEFAULT 1,
    13.     `filepath` VARCHAR(128) NOT NULL DEFAULT '',
    14.     PRIMARY KEY(`id`),
    15.     KEY(`user_id`)
    16. ) ENGINE = MyISAM DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci;
    Пример запроса на выборку:
    Код (Text):
    1. SELECT `images`.*, `users`.`login`, `users`.`images`
    2. FROM `images` INNER JOIN `users` ON(`images`.`user_id` = `users`.`id`);
     
  3. AkudJEE

    AkudJEE Активный пользователь

    С нами с:
    29 июл 2012
    Сообщения:
    29
    Симпатии:
    0
    Дело в том, что я это делаю для компонента галереи Джумла, там уже все таблицы созданы, надо только вывести количество картинок пользователя.
    Вот функция:
    Код (Text):
    1. function getImageNumber()
    2.   {
    3.     $this->_db->setQuery("SELECT
    4.                             COUNT(id)
    5.                           FROM
    6.                             "._JOOM_TABLE_IMAGES."
    7.                           WHERE
    8.                             owner = ".$this->_user->get('id')
    9.                         );
    10.     return $this->_db->loadResult();
    11.   }
    Здесь видно чему равен owner.
    Это выводит ID пользователя картинки на сайт
    Код (Text):
    1. $this->image->owner