Update uitvoeren met foreach

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas de vries

thomas de vries

06/09/2012 09:11:02
Quote Anchor link
Hallo medeleden,

Ik heb een vraag waar ik niet echt uitkom.

Ik heb een form
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
<?php
echo '
    <form method="post" action="">
    <table width="100%">
    <tr>
        <td>CatOrder:</td>
        <td>Category:</td>
        <td>CatId:</td>
    </tr>'
;
    while($cat = mssql_fetch_assoc($res_cat))
    {

        echo '
        <tr>
        <td><input type="text" name="catorder[]" value="'
.$cat['catorder'].'" /></td>
        <td>'
.$cat['category'].'</td>
        <td>'
.$cat['catid'].'</td>
        <input type="hidden" name="catid[]" value="'
.$cat['catid'].'" />';
    }

    echo '
    </tr>
    <tr>
        <td colspan="3"><input type="submit" name="save" value="Save" /></td>
    </tr>
    </table></form>'
;
?>


Nu zit ik met het volgende te knoeien
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($_POST['catorder'] AS $order)
{

echo $order; //Dit geeft netjes de order 1234
}
?>


Als ik nu de database wil updaten
dan moet dit ook via $_POST['catid'] worden gedaan

Ik heb dit geprobeerd
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
foreach($_POST['catorder'] AS $order)
{

echo $order; //Dit geeft netjes de order 1234
foreach($_POST['catid'] AS $catid)
{

echo $order;
echo $catid.'<br/>'; //Dit geeft echter 21 22 23 24 31 32 33 34
}
}

?>


Hoe zorg ik ervoor
dat als ik catid 1 kan updaten met een andere order.

Hoop dat het zo duidelijk is.
Met vriendelijke groet

Thomas de Vries
 
PHP hulp

PHP hulp

21/12/2024 17:52:29
 
Eddy E

Eddy E

06/09/2012 09:30:23
Quote Anchor link
Zowel $_POST['catorder'] als $_POST['catid'] zijn arrays.
Blijkbaar heeft catorder maar 1 waarde (namelijk 1234).
Maar het catid heeft er veel meer (21, 22, 23, 24, 31, 32 en 33 etc).

Hoe komt dat? Dat zit hem in je formulier. Daar is ook catorder steeds hetzelfde?
Die vul je vanuit een database (.... waarom? wat heeft de gebruiker te doen?).
 
Thomas de vries

thomas de vries

06/09/2012 09:35:20
Quote Anchor link
catid heeft ook maar 4 categorieën
dus ook 1234 hetzelfde als catorder ook 1234

die 21 22 23 24 31 32
is zo opgebouwd
eerste getal is van catorder en 2de getal is van catid.

wat ik dus wil is als volgt

Stel je hebt 4 catid's
1
2
3
4

Die als volgt zijn geordert
Orderid
2
1
4
3
Dus dan krijgen wij dit
OrderId -- CatID
2 -- 1
1 -- 2
4 -- 3
3 -- 4

Als de user nu de eerste wijzigd naar 3 en de laatste naar 2
dan moet het dus er zo uitkomen te zien
3 -- 1
1 -- 2
4 -- 3
2 -- 4
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/09/2012 09:47:36
Quote Anchor link
Als beide arrays gelijk lopen kan je dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$html
= '';
foreach($_POST['catorder'] AS $key => $value) {
    $html .= 'Categorie ' . $_POST['catid'][$key] .
        ' op positie ' . $value . "<br>";
}

echo $html;
?>

Handiger is om in het form de id mee te geven in de naam van de input
 



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.