2014-02-20 8 views
0

У меня есть следующая проблема. На панели администратора у меня есть несколько галерей изображений. Пользователь может выбрать несколько снимков и сохранить их. Данные воспроизводимой в БД следующим образом:Получить конкретные позиции в массиве

<br />::nossos_trabalhos_galeria_x::3::/nossos_trabalhos_galeria_x::<br /><br />::nossos_trabalhos_galeria|0|nossos_trabalhos_galeria_x::images/nossos_trabalhos/53/lighthouse.jpg::/nossos_trabalhos_galeria|0|nossos_trabalhos_galeria_x::<br />::nossos_trabalhos_galeria|1|nossos_trabalhos_galeria_x::images/nossos_trabalhos/53/penguins.jpg::/nossos_trabalhos_galeria|1|nossos_trabalhos_galeria_x::<br />::nossos_trabalhos_galeria|2|nossos_trabalhos_galeria_x::images/nossos_trabalhos/53/koala.jpg::/nossos_trabalhos_galeria|2|nossos_trabalhos_galeria_x::<br /> 

Так сделать «выбрать» и поймал результаты:

$db = &JFactory::getDBO(); 

$table = '#__cck_store_form_nossos_trabalhos'; 

$select_query = "SELECT nossos_trabalhos_galeria_x FROM $table"; 

$db->setQuery($select_query); 

$db->query(); 

$row = $db->loadRow(); 

Но все, что имеет значение для меня образ пути. Тогда я могу отделить свою позицию «взрываются»:

$r1 = explode('::',$row[0]); 
var_dump($r1); 

Так я получаю результат:

array (size=17) 
    0 => string '<br />' (length=6) 
    1 => string 'nossos_trabalhos_galeria_x' (length=26) 
    2 => string '3' (length=1) 
    3 => string '/nossos_trabalhos_galeria_x' (length=27) 
    4 => string '<br /><br />' (length=12) 
    5 => string 'nossos_trabalhos_galeria|0|nossos_trabalhos_galeria_x' (length=53) 
    6 => string 'images/nossos_trabalhos/53/lighthouse.jpg' (length=41) 
    7 => string '/nossos_trabalhos_galeria|0|nossos_trabalhos_galeria_x' (length=54) 
    8 => string '<br />' (length=6) 
    9 => string 'nossos_trabalhos_galeria|1|nossos_trabalhos_galeria_x' (length=53) 
    10 => string 'images/nossos_trabalhos/53/penguins.jpg' (length=39) 
    11 => string '/nossos_trabalhos_galeria|1|nossos_trabalhos_galeria_x' (length=54) 
    12 => string '<br />' (length=6) 
    13 => string 'nossos_trabalhos_galeria|2|nossos_trabalhos_galeria_x' (length=53) 
    14 => string 'images/nossos_trabalhos/53/koala.jpg' (length=36) 
    15 => string '/nossos_trabalhos_galeria|2|nossos_trabalhos_galeria_x' (length=54) 
    16 => string '<br />' (length=6) 

Мой самый большой вопрос в том, как я могу получить пути изображения в массиве для создания галереи ?

----- EDIT -----

Спасибо за ответы. Решила мою проблему очень просто. Я назвал этот же результат с помощью опции joomla 'getValue', он привез мне все данные в массив stdClass. Тогда этого было достаточно, чтобы сделать foreach и назвать позицию.

+0

Вы сохраняете фактический путь к файлу в базе данных? Являются ли они одинаковыми типами файлов? – Chitowns24

+0

http://en.wikipedia.org/wiki/Database_normalization –

+0

Да, joomla сохраняет все пути. И да, они одного типа. –

ответ

0

Вам нужно будет использовать регулярное выражение, чтобы проверить, является ли данный элемент URL-адресом изображения. Если это, то добавьте его в новый массив или сделайте что-нибудь с ним.

0

, если у вас есть несколько типов изображений, то вы можете использовать следующий код для извлечения URL изображений:

$ext = array("jpg","jpeg","png","gif"); 

$gallery_url = array_filter(array_map(function($var) use($ext){return in_array(end(explode(".", $var)),$ext)?$var:false;}, $r1)); 
print_r($gallery_url); 

gallery_url представляет собой массив, имеющий только URL изображений

EDIT: если изображения одного типа, то :

$gallery_url = array_filter(array_map(function($var){return end(explode(".", $var))=='jpg'?$var:false; },$r1)); 
0

Ну просто для начала - если все изображения в формате JPEG, а затем перебрать массив и искать все строки, которые заканчиваются .jpg (или любой другой тип изображения может быть). Чтобы задать другой вопрос: startsWith() and endsWith() functions in PHP

Смежные вопросы