multidimensional array naar DB
Gelijk maar met de deur in huis vallen. Via een multiple select in een for loop wordt een multidimensional array gecreëerd. Deze krijg ik niet naar mijn database.
Elk item moet apart worden opgeslagen gekoppeld aan de bijbehorende omschrijving.
Dit is het formulier:
<tr>
<td>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// maak select name
$calculatie_id = 'calculatie_id'.$i;
// rest van formulier
<textarea rows="7" cols="80" name="omschrijving[]" />[code]<?php echo $omschrijving[$i]; ?></textarea>
</td>
<td colspan="2">
<select multiple="multiple" width="50" size="7" name="<?php echo $calculatie_id ?>[]" style="width: 150px">
<?php
$sql_calc = "select id, naam, actief from sp_calculatie WHERE (offerte_id = '".$row['off_offerte']."' OR offerte_id = '".$offerte_id."') AND actief = 'ja' ORDER BY id ASC";
$res_calc = mysql_query($sql_calc,$con);
while ($row_calc = mysql_fetch_assoc($res_calc)){
?>
<option value="<?php echo $row_calc["id"] ?>"><?php if (empty($row_calc["naam"])) { echo $row_calc["id"]; } else { echo $row_calc["naam"]; } ?></option>
<?php } ?></select>
</td>
</tr>
<?php } ?>
// maak select name
$calculatie_id = 'calculatie_id'.$i;
// rest van formulier
<textarea rows="7" cols="80" name="omschrijving[]" />[code]<?php echo $omschrijving[$i]; ?></textarea>
</td>
<td colspan="2">
<select multiple="multiple" width="50" size="7" name="<?php echo $calculatie_id ?>[]" style="width: 150px">
<?php
$sql_calc = "select id, naam, actief from sp_calculatie WHERE (offerte_id = '".$row['off_offerte']."' OR offerte_id = '".$offerte_id."') AND actief = 'ja' ORDER BY id ASC";
$res_calc = mysql_query($sql_calc,$con);
while ($row_calc = mysql_fetch_assoc($res_calc)){
?>
<option value="<?php echo $row_calc["id"] ?>"><?php if (empty($row_calc["naam"])) { echo $row_calc["id"]; } else { echo $row_calc["naam"]; } ?></option>
<?php } ?></select>
</td>
</tr>
<?php } ?>
Als het formulier wordt verstuurd volgt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
$calculatie_id = array();
for ($i=0; $i<=$aantal_regels; $i++)
{
$omschrijving[$i] = trim(mysql_real_escape_string($_POST['omschrijving'][$i]));
$calculatie_id[$i] = $_POST['calculatie_id'.$i];
}
// voer query uit voor inhoud omschrijving
for ($i=0; $i<=$aantal_regels; $i++)
{
if ($omschrijving[$i] != '')
{
// voer query uit
$sql_inh_omsch = "INSERT INTO sp_offerte_order_bev_omschr
(
offerte_order_bev_id,
omschrijving
)
VALUES
(
'".$id_offerte_order_bev."',
'".$omschrijving[$i]."'
)";
// resultaat van query
if(!$res_inh_omsch = mysql_query($sql_inh_omsch))
{
trigger_error(mysql_error().'<br />In query: '.$sql_inh_omsch);
}
$id_offerte_order_omsch = mysql_insert_id();
// voer query uit voor inhoud calculatie
// voer query uit
$sql_inh_calc = "INSERT INTO sp_offerte_order_bev_calc
(
id_offerte_order_omsch,
calculatie_id
)
VALUES
(
'".$id_offerte_order_omsch."',
'".$??????."'
)";
// resultaat van query
if(!$res_inh_calc = mysql_query($sql_inh_calc))
{
trigger_error(mysql_error().'<br />In query: '.$sql_inh_calc);
}
}
}
?>
$calculatie_id = array();
for ($i=0; $i<=$aantal_regels; $i++)
{
$omschrijving[$i] = trim(mysql_real_escape_string($_POST['omschrijving'][$i]));
$calculatie_id[$i] = $_POST['calculatie_id'.$i];
}
// voer query uit voor inhoud omschrijving
for ($i=0; $i<=$aantal_regels; $i++)
{
if ($omschrijving[$i] != '')
{
// voer query uit
$sql_inh_omsch = "INSERT INTO sp_offerte_order_bev_omschr
(
offerte_order_bev_id,
omschrijving
)
VALUES
(
'".$id_offerte_order_bev."',
'".$omschrijving[$i]."'
)";
// resultaat van query
if(!$res_inh_omsch = mysql_query($sql_inh_omsch))
{
trigger_error(mysql_error().'<br />In query: '.$sql_inh_omsch);
}
$id_offerte_order_omsch = mysql_insert_id();
// voer query uit voor inhoud calculatie
// voer query uit
$sql_inh_calc = "INSERT INTO sp_offerte_order_bev_calc
(
id_offerte_order_omsch,
calculatie_id
)
VALUES
(
'".$id_offerte_order_omsch."',
'".$??????."'
)";
// resultaat van query
if(!$res_inh_calc = mysql_query($sql_inh_calc))
{
trigger_error(mysql_error().'<br />In query: '.$sql_inh_calc);
}
}
}
?>
Wat moet ik invullen bij $??????
Dit is mijn output bij print_r($_POST)
[calculatie_id0] => Array ( [0] => 1 [1] => 4 ) [calculatie_id1] => Array ( [0] => 5 [1] => 6 ) [calculatie_id2] => Array ( [0] => 1 [1] => 4 [2] => 5 [3] => 6 )
Gewijzigd op 14/05/2010 15:56:47 door Mui ter
$calculatie_id[$id_offerte_order_omsch]
Yea:
ik weet het niet zeker, maar ik denk dat je dit bedoeld:
$calculatie_id[$id_offerte_order_omsch]
$calculatie_id[$id_offerte_order_omsch]
Nee, was het maar zo makkelijk ;)
Ik heb nu deze code waarmee de array wordt verwerkt zoals het moet echter word alleen de laatste waarde uit de array in mijn DB opgeslagen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
// voer query uit voor inhoud omschrijving
for ($i=0; $i<=$aantal_regels; $i++)
{
if ($omschrijving[$i] != '')
{
// voer query uit
$sql_inh_omsch = "INSERT INTO sp_offerte_order_bev_omschr
(
offerte_order_bev_id,
omschrijving
)
VALUES
(
'".$id_offerte_order_bev."',
'".$omschrijving[$i]."'
)";
// resultaat van query
if(!$res_inh_omsch = mysql_query($sql_inh_omsch))
{
trigger_error(mysql_error().'<br />In query: '.$sql_inh_omsch);
}
$id_offerte_order_omsch = mysql_insert_id();
// voer query uit voor inhoud calculatie
foreach($calculatie_id as $index => $inner_arr)
{
if ($index == $i)
{
foreach($inner_arr as $value)
// voer query uit
$sql_inh_calc = "INSERT INTO sp_offerte_order_bev_calc
(
id_offerte_order_omsch,
calculatie_id
)
VALUES
(
'".$id_offerte_order_omsch."',
'".$value."'
)";
// resultaat van query
if(!$res_inh_calc = mysql_query($sql_inh_calc))
{
trigger_error(mysql_error().'<br />In query: '.$sql_inh_calc);
}
}
}
}
}
?>
// voer query uit voor inhoud omschrijving
for ($i=0; $i<=$aantal_regels; $i++)
{
if ($omschrijving[$i] != '')
{
// voer query uit
$sql_inh_omsch = "INSERT INTO sp_offerte_order_bev_omschr
(
offerte_order_bev_id,
omschrijving
)
VALUES
(
'".$id_offerte_order_bev."',
'".$omschrijving[$i]."'
)";
// resultaat van query
if(!$res_inh_omsch = mysql_query($sql_inh_omsch))
{
trigger_error(mysql_error().'<br />In query: '.$sql_inh_omsch);
}
$id_offerte_order_omsch = mysql_insert_id();
// voer query uit voor inhoud calculatie
foreach($calculatie_id as $index => $inner_arr)
{
if ($index == $i)
{
foreach($inner_arr as $value)
// voer query uit
$sql_inh_calc = "INSERT INTO sp_offerte_order_bev_calc
(
id_offerte_order_omsch,
calculatie_id
)
VALUES
(
'".$id_offerte_order_omsch."',
'".$value."'
)";
// resultaat van query
if(!$res_inh_calc = mysql_query($sql_inh_calc))
{
trigger_error(mysql_error().'<br />In query: '.$sql_inh_calc);
}
}
}
}
}
?>
Sorry.. niet goed gekeken
Gewijzigd op 14/05/2010 22:43:45 door Peter ndshomebrew
Zet {} vanaf regel 32 na de foreach tot na het resultaat van je query.
Bedankt Yea Rupie.
Geen probleem :)
Gewijzigd op 16/05/2010 21:49:34 door Mui ter