Checkbox[] in insert loop

Overzicht

Sponsored by: Vacatures door Monsterboard

Tom Dollar

Tom Dollar

03/01/2025 20:49:28
Anchor link
Beste,

Ik heb een script waarbij ik een gegevens loop uit de DB haal en in een een form stop.
In deze form heb ik een checkbox als ik deze aanvink is de value van deze $=1.

Maar als ik dit script uitvoer komen de waardes bij de eerste regels te staan.
Onderstaand de while loop:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
                <?php $afwerking_opties_set = find_all_afwerking_opties(); ?>
                <?php while($afwerking_opties = mysqli_fetch_assoc($afwerking_opties_set)) { ?>
              <tr>
                <td><input class="checkbox" name="enabled[]" type="checkbox" value="1"></td>
                <td><input type="hidden" name="quote_id[]" value="<?php echo $quote['id']; ?>"></td>
                <td><input type="hidden" name="afwerking_id[]" value="<?php echo $afwerking_opties['id']; ?>"></td>
                <td><?php echo $afwerking_opties['benaming']; ?></td>
                <td>���<?php echo $afwerking_opties['prijs']; ?>.-</td>
              </tr>
            <?php  } mysqli_free_result($afwerking_opties_set);
            ?>


Onderstaand de uitvoer:
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
if(is_post_request()) {

    for($i=0;$i<count($_POST['afwerking_id']);$i++) {

    $afwerking = [];
    echo $afwerking['quote_id'] = $_POST['quote_id'][$i];
        echo '<br>';
    echo $afwerking['afwerking_id'] = $_POST['afwerking_id'][$i];
        echo '<br>';
    echo $afwerking['enabled'] = isset($_POST['enabled'][$i]) ? 1 : 0;
    echo '<hr>';
    //$afwerking['enabled'] = $_POST['enabled'][$i];
}
}
Gewijzigd op 03/01/2025 20:51:24 door Tom Dollar
 
PHP hulp

PHP hulp

27/05/2026 13:55:24
 
- SanThe -

- SanThe -

03/01/2025 21:12:23
Anchor link
Jouw uitvoer is geen uitvoer maar een script.
 
- Ariën  -
Beheerder

- Ariën -

03/01/2025 22:24:34
Anchor link
Inderdaad! je moet je uitvoer opslaan in bijvoorbeeld een array, en deze in je view/theme toepassen.
 
Ivo P

Ivo P

05/01/2025 11:28:48
Anchor link
Het probleem is (los van dat ik de beschrijving niet snap):

een checkbox wordt alleen meegestuurd in $_POST als deze ook aangevinkt is.

Stel je hebt 10 regels op je scherm staan, en je vinkt alleen de laatste 2 aan.

In $_POST zitten dan alleen $_POST['enabled'][0] en $_POST['enabled'][1]

Zonder een referentie naar welke regels dat waren.

Ik zou daarom kiezen voor een andere value dan 1 voor deze checkbox. ik denk $afwerking_opties['id']

Het probleem is namelijk dat bij het posten wel alle 10 de _POST['quote_id'] en ['afwerking_id'] binnen komen


afhankelijk van wat je wilt bereiken, zou je de lus
for($i=0;$i<count($_POST['afwerking_id']);$i++)

zo kunnen laten, en dan
echo $afwerking['enabled'] = in_array($_POST['afwerking_id'][$i], $_POST['enabled']) ? 1 : 0;


(daarbij kijk je dus of het huidige afwerking_id in de lus toevallig ook voorkomt in de (mogelijk kortere) lijst met
enablede id's)

of je loopt alleen door $_POST['enabled'] en te zien welke regels aangevinkt waren.
 
Tom Dollar

Tom Dollar

07/01/2025 22:47:16
Anchor link
Ivo P,

Dit is de oplossing.
Bedankt voor je input, heb hier 2 dagen naar gezocht.
 
- Ariën  -
Beheerder

- Ariën -

08/07/2025 10:46:26
Anchor link
.
 
 

Dit topic is gesloten.



Overzicht

 
 

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.