Сразу к делу: у меня есть массив, каждый элемент которого, состоит из 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 запрос и потом скорми мускулу.
Попробуй разобрать массив и с генерируй 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 написал(а):
Спасибо всем большое, ещё один вопрос, если позволите по теме. Вот идёт последовательность массива (возьму живой пример):
Во втором элементе отсутствует ключевой параметр [name] , исходя из которого мне нужно пропустить это изображение на добавление или отвергнуть. В данном случае выставляется приоритет для показа изображения, соответствено, если пользователь приоритет не указал - изображение в пост не добавляется..
Каким образом можно сделать выборку/отсеивание в массиве?
[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) | ||
Ты наверное имел ввиду IMPLODE();
|
да, похоже. тоьлко там ещё IN был использован... найду покажу
Спустя 44 минуты, 59 секунд (2.02.2010 - 16:10) Ice написал(а):
а вы уверены, что там был занос в базу, а не выборка из нее?

Спустя 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 написал(а):
Огромное спасибо всем за помощь!