[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по массивам. Разбираюсь с темой
OrlenkoKN
Приветствую всех.
Сразу к делу: у меня есть массив, каждый элемент которого, состоит из 4х значений. конкретно, это данные набора фотографий:
id,
путь,
описание и
приоритет при выводе.

Сначала поьлзователю выводится набор из нескольких его фотографий, возле каждого из полей есть инпут поле для ввода приоритета для каждой из ф-фий. В общем я всё это передаю в массиве:
 <?
Приоритет: <input type='input' value='' name='prior[]' class='w25 b1c' maxlength='3'> <br />
<
input type='hidden' value='".$pict['number']."' name='pictid[]' />
<
input type='hidden' value='".$pict['pict_mini']."' name='pictpath[]' />
<
input type='hidden' value='".$pict['descr']."' name='pictdescr[]' />
?>

и на выходе получаю вот такую последовательность:
Array
(
[0] => Array
(
[name] =>
[value] => 688
[path] => album/8_mini_house_lt_b.jpg
[descr] =>
)

[1] => Array
(
[name] =>
[value] => 677
[path] => images/nophoto150x100.gif
[descr] =>
)

[2] => Array
(
[name] =>
[value] => 675
[path] => images/nophoto150x100.gif
[descr] =>
)

и тд.. вот - вопрос мой в чём.. каким образом мне занести эти данные в таблицу?
name value path                       descr
1 675 images/nophoto150x100.gif описание
2 677 images/nophoto150x100.gif описание2

и тд

Спасибо



Спустя 7 минут, 44 секунды (2.02.2010 - 10:46) Kuliev написал(а):
OrlenkoKN
Попробуй разобрать массив и с генерируй SQL запрос и потом скорми мускулу.

Спустя 4 минуты, 48 секунд (2.02.2010 - 10:51) Gradus написал(а):
Цитата
каким образом мне занести эти данные в таблицу?

циклом

Спустя 2 минуты, 47 секунд (2.02.2010 - 10:54) Oyeme написал(а):
$array =  $_POST['pictid'];

foreach ($array as $array_var => $key) {
$return = mysql_query("INSERT INTO TEST (ID,NAME) VALUES(1,{$key['name']})") or die(mysql_error()); //тут твой запрос.. обращайся по индексам.
}

Спустя 18 минут, 25 секунд (2.02.2010 - 11:12) qpayct написал(а):
а я вроде недавно видел как тут кто-то умело заносил массивы в БД при помощи IN

Спустя 27 минут, 16 секунд (2.02.2010 - 11:40) OrlenkoKN написал(а):
Спасибо всем большое, сейчас попробую вариант от Oyeme

Спустя 2 минуты, 46 секунд (2.02.2010 - 11:42) Kuliev написал(а):
Цитата (qpayct @ 2.02.2010 - 13:12)
а я вроде недавно видел как тут кто-то умело заносил массивы в БД при помощи IN

Ты наверное имел ввиду IMPLODE();


<?php

$array = array(
array(
"n" => "aaa",
"v" => "bbb",
"p" => "ccc",
"d" => "ddd"
),
array(
"n" => "aaa1",
"v" => "bbb1",
"p" => "ccc1",
"d" => "ddd1"
),
array(
"n" => "aaa2",
"v" => "bbb2",
"p" => "ccc2",
"d" => "ddd2"
)
);



$sql = "";
for($i = 0; $i < count($array); $i++)
{
$sql .= "INSERT INTO `table` (id,n,v,p,d)
VALUES ('','"
.implode("','",$array[$i])."')<br>";
}

echo $sql;

echo "<pre>";
print_r($array);
echo "</pre>";


?>

Спустя 30 минут, 4 секунды (2.02.2010 - 12:12) arlamar написал(а):
а я бы наверное сделал одним запросом :
$values = array();
for($i = 0; $i < count($array); $i++)
{
$values[] = "('".$array[$i]['name']."', '".$array[$i]['value']."', '".$array[$i]['path']."', '".$array[$i]['descr']."')";
}

$sql = "INSERT INTO table_name (name, value, path, descr) VALUES ".implode(', ', $values);

Спустя 3 часа, 10 минут, 16 секунд (2.02.2010 - 15:23) OrlenkoKN написал(а):
Спасибо всем большое, ещё один вопрос, если позволите по теме. Вот идёт последовательность массива (возьму живой пример):
    [0] => Array
(
[name] => 2
[value] => 688
[path] => images/nophoto150x100.gif
[descr] => описание картинки
)

[1] => Array
(
[name] => 3
[value] => 677
[path] => images/nophoto150x100.gif
[descr] => описание картинки
)

[2] => Array
(
[name] =>
[value] => 675
[path] => images/nophoto150x100.gif
[descr] => описание картинки
)

[3] => Array
(
[name] => 9
[value] => 663
[path] => images/nophoto150x100.gif
[descr] => описание картинки
)

Во втором элементе отсутствует ключевой параметр [name] , исходя из которого мне нужно пропустить это изображение на добавление или отвергнуть. В данном случае выставляется приоритет для показа изображения, соответствено, если пользователь приоритет не указал - изображение в пост не добавляется..
Каким образом можно сделать выборку/отсеивание в массиве?

Спустя 2 минуты, 46 секунд (2.02.2010 - 15:25) qpayct написал(а):
Цитата (Kuliev @ 2.02.2010 - 10:42)
Цитата (qpayct @ 2.02.2010 - 13:12)
а я вроде недавно видел как тут кто-то умело заносил массивы в БД при помощи IN

Ты наверное имел ввиду IMPLODE();


<?php

$array = array(
array(
"n" => "aaa",
"v" => "bbb",
"p" => "ccc",
"d" => "ddd"
),
array(
"n" => "aaa1",
"v" => "bbb1",
"p" => "ccc1",
"d" => "ddd1"
),
array(
"n" => "aaa2",
"v" => "bbb2",
"p" => "ccc2",
"d" => "ddd2"
)
);



$sql = "";
for($i = 0; $i < count($array); $i++)
{
$sql .= "INSERT INTO `table` (id,n,v,p,d)
VALUES ('','"
.implode("','",$array[$i])."')<br>";
}

echo $sql;

echo "<pre>";
print_r($array);
echo "</pre>";


?>

да, похоже. тоьлко там ещё IN был использован... найду покажу

Спустя 44 минуты, 59 секунд (2.02.2010 - 16:10) Ice написал(а):
а вы уверены, что там был занос в базу, а не выборка из нее? smile.gif

Спустя 38 минут, 17 секунд (2.02.2010 - 16:49) Kuliev написал(а):
OrlenkoKN
Ну так проверяй, если пустое то переходим к следующему массиву

Спустя 18 часов, 31 минута, 17 секунд (3.02.2010 - 11:20) OrlenkoKN написал(а):
Цитата
Ну так проверяй, если пустое то переходим к следующему массиву

Я понимаю, что нужно переходить, я просто не обладаю пока необходимыми знаниями для реализации. Если не ошибаюсь, то нужно использовать функцию next()?
вот так я реализую получение массива даных:

# Получаем массив
for ($i = 0; $i <= count($prior); $i++) {
$tmp[] = array('prior'=>$prior[$i], 'id'=>$pictid[$i], 'path'=>$pictpath[$i], 'descr'=>$pictdescr[$i]);
}
$vyvod = print_r ($tmp);

$vyvod сейчас чисто для наглядного отображения массива.

подскажите пожалуйста примерчик небольшой?

Спустя 29 минут, 31 секунда (3.02.2010 - 11:50) Gradus написал(а):
for ($i = 0; $i <= count($prior); $i++) {
if($prior[$i]['name'] == "") continue;
$tmp[] = array('prior'=>$prior[$i], 'id'=>$pictid[$i], 'path'=>$pictpath[$i], 'descr'=>$pictdescr[$i]);
}
$vyvod = print_r ($tmp);

Что мы сделали ? поставили условие , если массив с индексом 'name' равен пустоте то приминяем функцию continue

Спустя 19 минут, 41 секунда (3.02.2010 - 12:09) OrlenkoKN написал(а):
Огромное спасибо всем за помощь!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.