Temat: konwersja $_POST do tablicy

Cześć

Potrzebuję małej pomocy. Chcę przekonwertować do tablicy to, co wysłałem z formularza przez $_POST na stronę.
Oto dane:

 $_POST['name.1']='xxx';
$_POST['height.1']='100';
$_POST['qty.1']='2';
$_POST['op.1.0']='color';
$_POST['op.1.1']='size';
$_POST['opv.1.0.0']='red';
$_POST['opv.1.0.1']='blue';
$_POST['opv.1.1.0']='xl';
$_POST['opv.1.1.1']='l';
$_POST['opv.1.1.2']='xxl';
$_POST['name.2']='yyy';
$_POST['height.2']='10';
$_POST['qty.2']='4';
$_POST['number.2']='4';
$_POST['op.2.0']='color';
$_POST['op.2.1']='weight';
$_POST['opv.2.0.0']='red';
$_POST['opv.2.0.1']='silver';
$_POST['opv.2.1.0']='90';
$_POST['opv.2.1.1']='60';
$_POST['opv.2.1.2']='42';


Chciałbym mieć format łatwy do zapisania do bazy danych do różnych tabel. Wymyśliłem, że taki efekt byłby ok, bo nie wiem ile danych będzie wysłanych. Mam 3 poziomy głębokości: Pierwsze .1 to produkt, drugie .1 to opcja, a trzecie .1 to wartość opcji.
Chcę mieć zapisane wszystkie opcje, aby potem komuś wyświetlić możliwość zmiany opcji, którą ktoś utworzył.

Przykład finalny:
    $product[1]['name']='xxx';
$product[1]['height']='100';
$product[1]['qty']='2';
$product[1]['op'][0]='color';
$product[1]['op'][1]=size;
$product[1]['opv'][0][0]='red';
$product[1]['opv'][0][1]='blue';
$product[1]['opv'][1][0]='xl';
$product[1]['opv'][1][1]='l';
$product[1]['opv'][1][2]='xxl';
$product[2]['name']='yyy';
$product[2]['height']='10';
$product[2]['qty']='2';
$product[2]['number']='2';
$product[2]['op'][0]='color';
$product[2]['op'][1]='weight';
$product[2]['opv'][0][0]='red';
$product[2]['opv'][0][1]='silver';
$product[2]['opv'][1][0]='90';
$product[2]['opv'][1][1]='60';
$product[2]['opv'][1][2]='42';



Jak najprościej dane wysłane przekształcić napodobną tablicę?

Z góry dzięki za pomoc
Marek Karmelski

Marek Karmelski PHP Programmer,
Magento dev, Agencja
reklamowa White
Ducky

Temat: konwersja $_POST do tablicy

Kiedyś na potrzeby routingu wyszperałem w necie taką funkcję i ją zmodyfikowałem, może będzie pomocna:


function pathToTab(&$arr, $path, $value) {
$keys = explode('.', $path);
while ($key = array_shift($keys)) {
$arr = &$arr[$key];
}
$arr = $value;
}

$tab = null;

pathToTab($tab, 'router.controller', 'content');
pathToTab($tab, 'router.action', 'show');
pathToTab($tab, 'router.id', 25);

print_r($tab);
Tomasz Zadora

Tomasz Zadora programuję

Temat: konwersja $_POST do tablicy

Panowie to nie tak.

Sprawdźcie sobie ten kod i formularz.


<form action="" method="post">
<fieldset>

Nazwa 1: <input type="text" name="name[]" /><br /><br />

Nazwa 2: <input type="text" name="name[]" /><br /><br />

Nazwa 3: <input type="text" name="name[]" /><br /><br />

<input type="submit" value="wyślij" />

</fieldset>
</form>

<br /><br />

<pre>
<?php
if (isset($_POST) && is_array($_POST)) {
print_r($_POST);
}
?>
</pre>
Ten post został edytowany przez Autora dnia 02.07.15 o godzinie 01:33
Marek Karmelski

Marek Karmelski PHP Programmer,
Magento dev, Agencja
reklamowa White
Ducky

Temat: konwersja $_POST do tablicy

Wiem do czego zmierzasz Tomek, ale Arek, wykorzystuje tablicę asocjacyjną w formularzu, więc jego będzie wyglądał mniej więcej tak:


<form action="" method="post">
<fieldset>

Nazwa 1: <input type="text" name="product[name.1]" /><br /><br />

Nazwa 2: <input type="text" name="product[qty.1]" /><br /><br />

Nazwa 3: <input type="text" name="product[op.1.0]" /><br /><br />

<input type="submit" value="wyślij" />

</fieldset>
</form>
Ten post został edytowany przez Autora dnia 02.07.15 o godzinie 10:52

Temat: konwersja $_POST do tablicy

Dokładnie. Tutaj marek ma rację. Mi nie chodzi o typowy formularz. Wczoraj nie byłem online, ale dziś sobie sprawdzę funkcję Marka i napiszę o efektach. Dzięki za pomoc
Tomasz Zadora

Tomasz Zadora programuję

Temat: konwersja $_POST do tablicy

Nie... nie trzeba żadnych niepotrzebnych pętli:


<form action="" method="post">
<fieldset>

Nazwa 1: <input type="text" name="product['name'][]" /><br /><br />

Nazwa 2: <input type="text" name="product['name'][]" /><br /><br />

Nazwa 3: <input type="text" name="product['name'][]" /><br /><br />

<input type="submit" value="wyślij" />

</fieldset>
</form>

<br /><br />

<pre>
<?php
if (isset($_POST) && is_array($_POST)) {
print_r($_POST);
}
?>
</pre>


Wynik po wpisaniu aaa, bbb, ccc kolejno do pól:


Array
(
[product] => Array
(
['name'] => Array
(
[0] => aaa
[1] => bbb
[2] => ccc
)

)

)


ale jak ktoś chce sobie utrudnić życie i spowolnić program, można się bawić z pętlami - komputery mocne, procesory i pamięć tania, po co robić optymalnie :)Ten post został edytowany przez Autora dnia 03.07.15 o godzinie 16:21

Następna dyskusja:

Konwersja tablicy wyniku my...




Wyślij zaproszenie do