[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос по двумерным массивам
maximka787
Ребят, подскажите кто знает, как можно добавить сразу два значения в базу, сделав добавление через двумерный массив, а не по очереди. Можно как-то мой позор оптимизировать,сократить. сделав все одним foreach
/* ВХОДНЫЕ ДАННЫЕ
Array (
[name] => Array ( [46] => Название1 [47] => Название2 )
[price] => Array ( [46] => 1000 [47] => 2000 )
)
*/

// ОБРАБОТКА

foreach ($_POST['name'] as $key => $value){
$query = "update tab set name='$value' where id='$key'";
$result = mysql_query($query);
}

foreach ($_POST['price'] as $key => $value){
$query = "update tab set price='$value' where id='$key'";
$result = mysql_query($query);
}




Спустя 8 минут, 3 секунды (25.08.2011 - 15:06) linker написал(а):
foreach ($_POST['name'] as $key => $name)
{
$price = $_POST['price'][$key];
$query = "update tab set name='$value', price='$price' where id='$key'";
$result = mysql_query($query);
}

Спустя 7 минут, 44 секунды (25.08.2011 - 15:13) maximka787 написал(а):
linker
да точно, отлично, спасибо большое, а еще вопрос, как мне вытаскивать например многомерный массив из input?
Я сейчас понял, что у меня входные данные не многомерный массив, а их просто два.
Все потому, что форма такая:
<input type="text" name="name[1]" value="Название 1" />
<input
type="text" name="price[1]" value="1000" />

<input
type="text" name="name[2]" value="Название 2" />
<input
type="text" name="price[2]" value="2000" />


или у меня все верно сделано? так обычно вытягивают или делают
product[N][name]
product[N][price]
?

Спустя 4 минуты, 58 секунд (25.08.2011 - 15:18) ИНСИ написал(а):
Цитата
$query = "update tab set name='$value', price='$price' where id='$key'";

небольшая ошибочка, наверно ты имел в виду:
$query = "update tab set name='$name', price='$price' where id='$key'";


maximka787 в форме:

<input type="text" name="name[]" value="Название 1" />
<input
type="text" name="price[]" value="1000" />


в php, так как показал linker, если у тебя форма отправляется через POST

Спустя 1 минута, 12 секунд (25.08.2011 - 15:19) linker написал(а):
Вытаскиваются также как и с одномерным.

Спустя 3 минуты, 31 секунда (25.08.2011 - 15:23) maximka787 написал(а):
INSIDIOUS
<input type="text" name="name[]" value="Название 1" />
<input
type="text" name="price[]" value="1000" />


А разве это не тоже самое, что и я писал?

я имею ввиду есть ли возможность вытащить данные так:
Array = product Array (id => 1, name=> xxxx, price => 1000 );
?
как форму надо сделать в html?

Спустя 2 минуты, 16 секунд (25.08.2011 - 15:25) maximka787 написал(а):
Ладно ребят, спасибо, не буду отвлекать, почитаю сам, вроде начинаю понимать что тут школа.

Спустя 7 минут, 5 секунд (25.08.2011 - 15:32) maximka787 написал(а):
Разобрался.
<input type="text" name="product[<?=$row['id']?>][name]" value="<?=$row['name']?>"  />
<
input type="text" name="product[<?=$row['id']?>][price]" value="<?=$row['price']?>" />

Спустя 4 минуты, 8 секунд (25.08.2011 - 15:36) ИНСИ написал(а):
Цитата
А разве это не тоже самое, что и я писал?

То же самое, просто тебе облегчил жизнь, чтобы потом не пришлось цифры ставить :)

Цитата
Array = product Array (id => 1, name=> xxxx, price => 1000 );

можно через цикл for сделать:
for($i = 0; $i < sizeof($product); $i++) {
echo $product[$i]['id'];
}


Цитата
как форму надо сделать в html?


<input type="text" name="name[]['name']" value="Название 1" />
<input
type="text" name="price[]['price']" value="1000" />

Спустя 3 минуты, 44 секунды (25.08.2011 - 15:40) linker написал(а):
INSIDIOUS
Почти те же яйца, только ещё хуже. Как и сказал ТС, надо оставить так
<input type="text" name="product[<?=$row['id']?>][name]" value="<?=$row['name']?>"  />
<
input type="text" name="product[<?=$row['id']?>][price]" value="<?=$row['price']?>" />

Спустя 50 секунд (25.08.2011 - 15:41) maximka787 написал(а):
INSIDIOUS
ну да уже как раз делаю так. как же удобно это "многомерные массивы"))
Вот вторая часть.
foreach ($_POST['product'] as $key => $value){

$name = $_POST['product'][$key]['name'];
$price = $_POST['product'][$key]['price'];
$query = "<br>UPDATE `product_attribute` SET `name` = '$name' AND `price` = '$price' where id = '$key'";
...

}

Спустя 10 минут, 59 секунд (25.08.2011 - 15:52) ИНСИ написал(а):
linker пока я писал ответ на предыдущее, ТС уже написал другой вариант, где присваивал уже id для ключа и засунул в product

Спустя 1 минута, 47 секунд (25.08.2011 - 15:54) ИНСИ написал(а):
maximka787 новый вариант лучше старого smile.gif


_____________
..Работает - не трогай!
Быстрый ответ:

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