Как разобрать POST запрос

peretc001

Новичок
Добрый день.

У меня есть форма:
<form action="/shop/inc/zakaz_kredit.php" method="post" id="kredit_send">
<input type="hidden" name="title" value="<?php echo $row['name']; ?>">
<input type="hidden" name="qty" value="<?php echo $row['qty']; ?>">
<input type="hidden" name="price" value="<?php echo $row['price']; ?>">

<input type="text" class="zakaz" name="firstname"/></p>
<input type="text" class="zakaz" name="lastname"/></p>
<input type="text" class="zakaz" name="middlename"/></p>
и т.д.
</form>
Как получить из этого данные вида:
PHP:
$order = array(
'items' => array(
	0 => array(
		'title' => 'Товар1',
		'qty' => 1,
		'price' => 1
	),
	1 => array(
		'title' => 'Товар2',
		'category' => 'Категория2',
		'qty' => 1,
		'price' => 1
	),
),
'details' => array(
	'firstname' => 'Имя',
	'lastname' => 'Фамилияв',
	'middlename' => 'Отчество',
	'email' => 'почта',
	'cellphone' => 'телефон',
);
 

peretc001

Новичок
Я так и делал, но получаю:
Array ( [0] => Товар1 [1] => 1 [2] => 1 и т.д. )

Пробовал прописать
PHP:
$item = array( $_POST['title'], $_POST['qty'], $_POST['price']);
print_r ($item);
Тоже самое.

Нужно разбить на items и details и все это засунуть в $order
 

sakon

П..и.н..ок
PHP:
<form action="/shop/inc/zakaz_kredit.php" method="post" id="kredit_send">
<input type="hidden" name="items[title]" value="<?php echo $row['name']; ?>">
<input type="hidden" name="items[qty]" value="<?php echo $row['qty']; ?>">
<input type="hidden" name="items[price]" value="<?php echo $row['price']; ?>">

<input type="text" class="zakaz" name="detalis[firstname]"/></p>
<input type="text" class="zakaz" name="detalis[lastname]"/></p>
<input type="text" class="zakaz" name="detalis[middlename]"/></p>
и т.д.
</form>
 

peretc001

Новичок
Получается немного не так.
Должно быть:
PHP:
$order = array(
'items' => array(
    0 => array(
        'title' => 'Товар1',
        'qty' => 1,
        'price' => 1
    ),
),
'details' => array(
    'firstname' => 'Имя',
)
);
А сейчас:
PHP:
Array (
[items] => Array ( 
[title] => Товар1 
[qty] => 1 
[price] => 8200
) 
[detalis] => Array (
[firstname] => 123 
) 
);
 

peretc001

Новичок
Пробую так, тоже не выходит:
PHP:
$item = array( 'title' => $_POST['title'], 'qty' => $_POST['qty'], 'price' => $_POST['price']);
$details = array( 'firstname' => $_POST['firstname'], 'lastname' => $_POST['lastname'], 'middlename' => $_POST['middlename'], 'email' => $_POST['email']);
$order = $item + $details;
echo "<pre>";
print_r ($order);
echo "<pre>";
Выдает:
PHP:
Array
(
    [title] => Товар1
    [qty] => 1
    [price] => 1
    [firstname] => 123
    [lastname] => 123
    [middlename] => 123
    [email] => [email protected]
)
 

peretc001

Новичок
PHP:
<?php 
$order = array( "item" => array( 
								'title' => $_POST['title'], 
								'qty' => $_POST['qty'], 
								'price' => $_POST['price']
								),
				"details" => array( 
								'firstname' => $_POST['firstname'], 
								'lastname' => $_POST['lastname'], 
								'middlename' => $_POST['middlename'], 
								'email' => $_POST['email']
								), 
				);

echo "<pre>";
print_r ($order);
echo "<pre>";
?>
Получаем:
PHP:
Array
(
    [item] => Array
        (
            [title] => Товар1
            [qty] => 1
            [price] => 1
        )

    [details] => Array
        (
            [firstname] => 123
            [lastname] => 123
            [middlename] => 123
            [email] => [email protected]
        )

)
Как заменить [] на ' '?
 

peretc001

Новичок
и еще если товаров больше одного то выводит последний. Я так понимаю их (item) надо в цикл засунуть?
 

peretc001

Новичок
А как мне сделать чтоб $num выводила все товары (сейчас только последний) не используя в форме name="items[title]"
Т.е. как-то цикл внутри массива можно сделать?
PHP:
<?php 
$order = array( "items" => array( 
									$num => array (
												'title' => $_POST['title'], 
												'category' => $_POST['category'], 
												'qty' => $_POST['qty'], 
												'price' => $_POST['price']
												),
								),
				"details" => array( 
								'firstname' => $_POST['firstname'], 
								'lastname' => $_POST['lastname'], 
								'middlename' => $_POST['middlename'], 
								'email' => $_POST['email'],
								'cellphone' => $_POST['cellphone']
								), 
				);

echo "<pre>";
print_r ($order);
echo "<pre>";
?>
 

peretc001

Новичок
Чтоб было:
PHP:
Array
(
    [items] => Array
        (
            [0] => Array
                (
                    [title] => Товар1
                    [qty] => 1
                    [price] => 1
                )
            [1] => Array
                (
                    [title] => Товар2
                    [qty] => 1
                    [price] => 1
                )
             ........
             [n] => Array
                (
                    [title] => ТоварN
                    [qty] => 1
                    [price] => 1
                )

        )

    [details] => Array
        (
            [firstname] => 123
            [lastname] => 123
            [middlename] => 123
            [email] => [email protected]
            [cellphone] => 12345
        )
)
Т.е. чтоб выводил все товары, а не один последний.
 

radioheaded

PHP нуб
Для каждого товара у каждого соответствующего поля должен быть свой индекс

PHP:
<input type="hidden" name="items[0][title]" value="<?php echo $row['name']; ?>">
// ...
<input type="hidden" name="items[3][title]" value="<?php echo $row['name']; ?>">
 

peretc001

Новичок
получилось:

PHP:
<?php $cart = mysql_query("SELECT * FROM cart WHERE sid = '". session_id() ."' ORDER by date ASC");
			$i = 0; 
			while($row = mysql_fetch_assoc($cart)) { 
			?>
				<input type="hidden" name="items[<?php echo $i; ?>][title]" value="<?php echo @iconv("windows-1251", "UTF-8", $row['name']); ?>">
				<input type="hidden" name="items[<?php echo $i; ?>][category]" value="<?php echo @iconv("windows-1251", "UTF-8", "Мебель"); ?>">
				<input type="hidden" name="items[<?php echo $i; ?>][qty]" value="<?php echo $row['qty']; ?>">
				<input type="hidden" name="items[<?php echo $i; ?>][price]" value="<?php echo $row['price']; ?>">
	<?php $i++;  } ?>
получаем следующим образом:

PHP:
$order = array( "items" => $_POST['items'] ,
				"details" => array( 
								'firstname' => $_POST['firstname'], 
								'lastname' => $_POST['lastname'], 
								'middlename' => $_POST['middlename'], 
								'email' => $_POST['email'],
								'cellphone' => $_POST['cellphone']
								), 
				);
	
echo "<pre>";
print_r ($order);
echo "<pre>";
 
Сверху