Array wordt niet goed gevuld

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mui ter

Mui ter

16/05/2010 23:13:29
Quote Anchor link
In een for loop in mijn formulier staat een multiple select.
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)
PHP script in nieuw venster Selecteer het PHP script
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
        <?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
 
PHP hulp

PHP hulp

21/11/2024 23:19:23
 
- SanThe -

- SanThe -

16/05/2010 23:39:09
Quote Anchor link
Geen idee wat je aan het doen bent, maar okee.

Hier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
                }

?>

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().
 
Mui ter

Mui ter

17/05/2010 21:08:21
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
                }
            }

?>
Gewijzigd op 17/05/2010 21:19:17 door Mui ter
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.