Lege checkbox posten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP developer (Laravel, Docker, Gitlab-CI)

Functie Het IT-team bestaat momenteel uit 4 ontwikkelaars. Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. Een groot deel van de systemen is gebouwd met behulp van het Laravel framework en PHP (minimaal 7.2), Docker voor lokaab gebruik en Gitlab-CI voor het deployen

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Medior Front end developer React

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor op de

Bekijk vacature »

Ontwikkelaar Identity & Access Management

Dit ga je doen Als Identity & Access Management Ontwikkelaar zorg jij er voor dat studenten, medewerkers en docenten de juiste benodigdheden op het juiste moment kunnen gebruiken; Het juist opslaan van onderzoeksdata en het openbaar beschikbaar stellen van publicaties (Open Access); Studenten, collega's en wetenschappers ondersteunen; Agile en Scrum werken; Technisch Applicatiebeheer; Ontwikkelen in One Identity Manager en VB.NET. Hier ga je werken Als Ontwikkelaar kom je terecht in een hecht team die zich richt op wetenschappelijke informatie en ICT. Jij bent degene die er voor zorgt dat alle informatie, uit diverse onderzoeken, bij de juiste personen terecht komt.

Bekijk vacature »

Traineeship Java Developer

Functie Wat ga je doen als Java Developer? Jij start via ons bij deze opdrachtgever als Trainee Java ontwikkelaar, tijdens het traineeship ga je in 1 jaar van de basis naar professioneel Java ontwikkelaar. Je start samen met een groep trainees, volgt de aangeboden cursussen en gaat aan de slag bij één van onze opdrachtgevers. Na een aantal maanden volgt de volgende opdracht. Door de groei in jouw rol kom je op steeds complexere opdrachten terecht. Veel afwisseling dus. Collega’s met ervaring helpen je bij deze groei en samen met jouw coach ga je een persoonlijke leerplan opzetten om jou

Bekijk vacature »

C# Unity Developer

Functieomschrijving Ontwikkel jij mee door applicaties te bouwen die bijdragen aan het optimaliseren van processen? Voor een erkende werkgever in regio Tilburg zijn wij op zoek naar een Unity C# Developer die graag de uitdaging aangaat! Jouw werkzaamheden zullen er als volgt uitzien: Je bent een luisterend oor naar klanten en vertaalt hun wensen door naar bruikbare software; Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van processen; Je bent verantwoordelijk voor het uitvoeren van updates/aanpassingen aan de reeds draaiende applicaties. Bedrijfsprofiel Je komt te werken voor een internationale werkgever in regio Tilburg. Samen met een vooruitstrevend team

Bekijk vacature »

Fullstack JavaScript Developer Webapplicaties

Bedrijfsomschrijving Voor deze organisatie ben ik op zoek naar een getalenteerde Fullstack JavaScript Developer. Ze is een snelgroeiend software development agency dat zich richt op het ontwikkelen van moderne webapplicaties en complexe systemen voor haar klanten. Ze is gevestigd onder de rook van Utrecht en heeft als doel om tot de top van de Nederlandse agencies te behoren. Deze organisatie maakt softwareoplossingen voor verschillende soorten bedrijven. Innovatie staat hoog in het vaandel en je zult dus met nieuwe technieken aan de slag gaan. Ze hebben klanten in vele branches zitten, zoals retail, finance, gezondheid en onderwijs. De diverse klanten zorgen

Bekijk vacature »

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

Senior Java Developer

Als Senior Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

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 »

Python (Django) developer - Remote in The Netherla

Functie Together with your team, consisting of a senior, 2 mediors and one junior developer, you will work on their software in an Agile-based approach. You have an eye for quality, risk, and customer interest. Communication with your colleagues and, where necessary, with customers, plays an important role in achieving a successful result. As a person, you are smart, get things done, and are result-oriented. There is a lot of independence within the development team, apart from the stand-up (10:00 am) and occasional pair-programming sessions. Techniques they use include Python, Django, MySQL, Mercurial, Ubuntu Linux, Nginx. In terms of front-end

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Senior .NET developer

Functie Als Senior .NET ontwikkelaar ga jij aan de slag in ons Research & development team. Ons team bestaat uit 17 collega’s! Wij zijn momenteel druk bezig met het opzetten van een geheel nieuwe architectuur voor een nieuw product. Hierbij maken wij o.a. gebruik van VS2022 en .NET 6.0. Jouw functie is dan ook voornamelijk backend georiënteerd bij ons. Aangezien wij meetapparatuur ontwikkelen voor de chemische industrie is het ook erg belangrijk om kwalitatief hoogwaardige software te ontwikkelen voor de besturing hiervan. Verder ben jij verantwoordelijk voor het designen, implementeren en testen van nieuwe features. Ook zorg jij voor toekomstbestendige

Bekijk vacature »

Laravel / PHP developer

Functie omschrijving Wij zijn op zoek naar een Medior PHP / Laravel Developer voor een IT-consultancy in de omgeving van Hoofddorp! Ben jij op zoek naar een leuke nieuwe uitdaging binnen een veelzijdige werkomgeving? Lees dan snel verder! Binnen dit bedrijf werk je in een ontwikkelteam, waarin je zeer betrokken bent en meedenkt over softwareoplossingen. Binnen dit Team hou je je bezig met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken;

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

19/04/2024 20:36:38
 
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.