Lege checkbox posten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Programmeur

Functie omschrijving Voor een informele club in omgeving Delft zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Als ontwikkelaar kom je terecht op een afdeling van 6 medewerkers. Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Er wordt voornamelijk gewerkt met PHP, Java en

Bekijk vacature »

Mendix Developer

Functie Wat ga je doen als Mendix Developer? We leven in een wereld die snel ontwikkelt en veranderd, ook nemen bedrijfsbelangen toe en blijken risico’s moeilijker in te schatten, daarom wij op zoek naar Junior, Medior en Senior Developers die bedrijven kunnen helpen met hun screeningproces en zorgen dat deze efficiënt en 100 procent AVG compliant is. Het concept achter Mendix is duidelijk. De klant heeft een vraag/probleem. Dit kunnen we door middel van slimme software oplossen. In plaats van te werken met de nieuwste technieken en tools, wordt er gekozen voor het implementeren en maken van software dat op

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Back-End Developer in Laravel / PHP

Functie omschrijving Wij zijn op zoek naar een Medior PHP Laravel Developer voor een gaaf bedrijf in de omgeving van Amsterdam! Voor een enthousiast team die zich graag bezig houdt met softwareontwikkeling zijn wij op zoek naar versterking. Je werkt in een klein ontwikkelteam en bent zeer betrokken bij alle aspecten van de softwareoplossingen. Van het ontwerpen tot de oplevering. Binnen deze functie ga je aan de slag met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je krijgt veel te maken met koppelingen naar systemen en de verzoeken van de klant. Je komt terecht in een team, waarbij

Bekijk vacature »

IoT Developer

Ben jij innovatief, heb jij passie voor energie en ben je data gedreven? Bouw dan mee aan IoT binnen Bredenoord. Samen met een gedreven team werk jij aan mooie technische en innovatieve oplossingen. Wat houdt de functie van IoT Developer in? Binnen Bredenoord zijn wij momenteel volop in ontwikkeling met ons IoT platform. Als uitbreiding van ons team zijn wij op zoek naar een IoT Developer. Je zal in projectverband meehelpen met het implementeren van IoT vraagstukken binnen Bredenoord. Als IoT Developer op onze R&D-afdeling word je verantwoordelijk voor het verder inrichten en beheren van ons nieuwe IoT platform. Dat

Bekijk vacature »

Front-end Developer

Functie omschrijving Gezocht front-end developer! Voor een toffe organisatie in de regio Rhenen zij wij op zoek naar een front-end developer die de eindverantwoordelijkheid op zich neemt van alles wat met design te maken heeft. In deze functie heb je een adviserende rol en beschik je over een grote dosis vakinhoudelijke kennis. Samen met collega’s en klanten overleg je om aangeleverde designs om te zetten naar unieke concepten. Zo draag jij je steentje bij aan de groeiambities van de klant. Voor klanten wordt jij het vaste aanspreekpunt als het gaat over planningen hierin houdt je alle betrokkenen goed op de

Bekijk vacature »

Developer Full Stack

Functie omschrijving Developer gezocht! Ben jij een enthousiaste developer die graag wil bijdragen aan ontwikkelingen binnen een mooie organisatie? Solliciteer dan snel. Wij zijn op zoek naar een Full Stack Developer uit de regio Nijkerk die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een SaaS applicatie. Je moet beschikken over beheersing van zowel de Nederlandse als Engelse taal aangezien je samen met de klant gaat werken. Bedrijfsprofiel Je komt te werken binnen een echt familiebedrijf dat al sinds 1925 actief is binnen de FMCG branche. Het bedrijf heeft 40 medewerkers en er heerst een platte communicatiestructuur waarbij

Bekijk vacature »

Front End Developer React Vue

Dit ga je doen Meewerken aan de implementaties en ontwikkeling van nieuwe functionaliteiten van de webapplicaties; Ontwikkelen met o.a. React en Vue en HTML/CSS, ook krijg je in verband met de samenwerking ook affiniteit met de backend Ruby on Rails; Ontwikkeling aan de front end voor de koppelingen tussen de diverse systemen; Ontwerpen van interfaces en een bijdrage leveren aan de gebruikerservaring; Zorgdragen voor hoge kwaliteit van code en jezelf (en anderen) blijven verbeteren; Als Senior Front End Developer begeleid je zelf ook FE-development projecten, hierin leid je de projecten en pak jij het initiatief op (bv integratieprojecten). Hier ga

Bekijk vacature »

Back End Developer

Als Back End developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Je hebt een focus op de back end van onze software, daarvoor werken wij hoofdzakelijk met C# en .NET. Wij hanteren een full-stack benadering, wat betekent dat je naast de back-end ook meehelpt bij andere onderdelen van de code. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

C#.NET developer

Functie Het development team bestaat momenteel uit vijf backend C#/.NET ontwikkelaars. Op dit moment zit één ontwikkelaar dedicated op de mobiele applicatie. Als team werk je samen aan het zelf ontwikkelde software platform. Dit bestaat uit zowel apps als websites. Om het systeem door meer dan honderdduizenden gebruikers wordt gebruikt is het bijna vanzelfsprekend dat de kwaliteit van het product hoog moet liggen. Het systeem bestaat uit drie projecten. Je werkt dus aan deze drie projecten waarbij de focus op z’n tijd verschuift. De technieken die worden toegepast zijn o.a. .NET Core, Xamarin, C# en MVC. Je zal dus met

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Back End Developer

As a Back End developer at KUBUS you will be developing the (web) application and services of BIMcollab. You have a focus on the back end of our software, for which we mainly work with C# and .NET. We use a full-stack approach, which means that in addition to the back-end, you will also help with other parts of the code. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact

Bekijk vacature »

Junior Front-End Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale oplossingen van Coolblue. Wat doe je als Junior Front-End Developer bij Coolblue? Als Junior Front-End Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen. Op dat moment komt je wil om te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te maken. Je sterk analytisch vermogen komt dan goed van pas! Ook Junior Front-End Developer worden bij Coolblue?

Bekijk vacature »

PHP Developer (junior functie)

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed

Bekijk vacature »
Bas van de Ven

Bas van de Ven

19/04/2015 21:42:33
Quote Anchor link
Goedendag weer wat uren zitten vogelen met een probleem en nu toch maar weer een topic.

In een form toon ik diverse regels uit een tabel tblMeldingen. Deze gegevens kunnen worden aangepast en weer worden opgeslagen in de tabel met knpSave (submit). Zie onderstaande code.
Met knpMeld worden de gegevens uit tabel tblMeldingen in een txt bestand gezet op een bepaalde lokatie. Voor de gebruiker heet de knop 'melden'.
Nu wil ik ook dat een gebruiker per regel kan aangeven of het record niet hoeft worden gemeld en doe dat m.b.v. een checkbox.

Vinkt men de checkbox aan dan wordt een veld 'skip' van betreffend record uit tblMeldingen gevuld met de waarde 1.
Van alle records met de waarde 1 in het veld Skip staat in het formulier de checkbox aangevinkt.

Met onderstaande code gaat het tot nu toe prima.

Wil men de regel/ record toch melden dan moet men de checkbox weer uitvinken. Nu komt het.
Is een checkbox uitgevinkt dan krijg ik het veld 'skip' voor het betreffende record uit tabel tblMeldingen niet meer gewijzigd. Ik zou in dat geval de waarde 0 willen registreren. Zie in de code onderaan vanaf '// Uitzetten overslaan record'

Weet iemand hoe ik mijn code moet aanpassen zodat ik o.b.v. een lege checkbox ook het veld 'skip' kan wijzigen in tabel tblMeldingen.


<code>
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
function getNameFromKey($key) {
    $array = explode('_', $key);
    return $array[0];
}

function
getIdFromKey($key) {
    $array = explode('_', $key);
    return $array[1];
}


$array = array();

foreach($_POST as $key => $value) {
    
    $array[getIdFromKey($key)][getNameFromKey($key)] = $value;
}

foreach($array as $id) {

 foreach($id as $key => $value) {

    
  foreach($id as $key => $value) {
    if ($key == 'txtId' ) { /*echo $key.'='.$value.' ';*/ $updId = $value; }

    if ($key == 'txtDatum' ) { $txtDag = $value; $dag = date_create($value); $updDag =  date_format($dag, 'Y-m-d'); } // $txtDag tbv MeldAfleveren.php Niet weggooien dus !!    
    if ($key == 'cntrDatum' ) { $cntrDag = date_create($value); }
    if ($key == 'minDatum' ) { $laatsteDag = date_create($value); $minDag = date_format($laatsteDag, 'Y-m-d'); }
    
    if ($key == 'kzlAfnmr')  { $updRelatie = $value; }  // in MeldAanwas.php
    if ($key == 'cntrAfnmr') { $cntrRelatie = $value; } // in MeldAanwas.php
    
                                        }
                                    
                                    
// CONTROLE op gewijzigde velden

// Wijzigen datum

if (!empty($updDag) && $dag <> $cntrDag && $updDag >= $minDag)
{


 if($curr_url == $url.'MeldAanwas.php')     {$datumveld = "aanwasdm = \"$updDag\" ";}
 if($curr_url == $url.'MeldGeboortes.php')    {$datumveld = "geb_datum = \"$updDag\" ";    $datumbezet = "van = \"$updDag\" ";
    $upd_tblBezetting = "UPDATE tblBezetting SET ".$datumbezet." WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and levensnummer = '$cntrLevnr' ";    
        mysqli_query($db,$upd_tblBezetting) or die (mysqli_error($db));
 }

 if($curr_url == $url.'MeldAfleveren.php')    {$datumveld = "afleverdm = \"$updDag\" ";    $datumbezet = "tot = \"$updDag\" ";
    if ($cntrfase == 'lam') {
      $upd_tblBezetting = "UPDATE tblBezetting SET ".$datumbezet." WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and levensnummer = '$cntrLevnr' ";    
        mysqli_query($db,$upd_tblBezetting) or die (mysqli_error($db)); }
 
    }

 if($curr_url == $url.'MeldUitval.php')        {$datumveld = "uitvaldm = \"$updDag\" ";}
 
    $upd_tblDieren = "UPDATE tblDieren SET ".$datumveld." WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and levensnummer = '$cntrLevnr' ";    
        mysqli_query($db,$upd_tblDieren) or die (mysqli_error($db));    
    
    $upd_tblMeldingen = "UPDATE tblMeldingen SET datum = \"$updDag\" WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";    
        mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));
        }


// Wijzigen bestemmening
 if($curr_url == $url.'MeldAfleveren.php' || $curr_url == $url.'MeldUitval.php') {
if ((!empty($updRelatie) && empty($cntrRelatie)) ||  (empty($updRelatie) && !empty($cntrRelatie)) || ( !empty($updRelatie) && !empty($cntrRelatie) && $updRelatie <> $cntrRelatie) )
{
    if (!empty($updRelatie)) {    $toekomst = "ubn_best = ".$updRelatie;    } else {    $toekomst = "ubn_best = NULL";    }
    $upd_tblMeldingen = "UPDATE tblMeldingen SET " . $toekomst . " WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";    
        mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));
}
    }

// Wijzigen herkomst
if($curr_url == $url.'MeldAanwas.php')     {
if ((!empty($updRelatie) && empty($cntrRelatie)) ||  (empty($updRelatie) && !empty($cntrRelatie)) || ( !empty($updRelatie) && !empty($cntrRelatie) && $updRelatie <> $cntrRelatie) )
{
    if (!empty($updRelatie)) {    $herkomst = "ubn_herk = ".$updRelatie;    } else {    $herkomst = "ubn_herk = NULL";    }
    $upd_tblMeldingen = "UPDATE tblMeldingen SET " . $herkomst . " WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";    
        mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));
}
    }

// EINDE CONTROLE op gewijzigde velden

    

//  Aanzetten overslaan record    

  if ($key == 'chbSkip' && !empty($value))     {  /* Alleen als checkbox chbSkip_$Id een waarde bevat*/  
    
  foreach($id as $key => $value) {
    if ($key == 'txtId' ) { echo $key.' key ='.$value.'<br/> '; $updId = $value; }
    
        $upd_tblMeldingen = "UPDATE tblMeldingen SET skip = 1 WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";    
        mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));    }
        
        }
// EINDE Alleen als checkbox chbSkip_$Id een waarde bevat
    

// Uitzetten overslaan record

  if ($key == 'chbSkip' && !isset($value))     {  /* Alleen als checkbox chbSkip_$Id GEEN waarde bevat*/  
    
  foreach($id as $key => $value) {
    if ($key == 'txtId' ) { echo $key.' key ='.$value.'<br/> '; $updId = $value; }
    
        $upd_tblMeldingen = "UPDATE tblMeldingen SET skip = 0 WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";    
        mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));    }
        
        }
// EINDE Alleen als checkbox chbSkip_$Id GEEN waarde bevat
        
        
    
    }
    }

                           

?>

</code>
 
PHP hulp

PHP hulp

25/04/2024 23:33:07
 
Thomas van den Heuvel

Thomas van den Heuvel

19/04/2015 22:11:45
Quote Anchor link
Uhh, ik hoop dat je niet verwacht dat we bovenstaande code gaan ontleden (wat een redelijke brei is als je het mij vraagt).

Ik kan zo gauw iha 3 oplossingen bedenken, weet niet welke past in jouw geval:

1. als je form submit, zorg je dat alle checkboxen die niet aangevinkt zijn de waarde 0 krijgen, daarna vink je ze alsnog aan. Dit zorgt ervoor dat alle checkboxen worden gepost met een status of ze aangevinkt waren (value 1) of niet (value 0).

2. verwijder alle velden die geassocieerd waren met voorheen aangevinkte checkboxen, en vul deze opnieuw. Maar dit kan resulteren in het verbreken van relaties wat ongewenst kan zijn (cascading deletes). Als je eea in kopppeltabellen hebt opgezet kan dit een valide strategie zijn, maar ik laat dit verder aan jouw oordeel over.

3. alles handmatig vergelijken: je hebt een lijst van alles wat potentieel aangevinkt kan zijn:
aanwezig en nu niet aangevinkt > verwijder
aanwezig en (nog steeds) aangevinkt > skip
afwezig en nu niet aangevinkt > skip
afwezig en nu aangevinkt > voeg toe
Maar als je je database / queries zo hebt opgezet is dit het moment dat je dit zal gaan betreuren

Wat ik je dringend zou aanraaden is bovenstaande code wat meer uit elkaar trekken zodat de werking eenduidiger wordt. Daarnaast mag je best wat ruimer gebruik maken van annotatie (commentaar in code) zodat andere mensen ook (beter) begrijpen waar deze code over gaat en wat deze doet.
 
Bas van de Ven

Bas van de Ven

21/04/2015 21:43:50
Quote Anchor link
Als ik je uitleg goed begrijp heb ik de opties al doorlopen zonder succes.
Ik heb overtollige code verwijderd en mijn doelstelling nader toelichten.

Met 1 button (knpSave) wil ik meerdere regels in een form tegelijk kunnen opslaan waarbij 1 regel gelijk staat aan een record in de tabel tblMeldingen. Elk veld in het form heeft per regel zijn unieke naam door deze naam aan te vullen met $Id waarbij $Id de unieke sleutel is uit tblMeldingen. Dus het enigste datumveld heet niet <code>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php name = "txtDatum" ?>
</code> maar <code>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php name = "txtDatum_$Id" ?>
</code>. Zo heeft elke regel zijn unieke datumnaam. Omdat ik dat voor elk veld heb gedaan kan ik met onderstaand script per regel en per veld de waarde tonen.
Het script heeft de naam save_meldingen.php dat ik include in een vijftal scripts met elk hun eigen soort melding.

<code>
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
<?php
function getNameFromKey($key) {
    $array = explode('_', $key);
    return $array[0];
}

function
getIdFromKey($key) {
    $array = explode('_', $key);
    return $array[1];
}


$array = array();

foreach($_POST as $key => $value) {
    
    $array[getIdFromKey($key)][getNameFromKey($key)] = $value;
}

foreach($array as $id) {

    
  foreach($id as $key => $value) { /* $key is de veldnaam $value is de waarde uit het veld */
    if ($key == 'txtId' )         { echo $key.'='.$value; $updId = $value;}
    if ($key == 'txtDierdm' ) { echo $key.'='.$value; $txtDag = $value; }
    if ($key == 'kzlAfnmr')     { echo $key.'='.$value."<br/>"; $updRelatie = $value; }    
    if ($key == 'chbSkip' )      { echo $key.'='.$value."<br/>"; $updSkip = $value; }
    
                                    }

                                    
        // Hier allerlei bewerkingen met variabelen $updId, $txtDag, $updRelatie en GRAAG OOK MET $updSkip !!!                    
                                    
                                    } ?>

</code>
Dit is het resultaat :
txtId=4 txtDierdm=01-12-2014 kzlAfnmr=
txtId=5 txtDierdm=01-12-2014 kzlAfnmr=2152444 chbSkip=1
txtId=6 txtDierdm=01-12-2015 kzlAfnmr=1058721 chbSkip=1
txtId=7 txtDierdm= kzlAfnmr=1058721
txtId=8 txtDierdm=01-12-2014 kzlAfnmr=1058721
txtId=9 txtDierdm=01-12-2014 kzlAfnmr=2152444

Als een tekstveld of keuzelijst leeg is wordt toch de naam van het veld getoond, zie resultaat. Echter niet als het veld een checkbox is dat niet is aangevinkt. Van de 5 regels in het from heb ik twee checkboxen aangevinkt. Het resultaat is terug te vinden achter txtId 5 en 6.

Is een checkbox niet aangevinkt wil ik toch een waarde kunnen posten. Nl. de waarde 0.
Sterker nog in mijn voorbeeld blijft de variabele $updSkip vanaf txtId 6 de waarde 1 houden waardoor Id 7 t/m 9 ook de waarde 1 mee krijgen.

Weet iemand hoe ik in mijn code ook een lege checkbox kan posten.
Of weet iemand hoe ik met 1 submit meerdere regels krijg gewijzigd incl. lege checkboxen ?
Gewijzigd op 21/04/2015 22:25:06 door Bas van de Ven
 
- SanThe -

- SanThe -

21/04/2015 21:50:00
Quote Anchor link
Bas van de Ven op 21/04/2015 21:43:50:
Echter niet als het veld een checkbox is dat niet is aangevinkt.


Een checkbox die niet is aangevinkt wordt niet meeverzonden.
 
Bas van de Ven

Bas van de Ven

21/04/2015 21:55:58
Quote Anchor link
O nee niet vanaf Id 6 maar waarom wordt dan het veld skip uit tabel tblMeldingen gevuld met de waarde 1 ?

Toevoeging op 21/04/2015 21:57:42:

<code>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if (isset($updId)) { if (isset($updSkip)) { $updSkip = 1; } else { $updSkip = 0; }
 $upd_tblMeldingen = "UPDATE tblMeldingen SET skip = '$updSkip' WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";    
        mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db)); ?>

</code>
Gewijzigd op 21/04/2015 22:06:48 door Bas van de Ven
 
Thomas van den Heuvel

Thomas van den Heuvel

21/04/2015 22:05:25
Quote Anchor link
Heb je al overwogen om een andere aanpak te volgen? Bijvoorbeeld:

- elk item een radiobutton geven (melden: (o) ja (o) nee)
- dat je items kunt slepen tussen twee (select) lijsten oid

Niet aangevinkte checkboxen worden in het geheel niet verstuurd, dus die zijn in dit geval niet zo handig omdat de "niet-aangevinkte-toestand" ook betekenis heeft.

EDIT: het is trouwens prima mogelijk om meerdimensionale arrays in je formuliervelden te stoppen, dus je hoeft deze niet na afloop te gaan verbouwen, je kunt deze meteen in de goede vorm in je formulier stoppen volgens mij.
Gewijzigd op 21/04/2015 22:07:11 door Thomas van den Heuvel
 
Bas van de Ven

Bas van de Ven

21/04/2015 22:10:25
Quote Anchor link
Ik ben meer van de checkboxen maar zal de radiobuttons toch eens serieuzer gaan overwegen als ik je zo hoor.

Toevoeging op 21/04/2015 22:16:13:

Hmm ... kun je je Edit toelichten met wat code. Of wordt dat te uitgebreid ?
 
- SanThe -

- SanThe -

21/04/2015 22:19:15
Quote Anchor link
Checkbox kan wel maar dan inderdaad in een if().

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_POST['checkboxnaam']))
{

   // aangevinkt
}
else
{
   // niet aangevinkt
}
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

21/04/2015 23:53:40
Quote Anchor link
<input type="text" name="stuff[<key>][<id>]" value="<value>" /> werkt volgens mij wel?

Ook een idee: stuur een hidden veld mee met alle id's, en vergelijk dat dan met de aangevinkte checkboxen. Maar dat is een beetje een gekunstelde oplossing als je het mij vraagt.
 
Bas van de Ven

Bas van de Ven

27/04/2015 14:47:04
Quote Anchor link
Het is opgelost door een hidden veld toe te voegen voor de checkbox met de waarde 0. Dit hidden veld heeft dezelfde naam als de checkbox.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<input type = "hidden" name = <?php echo " \"chbSkip_$Id\" "; ?> value = 0 >
<input type = "checkbox"  name = <?php echo "chbSkip_$Id" ; ?> value = 1 >

In het kader van performance verbetering (waar ik last van heb bij het opbouwen van het formulier) had ik gehoopt een oplossing te vinden in array veldnamen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<input type = "hidden" name = "chbSkip[]" value = 0 >
<input type = "checkbox" name = "chbSkip[]" value = 1 >

Ook daar loop ik aan tegen het probleem dat checkboxen niet bestaan na posten als deze op dat moment leeg zijn. Bovendien werkt de oplossing met een hidden veld niet bij array velden.

Daarom heb ik me verdiept in meerdimensionale array's maar kan niet volgen of daar een oplossing ligt voor mijn probleem.

Mijn bovenstaande code is ongewijzigd. De formulier velden zien er nu zo uit. Overtollige code heb ik weer verwijderd om het zo begrijpbaar mogelijk te houden.
<code>
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
<?php
<tr>
<
td> <!--meldId:--> <input type= "hidden" echo "name=\"txtId_$Id\" value = $Id";  > </td>
<
td> <input type = "text" name = echo " \"txtDierdm_$Id\" value = $date ";  >  </td>
<
td>
<!--
KZLAFNEMER    -->
 <
select echo "name=\"kzlAfnmr_$Id\" "; value = "" >
  <
option></option>
    
    
    //  ****  Opbouw keuze lijst Afnemer uit de database ****

 // EINDE KZLAFNEMER

        
</select>
}
<
/td>
<
td>
<
input type = "hidden" name = echo " \"chbSkip_$Id\" "; value = 0 >
<
input type = "checkbox"  name = echo "chbSkip_$Id" ; value = 1 >
<
/td>

<
/tr> ?>

</code>
Gewijzigd op 27/04/2015 14:57:16 door Bas van de Ven
 
Thomas van den Heuvel

Thomas van den Heuvel

27/04/2015 15:35:39
Quote Anchor link
Als je niet na afloop op een of andere manier kunt bepalen welke items er mogelijk allemaal zijn (dmv een query ofzo), dan is optie #1 uit mijn eerdere reactie nog de meest "cleane" oplossing denk ik.

Hieronder een proof-of-concept:
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
<?php
header('Content-Type: text/html; charset=UTF-8');

// helper function
function escape($in) {
    return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}

?>

<!DOCTYPE html>
<html>
<head>
<title>Checkbox test</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
</head>

<body>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    ?>
<pre><?php echo print_r(array_map('escape', $_POST['cb']), true) ?></pre>
    <hr /><?php
}
?>

<form id="theForm" action="<?php echo escape($_SERVER['PHP_SELF']) ?>" method="post">
<p><input type="checkbox" name="cb[0]" id="cb_1" value="1" /> <label for="cb_1">first</label></p>
<p><input type="checkbox" name="cb[1]" id="cb_2" value="1" /> <label for="cb_2">second</label></p>
<p><input type="checkbox" name="cb[2]" id="cb_3" value="1" /> <label for="cb_3">third</label></p>
<p><input type="checkbox" name="cb[3]" id="cb_4" value="1" /> <label for="cb_4">fourth</label></p>
<p><input type="checkbox" name="cb[4]" id="cb_5" value="1" /> <label for="cb_5">fifth</label></p>
<button type="submit">submit</button>
</form>
<script type="text/javascript">
//<![CDATA[
$().ready(function() {
    $('#theForm').submit(function(e) {
        // inspect all checkboxes starting with cb
        $('input[name^=cb]').each(function() {
            if ($(this).is(':checked') === false) {
                // update value to 0
                $(this).val('0');
                // check them anyway so they are posted
                $(this).prop('checked', true);
            }
        });
    });
});
//]]>
</script>
</body>
</html>
 



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.