Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Получить из массива по номеру
 
 автор: dirol   (28.03.2013 в 12:30)   письмо автору
 
 

Добрый день.

Есть массив


Array
(
    [0] => Array
        (
            [0] => 3
            [1] => uploads/shop/3/
            [2] => c3532a07aa63.jpg
        )

    [1] => Array
        (
            [0] => 3
            [1] => uploads/shop/3/
            [2] => 5f64cbb58156.jpg
        )

    [2] => Array
        (
            [0] => 1
            [1] => uploads/shop/1/
            [2] => 14639a31e99b.jpg
        )

    [3] => Array
        (
            [0] => 1
            [1] => uploads/shop/1/
            [2] => 0cfbeb78524a.jpg
        )

    [4] => Array
        (
            [0] => 1
            [1] => uploads/shop/1/
            [2] => ba54969ae035.jpg
        )

    [5] => Array
        (
            [0] => 2
            [1] => uploads/shop/2/
            [2] => a5ccc9abd789.jpg
        )

    [6] => Array
        (
            [0] => 2
            [1] => uploads/shop/2/
            [2] => 67e657cc8974.jpg
        )

    [7] => Array
        (
            [0] => 2
            [1] => uploads/shop/2/
            [2] => e6b1bcd3ac4f.jpg
        )

)



как мне из него получить к примеру по номеру 1, первые две фотки?

  Ответить  
 
 автор: confirm   (28.03.2013 в 12:43)   письмо автору
 
   для: dirol   (28.03.2013 в 12:30)
 

У массива нет номеров, есть либо индексы, либо ключи. О каких номерах речь?

  Ответить  
 
 автор: dirol   (28.03.2013 в 13:03)   письмо автору
 
   для: confirm   (28.03.2013 в 12:43)
 

ну у меня получается что [0] => 3 вот по этим номерам


[0] => 1
[0] => 2
[0] => 3

  Ответить  
 
 автор: dirol   (28.03.2013 в 13:09)   письмо автору
 
   для: dirol   (28.03.2013 в 13:03)
 

вообще из базц mySQL

выводятся занчения

к при меру 1,2,3 это id в базе товара, во второй таблице лежат фотографии товара и вот надо вывести обязательно по 2 первые фотографии товара на одной страницы для сменны ее при наведении курсором.

вот я намочился вывод товара одним запросом стандартным , а фотографии все выводятся в массив и вот из массива по номерам товара выбрать по 2 фотографии

  Ответить  
 
 автор: confirm   (28.03.2013 в 13:15)   письмо автору
 
   для: dirol   (28.03.2013 в 13:09)
 

А зачем помещать в массив, чтобы потом сделать вывод? При обработке запроса и выводите по две фото сразу.

  Ответить  
 
 автор: dirol   (28.03.2013 в 13:21)   письмо автору
 
   для: confirm   (28.03.2013 в 13:15)
 


CREATE TABLE IF NOT EXISTS `cms_images` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cid` int(10) NOT NULL,
  `catalog` varchar(150) DEFAULT '0',
  `filename` varchar(300) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `catid` (`catalog`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=43 ;

INSERT INTO `cms_images` (`id`, `cid`, `catalog`, `filename`) VALUES
(42, 2, 'uploads/shop/2/', 'e6b1bcd3ac4f.jpg'),
(41, 2, 'uploads/shop/2/', '67e657cc8974.jpg'),
(40, 2, 'uploads/shop/2/', 'a5ccc9abd789.jpg'),
(39, 1, 'uploads/shop/1/', 'ba54969ae035.jpg'),
(38, 1, 'uploads/shop/1/', '0cfbeb78524a.jpg'),
(37, 1, 'uploads/shop/1/', '14639a31e99b.jpg'),
(36, 3, 'uploads/shop/3/', '5f64cbb58156.jpg'),
(35, 3, 'uploads/shop/3/', 'c3532a07aa63.jpg');




как одним запросом к примеру вывести две первые фотографии каждой позиции?

с LEFT JOIN только одну получается как вторую или три вытащить?

  Ответить  
 
 автор: confirm   (28.03.2013 в 13:32)   письмо автору
 
   для: dirol   (28.03.2013 в 13:21)
 

Нужно вложенным запросом получать фото и по 2. В раздел MySQL с такими вопросами, кому-то может быть тоже это нужно будет.
А если вы все кучей получили, то это еще не значит, что нужно формировать массив промежуточный, тем более, если его формировать, то не такой как у вас, так как он не отвечает вашей задаче.

  Ответить  
 
 автор: Sfinks   (28.03.2013 в 14:50)   письмо автору
 
   для: dirol   (28.03.2013 в 13:21)
 

SELECT id, cid, catalog, filename
FROM( SELECT *
           , @n := if( @c=cid, @n+1, 1 )num
           , @c := cid
      FROM( SELECT * FROM cms_images ORDER BY cid, filename )t
      JOIN( SELECT @c:=0 )c
      JOIN( SELECT @n:=0 )n
)t
WHERE num <3

  Ответить  
 
 автор: dirol   (28.03.2013 в 15:28)   письмо автору
 
   для: Sfinks   (28.03.2013 в 14:50)
 

если честно чето не работает вообще не вкурил такой запрос

  Ответить  
 
 автор: Sfinks   (28.03.2013 в 17:41)   письмо автору
 
   для: dirol   (28.03.2013 в 15:28)
 

На данных представленных Вами в 13:21 - работает 100%

Если "не работает" - это речь о параллельной теме, так там помоему надо только список полей дополнить.

Разбирайтесь =)

P.S. Выполните подзапросы частями:
SELECT * FROM cms_images ORDER BY cid, filename
SELECT @c:=0
SELECT * 
FROM( SELECT * FROM cms_images ORDER BY cid, filename )t 
JOIN( SELECT @c:=0 )c 
JOIN( SELECT @n:=0 )n
SELECT * 
     , @n := if( @c=cid, @n+1, 1 )num 
     , @c := cid 
FROM( SELECT * FROM cms_images ORDER BY cid, filename )t 
JOIN( SELECT @c:=0 )c 
JOIN( SELECT @n:=0 )n

Проанализируйте результаты....
Думаю разберетесь.

  Ответить  
 
 автор: mister_pipin   (31.03.2013 в 20:27)   письмо автору
 
   для: dirol   (28.03.2013 в 12:30)
 

Так как вы вытащили массив из базы, что вам мешает в конце этого запроса добавить LIMIT 2 и методом foreach вывести 2 картинки?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования