multidimensional array naar DB

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mui ter

Mui ter

14/05/2010 15:49:43
Quote Anchor link
Eindelijk mijn favorite forum weer online!

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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
for ($i=0; $i<=$aantal_regels_corr; $i++)
    {
    ?>

<tr>
<td>
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
<?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)
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
<?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);
}

}
}

?>


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
 
PHP hulp

PHP hulp

16/05/2021 11:52:33
 
Yea Rupie

Yea Rupie

14/05/2010 15:59:03
Quote Anchor link
ik weet het niet zeker, maar ik denk dat je dit bedoeld:
$calculatie_id[$id_offerte_order_omsch]
 
Mui ter

Mui ter

14/05/2010 22:12:19
Quote Anchor link
Yea:
ik weet het niet zeker, maar ik denk dat je dit bedoeld:
$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)
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
<?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);
                }
            }
        }

}
}

?>
 
Peter ndshomebrew

Peter ndshomebrew

14/05/2010 22:42:37
Quote Anchor link
Je moet wel de database in een while zetten als je meerdere dingen in de database wil zetten ;)

Sorry.. niet goed gekeken
Gewijzigd op 14/05/2010 22:43:45 door Peter ndshomebrew
 
Yea Rupie

Yea Rupie

14/05/2010 22:55:31
Quote Anchor link
Je maakt nu alle $sql_inh_calc aan maar je voert ze niet meteen uit, daarom werkt alleen de laatste.
Zet {} vanaf regel 32 na de foreach tot na het resultaat van je query.
 
Mui ter

Mui ter

15/05/2010 11:22:05
Quote Anchor link
Bedankt Yea Rupie.
 
Yearupie Achternaamloos

Yearupie Achternaamloos

15/05/2010 11:25:46
Quote Anchor link
Geen probleem :)
 
Mui ter

Mui ter

15/05/2010 11:40:44
Quote Anchor link
Gelukkig ;)
Gewijzigd op 16/05/2010 21:49:34 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.