Array wordt niet goed gevuld
Uit mijn db wil ik de gegevens halen zodat de gegevens die aanwezig zijn in mijn db worden weergegeven als selected in de multiple select.
Deze gegeven staan in mijn db:
`sp_offerte_order_bev_calc` (`id`, `offerte_order_bev_id`, `offerte_order_omsch_id`, `calculatie_id`) VALUES
(7, 2, 1, 1),
(8, 2, 1, 4),
(9, 2, 2, 4),
(10, 2, 2, 5),
(11, 2, 3, 5),
(12, 2, 3, 6);
Mijn code is als 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
57
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
57
<?php
$sql_i = "SELECT
id,
omschrijving
FROM sp_offerte_order_bev_omschr
WHERE offerte_order_bev_id = '".$row['bev_id']."'
ORDER BY id ASC";
if(!$res_i = mysql_query($sql_i))
{
trigger_error(mysql_error().'<br />In query: '.$sql_i);
}
else
{
while ($row_i = mysql_fetch_array($res_i))
{
$i++;
$sql_i_calc = "SELECT
calculatie_id
FROM sp_offerte_order_bev_calc
WHERE offerte_order_omsch_id = '".$row_i['id']."'
ORDER BY id ASC";
if(!$res_i_calc = mysql_query($sql_i_calc))
{
trigger_error(mysql_error().'<br />In query: '.$sql_i_calc);
}
else
{
$calculatie_id[$i] = array();
while ($row_i_calc = mysql_fetch_array($res_i_calc))
{
$calculatie_id[$i] = $row_i_calc['calculatie_id'];
}
}
?>
<tr>
<td colspan="2">
<select multiple="multiple" width="50" size="7" name="<?php echo $name_calculatie_id ?>[]" style="width: 150">
<?php
$sql_calc = "select id, naam, actief from sp_calculatie WHERE (offerte_id = '".$row['bev_offerte_id']."' 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 <?php if (isset($calculatie_id[$i]) && in_array($row_calc["id"], $calculatie_id[$i])){ echo 'selected="selected"'; } ?> 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
}
}
?>
$sql_i = "SELECT
id,
omschrijving
FROM sp_offerte_order_bev_omschr
WHERE offerte_order_bev_id = '".$row['bev_id']."'
ORDER BY id ASC";
if(!$res_i = mysql_query($sql_i))
{
trigger_error(mysql_error().'<br />In query: '.$sql_i);
}
else
{
while ($row_i = mysql_fetch_array($res_i))
{
$i++;
$sql_i_calc = "SELECT
calculatie_id
FROM sp_offerte_order_bev_calc
WHERE offerte_order_omsch_id = '".$row_i['id']."'
ORDER BY id ASC";
if(!$res_i_calc = mysql_query($sql_i_calc))
{
trigger_error(mysql_error().'<br />In query: '.$sql_i_calc);
}
else
{
$calculatie_id[$i] = array();
while ($row_i_calc = mysql_fetch_array($res_i_calc))
{
$calculatie_id[$i] = $row_i_calc['calculatie_id'];
}
}
?>
<tr>
<td colspan="2">
<select multiple="multiple" width="50" size="7" name="<?php echo $name_calculatie_id ?>[]" style="width: 150">
<?php
$sql_calc = "select id, naam, actief from sp_calculatie WHERE (offerte_id = '".$row['bev_offerte_id']."' 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 <?php if (isset($calculatie_id[$i]) && in_array($row_calc["id"], $calculatie_id[$i])){ echo 'selected="selected"'; } ?> 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
}
}
?>
print_r($calculatie_id[$i]); geeft nu 4 5 6.
Dit is niet wat ik zoek, in dit geval 3 arrays met als waarde
14
45
56
Wat gaat er fout?
Gewijzigd op 16/05/2010 23:14:55 door Mui ter
Hier:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$calculatie_id[$i] = array();
while ($row_i_calc = mysql_fetch_array($res_i_calc))
{
$calculatie_id[$i] = $row_i_calc['calculatie_id'];
}
?>
$calculatie_id[$i] = array();
while ($row_i_calc = mysql_fetch_array($res_i_calc))
{
$calculatie_id[$i] = $row_i_calc['calculatie_id'];
}
?>
maak je van $calculatie_id[$i] een leeg array() die je vervolgens in de while een x-aantal keer vervangt door een enkele waarde, namelijk de waarde die in $row_i_calc['calculatie_id'] zit. Als de while dus klaar is zal alléén de laatst gevonden waarde in $calculatie_id[$i] zitten en dat is dan dus géén array().
SanThe:
Geen idee wat je aan het doen bent, maar okee.
Ik sta open voor suggesties.
De bedoeling is dat ik in mijn multiple select (die in een for loop staat)de waarde geselecteerd krijg die in de db bestaan.
Ik heb het nu op kunnen lossen met:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$calculatie_id[$i] = array();
$sql_i_calc = "SELECT
calculatie_id
FROM sp_offerte_order_bev_calc
WHERE offerte_order_omsch_id = '".$row_i['id']."'
ORDER BY id ASC";
if(!$res_i_calc = mysql_query($sql_i_calc))
{
trigger_error(mysql_error().'<br />In query: '.$sql_i_calc);
}
else
{
while ($row_i_calc = mysql_fetch_assoc($res_i_calc))
{
$calculatie_id[$i][] = $row_i_calc['calculatie_id'];
}
}
?>
$calculatie_id[$i] = array();
$sql_i_calc = "SELECT
calculatie_id
FROM sp_offerte_order_bev_calc
WHERE offerte_order_omsch_id = '".$row_i['id']."'
ORDER BY id ASC";
if(!$res_i_calc = mysql_query($sql_i_calc))
{
trigger_error(mysql_error().'<br />In query: '.$sql_i_calc);
}
else
{
while ($row_i_calc = mysql_fetch_assoc($res_i_calc))
{
$calculatie_id[$i][] = $row_i_calc['calculatie_id'];
}
}
?>
Gewijzigd op 17/05/2010 21:19:17 door Mui ter