Checkbox[] in insert loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ruud Clauwers

Ruud Clauwers

03/01/2025 20:49:28
Quote 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 Ruud Clauwers
 
PHP hulp

PHP hulp

05/01/2025 18:40:51
 
- SanThe -

- SanThe -

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

- Ariën -

03/01/2025 22:24:34
Quote 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
Quote 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.
 



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.