Foreach Listbox laatste entry dubbel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Java Developer vacature

Senior Java Developer Jij volgt ontwikkelingen op de voet. Sterker nog: jij bent er onderdeel van. Jij loopt voorop. Jij denkt met klanten mee en helpt hen innoveren. Bijvoorbeeld met de ontwikkeling van de Rabobank-app, een verbetering van de beveiliging van treinen voor Pro-rail of geef je een boost aan de website van ING! Focus op Java Wij bouwen State of the Art applicaties met de nieuwste Java technologie en frameworks. Dit doen we door ons te richten op de open source-oplossingen binnen de wereld van Java, alle nieuwe ontwikkelingen te volgen en onze kennis te delen binnen onze eigen

Bekijk vacature »

Noordoost Java Developer vacature

Java Developer Noordoost Word onderdeel van een topteam met ervaren Java Developers. Loop voorop in de ontwikkelingen en help mee innoveren. Focus op Java Wij bouwen State of the Art applicaties met de nieuwste Java technologie en frameworks. Dit doen we door ons te richten op de open source-oplossingen binnen de wereld van Java, alle nieuwe ontwikkelingen te volgen en onze kennis te delen binnen onze eigen Java Community. Dit betekent bijvoorbeeld dat we aanwezig zijn op veel conferenties; Oracle Code One, Devoxx en JFall. We organiseren ook onze eigen collegiale sessies en hackatons waar we kennis en plezier combineren.

Bekijk vacature »

Software Developer / full stack / Java / Angular

Functieomschrijving Would you like to work at a company in Eindhoven on a custom application landscape, both front and backend? Does Java hold few secrets for you and are you also experienced with Javascript / Angular? Then we are looking for you! As a Software Developer, you work on both the front-end and back-end of the custom application landscape; Participate in projects in the field of system expansion, renewal and improvement; Work with Java, JEE, Spring, Angular, CI, SQL, Agile, webservices and others; Help with the translation to technical solutions and advise the organization in your field of expertise; Work

Bekijk vacature »

Full-stack developer

Over Compaan Compaan (www.uwcompaan.nl) is een jong bedrijf van ongeveer 20 medewerkers dat is gevestigd in Haarlem. We ondersteunen zorgverleners in digitaal contact met hun cliënten, met name door middel van beeldzorg. Dit gaat meestal via de Compaan-tablet, een tablet die speciaal gemaakt is voor ouderen die niet met een gewone computer overweg kunnen. Verder hebben we vele particuliere klanten die via de Compaan-tablet contact met hun familie en vrienden onderhouden. Over de functie We zijn per direct op zoek naar een nieuwe collega die gaat helpen meebouwen aan de software van Compaan en bij het onderhoud van onze algehele

Bekijk vacature »

OpenEdge Developer / #1 software leverancier binne

Functieomschrijving Ben jij een ervaren OpenEdge Developer die graag nog nieuwbouw ontwikkelt? Wil je daarnaast jouw hersenen kraken voor het automatiseren van complexe bedrijfsprocessen? Lees dan snel verder en kom erachter of deze rol als OpenEdge Developer iets voor jou is! Uitvoeren van analyses ter bevordering van de betrouwbaarheid en performance van de bedrijfskritische applicatie; Meedenken over de architectuur en tevens waarborgen van de OpenEdge architectuur; Troubleshooten van complexe incidenten; Je deelt graag je kennis aan je collega’s; Maken van ontwerpen, schrijven van documentatie en het testen van de OpenEdge applicatie; Implementeren van nieuwe functionaliteiten en het verzorgen van nazorg.

Bekijk vacature »

Applicatiebeheerder CRM

Heb jij als allround applicatiebeheerder een sterke affiniteit met CRM systemen en heb je kennis van het verbinden van applicaties middels een Hybrid Integration Platform, dan is deze functie jou op het lijf geschreven! Wat ga je doen? Samen met je collega’s ben je verantwoordelijk voor een beschikbaar en goed functionerend applicatielandschap van ongeveer 150 zowel On-Premise als Cloud applicaties. Een uitdagende functie waarbij jij een actieve rol krijgt bij de implementatie van een nieuw CRM systeem. Je zal van het begin af aan deelnemen aan het CRM projectteam waarbij je vanuit jouw specialisme vragen beantwoordt en meedenkt over functionele,

Bekijk vacature »

Software Developer / Maatwerk / 4GL / SQL

Functieomschrijving Heb jij ervaring met Software Development en wil je je graag verder ontwikkelen bij een internationaal bedrijf in regio Eindhoven? Lees dan snel verder! Software ontwikkeling met technieken als Magic XPA en DB2 relationele databases. Ontwikkelen van nieuwe onderdelen van het centrale (maatwerk) softwarepakket. Uitbreiden bestaande functies binnen het pakket. Wensen en eisen van gebruikers in kaart brengen. Meedraaien in projecten. Informatieanalyses maken en uitwerken. Jezelf ontwikkelen binnen de organisatie, bijvoorbeeld op het gebied van BI of integratie met behulp van SAP PI/PO. Ondersteunen van de helpdesk bij software issues. Functie-eisen 1 tot 3 jaar ervaring op het gebied

Bekijk vacature »

Enthousiaste DevOps-ontwikkelaar voor eIDAS

Functie­omschrijving De Dienst ICT Uitvoering, kortweg DICTU, is een van de grootste en meest vooruitstrevende ICT-dienstverleners van de Rijksoverheid. Wij bouwen onder meer de veilige en betrouwbare digitale toegang tot de diensten en producten van het ministerie van Economische Zaken en Klimaat voor burgers en bedrijven in het buitenland. Daar werk jij als DevOps-ontwikkelaar bij DICTU in Assen aan mee. Het ministerie van Economische Zaken en Klimaat heeft voor haar diensten en inspecties één moderne toegangspoort. Een aantal van die diensten en inspecties is mede dankzij jou ook voor burgers en bedrijven uit acht EU-landen veilig en betrouwbaar toegankelijk. Dat

Bekijk vacature »

Lead Software Developer Datawarehouse

Bouw jij graag mee aan de nieuwe generatie van het datawarehouse-framework voor de zorg? En kent programmeren in C# geen geheimen voor jou? Dan pas jij perfect in ons team in Amsterdam. We bieden jou de kans om complexe uitdagingen op te lossen en te werken met de nieuwste technieken. Jouw baan Zorgprofessionals nemen belangrijke beslissingen op basis van data uit ons datawarehouse. Om dit mogelijk te maken ontwikkelt onze afdeling een set aan softwareapplicaties die optimaal aansluiten bij ons zorginformatiesysteem (ZIS). Als team lead software binnen de afdeling datawarehouse heb je de dagelijkse leiding over een team van 6

Bekijk vacature »

React developer / Medior / €3000-3500 / Amste

Functieomschrijving In de functie van frontend developer werk je veel met React (Native). Je werkt in multidisciplinaire Scrum teams aan projecten waar jij verantwoordelijk bent voor de frontend. Enig gevoel voor design is daarin belangrijk, je hoeft het zelf niet te kunnen maar je moet design wel belangrijk vinden. Ze zoeken iemand die al 3 jaar ervaring heeft op de frontend, ervaring met React (Native) is een dikke pré. Heb jij geen ervaring met React maar wel ervaring met Angular of Vue dan ben je hier ook welkom! Functie-eisen - Minimaal HBO werk - en denkniveau; - Minimaal 4 jaar

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

PHP Developer Senior Complexe SaaS-oplossing

Functieomschrijving Ben jij een ervaren PHP Developer, focus jij je doorgaans op de back-end en loop jij warm voor het doorontwikkelen van een zeer grote applicatie met enorme MySQL databases en veel complexiteit? Lees dan snel verder! Het onderhouden, doorontwikkelen en testen van een zeer complexe SaaS-oplossing, zonder schaalbaarheid en platformonafhankelijkheid uit het oog te verliezen; Het ontwikkelen van maatwerk back-end oplossingen in PHP en participeren in een Scrumteam; Het participeren in een migratie naar het Symfony framework; Participeren in diverse projecten t.b.v. de optimalisatie van het SaaS-product; Het opzetten van API koppelingen met externe partijen;. Het wegwerken van legacy

Bekijk vacature »

Software Ontwikkelaar Zorg-ICT

Wil jij met ChipSoft impact maken in de zorg met jouw technische kennis als Software Ontwikkelaar? En lijkt het jou uitdagend om innovatieve software te ontwikkelen met de laatste Microsoft-tools en technieken? Wat doe jij als Software Ontwikkelaar? Je bent verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van jouw eigen module. Dit gaat om complexe ICT-producten die feilloos moeten functioneren binnen de complexe omgeving van een zorgorganisatie. Je werkt zelfstandig of in teamverband. ChipSoft maakt gebruik van een zelf ontwikkeld multi-tier framework. Tijdens een interne opleiding brengen wij je snel bij hoe je binnen deze architectuur je ontwikkelkunsten kunt

Bekijk vacature »

SAP HANA DEVELOPER

SAP HANA DEVELOPER Utrecht Technology 13th month pay & Holiday allowance Bonus Program 26 holidays Training & Learning opportunities Laptop & Smartphone 32-40 hours p.w. Are you looking for the opportunity to become "the expert" when it comes to Business Intelligence, Data Analysis, Data Visualization and Data Management within a SAP environment? Then a role as a SAP HANA Developer is the job for you! Your job You contribute to the development, delivery and maintenance of business intelligence solutions based on the latest SAP technology. You improve the HANA platform for customers and you work on innovative applications that organizations

Bekijk vacature »

MS SQL Developer Automatisering Miljoenen gebruike

Functieomschrijving Wil jij als SQL Developer aan het werk binnen een van de meest complexe organisaties van Nederland? Wil jij meedenken en werken aan een platform met miljoenen gebruikers? Lees dan snel verder! Functie-eisen Hbo denk - en werkniveau; Minimaal 3 jaar ervaring, bij voorkeur in een soortgelijke functie of doormiddel van stage; Ervaring met SQL Server 2012 of hoger; Ervaring met SQL Server HA techniekene FCI en AG, SQL Native Backup; Ervaring met Windows 2012/2016; Ervaring met PowerShell op het gebied van deployment automation en het automatiseren van processen; Bedrijfsomschrijving Als SQL Developer kom je te werken in de

Bekijk vacature »
Danny von Gaal

Danny von Gaal

29/09/2015 21:56:16
Quote Anchor link
Kan iemand mij het misschien uitleggen? Want ik snap het echt niet.
Ik heb een formulier met een listbox en ik wil met item uit de listbox een insert in de database maken.

Maar wanneer mijn Listbox bijvoorbeeld 3 personen bevat wordt de laatste dubbel geplaatst. Dat geld ook als het er 4,5,6 en zelfs 1 zijn.

Eerst heb ik een paar formulier checks en dan kom ik hier:

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
<?php
// Voorkom SQL Injection
            $PostClannaam = mysqli_real_escape_string($conn, $_POST['clannaam']);
            $PostLand = mysqli_real_escape_string($conn, $_POST['land']);
            
            // Maak war aan in database
            $SQLInsertWar = "INSERT INTO war (naam, land, datum)
                             VALUES ('"
. $PostClannaam . "', '" . $PostLand . "', '" . $newdate . "')";
                                
            // Controleer of insert is gelukt
            if ($conn->query($SQLInsertWar) === FALSE) {
                                    
                echo "<div class='error'>MySQL Error!! GVD @#$!!!</div>";
                                    
            }
else {
                
                // Plaats warid in variable
                $warid = $conn->insert_id;
                
                // Haal alle gekozen warleden op van formulier
                $list2 = $_POST['list2'];
                foreach($list2 as $gebruikersnaam)
                {


                    // Plaats warleden in database
                    $SQLInsertWarLeden = "INSERT INTO warstats (warid, gebruikersnaam)
                                          VALUES ('"
. $warid . "', '" . $gebruikersnaam . "')";
                    $conn->query($SQLInsertWarLeden);
                    
                }

                
                // Controleer of insert is gelukt
                if ($conn->query($SQLInsertWarLeden) === FALSE) {
                                            
                    echo "<div class='error'>MySQL Error 2!! GVD @#$!!!</div>";
                                            
                }
else {
                    
                    // Haal de aangemaakte warleden op
                    $SQLSelectLeden = "SELECT warid, gebruikersnaam
                                FROM warstats
                                WHERE warid = '"
. $warid . "'";
                    $ResultWarLeden = $conn->query($SQLSelectLeden);
                    
                    // Laat de aangemaakte warleden zien
                    while($row = $ResultWarLeden->fetch_assoc()) {
                        echo "gebruikersnaam: " . $row["gebruikersnaam"]. "<br>";
                    }
                                            
                }
                
            }

?>
 
PHP hulp

PHP hulp

07/08/2020 06:10:28
 
Ben van Velzen

Ben van Velzen

29/09/2015 22:08:48
Quote Anchor link
Je voert de query op regel 33 nogmaals uit. Zet de controle rond regel 28 ipv de query te herhalen.
 
Danny von Gaal

Danny von Gaal

29/09/2015 22:18:44
Quote Anchor link
Bedankt Ben maar wanneer ik dat doe dan komt de errror er zo vaak te staan als er items zijn.
 
Ben van Velzen

Ben van Velzen

29/09/2015 23:15:04
Quote Anchor link
Dat klopt, dus zul je even moeten herstructureren. Als voorbeeld kun je uit de foreach springen als je een fout hebt (zie break).
 
Joni Fleischer
Moderator

Joni Fleischer

30/09/2015 14:37:09
Quote Anchor link
Niet kunnen testen nog maar:

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
<?php
    // Voorkom SQL Injection
    $PostClannaam     = mysqli_real_escape_string($conn, $_POST['clannaam']);
    $PostLand         = mysqli_real_escape_string($conn, $_POST['land']);
    
    // Maak war aan in database
    $SQLInsertWar = "INSERT INTO war (naam, land, datum)
                     VALUES ('"
. $PostClannaam . "', '" . $PostLand . "', '" . $newdate . "')";
                        
    // Controleer of insert is gelukt
    if ($conn->query($SQLInsertWar) === FALSE)
    {

                            
        echo "<div class='error'>MySQL Error!! GVD @#$!!!</div>";
                            
    }

    else
    {
        
        // Plaats warid in variable
        $warid = $conn->insert_id;
        
        // Haal alle gekozen warleden op van formulier
        $list2 = $_POST['list2'];
        foreach($list2 as $gebruikersnaam)
        {


            // Plaats warleden in database
            $SQLInsertWarLeden = "INSERT INTO warstats (warid, gebruikersnaam)
                                  VALUES ('"
. $warid . "', '" . $gebruikersnaam . "')";
            $conn->query($SQLInsertWarLeden);
            
        }

        
        // Haal de aangemaakte warleden op
        $SQLSelectLeden = "SELECT warid, gebruikersnaam
                    FROM warstats
                    WHERE warid = '"
. $warid . "'";
        
        // Controleer of insert is gelukt
        if ($conn->query($SQLSelectLeden) === FALSE)
        {

                                
            echo "<div class='error'>MySQL Error!! GVD @#$!!!</div>";
                                
        }

        else
        {
            $ResultWarLeden = $conn->query($SQLSelectLeden);
            
            // Laat de aangemaakte warleden zien
            while($row = $ResultWarLeden->fetch_assoc()) {
                echo "gebruikersnaam: " . $row["gebruikersnaam"]. "<br>";
            }    
        }
        
    }

?>
 
Ben van Velzen

Ben van Velzen

30/09/2015 15:22:51
Quote Anchor link
Hier worden ook queries dubbel uitgevoerd. Daarnaast verander je gewoon het gedrag van het script, wat me niet de bedoeling lijkt te zijn,
 
Thomas van den Heuvel

Thomas van den Heuvel

30/09/2015 16:29:30
Quote Anchor link
Ik zie ook overal namen staan, zouden dat geen id's moeten zijn? Verder lijkt mij een war iets tussen twee clan(-id)s?

Ook is het misschien handig om een wrapper class voor je database te schrijven zodat een query een exception throwt als er iets misgaat. Dan kun je in plaats van die if-elseif-else-hel alles gewoon in een try-catch blok zetten.

Oh, en voor de goede orde zou het geheel misschien in een transactie gezet moeten worden zodat alle (INSERT) queries in zijn geheel, of in zijn geheel niet worden doorgevoerd. Als dit script ergens halverwege de mist in gaat heb je nu mogelijk troep in je database.
 
Ivo P

Ivo P

30/09/2015 17:01:32
Quote Anchor link
en escape ALLE gebruikersinvoer.

op regel 27 is gebruikersid niet ge-escaped
 
Thomas van den Heuvel

Thomas van den Heuvel

30/09/2015 17:15:05
Quote Anchor link
Ivo P op 30/09/2015 17:01:32:
en escape ALLE gebruikersinvoer.

op regel 27 is gebruikersid niet ge-escaped

Ofwel dat, ofwel filter de invoer (controleer of de gebruikersnamen geldig zijn - en om dat te doen heb je weer een query nodig waarin de boel ge-escaped moet worden waarschijnlijk, see how that works :)).

En je kunt dus beter id's gebruiken.
Gewijzigd op 30/09/2015 17:15:34 door Thomas van den Heuvel
 
Danny von Gaal

Danny von Gaal

01/10/2015 16:32:32
Quote Anchor link
Iedereen bedankt voor de info.

Ik zal gebruikers input gaan "escapen" en het klopt wat Thomas zegt dat wanneer dit script halverwege wordt onderbroken ik al zooi in me database heb en dat wil ik inderdaad niet.
Ik ga eens op zoek naar een "transactie" ?!

Maar volgens mij heb ik nog geen oplossing gehoord om die dubbele insert te voorkomen?


EDIT: Gebruikersnaam komt uit een lijst wat een user niet zelf invult dus escapen is denk ik niet nodig??
En ik heb nu een check in het script toegevoegd of de war niet al bestaat. Dus wanneer de pagina wordt ververst komt er geen dubbele insert en ga je met een goto naar het tweede gedeelte van het script.
Gewijzigd op 01/10/2015 17:05:53 door Danny von Gaal
 
Thomas van den Heuvel

Thomas van den Heuvel

01/10/2015 17:24:00
Quote Anchor link
Quote:
Maar volgens mij heb ik nog geen oplossing gehoord om die dubbele insert te voorkomen?

Ben van Velzen noemde de oorzaak al: je voert op regel 33 nogmaals de query uit van de laatste iteratie van de foreach-lus van regel 22-30.

In het zelfde antwoord geeft hij tevens aan hoe je dit op moet lossen.

Als dat fouten oplevert zoals je zelf aangeeft, zul je moeten kijken waar die dan vandaan komen. Druk de query die fouten oplevert eens af, wordt er een UNIQUE constraint geschonden ofzo?
 
Danny von Gaal

Danny von Gaal

01/10/2015 17:49:49
Quote Anchor link
Thomas van den Heuvel op 01/10/2015 17:24:00:
Quote:
Maar volgens mij heb ik nog geen oplossing gehoord om die dubbele insert te voorkomen?

Ben van Velzen noemde de oorzaak al: je voert op regel 33 nogmaals de query uit van de laatste iteratie van de foreach-lus van regel 22-30.

In het zelfde antwoord geeft hij tevens aan hoe je dit op moet lossen.

Ohja, daar heb ik denk ik overheen gelezen.
Via een break;


Het is gelukt!
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
<?php
// Haal alle gekozen warleden op van formulier
                    $list2 = $_POST['list2'];
                    foreach($list2 as $gebruikersnaam)
                    {


                        // Plaats warleden in database
                        $SQLInsertWarLeden = "INSERT INTO warstats (warid, gebruikersnaam)
                                              VALUES ('"
. $_SESSION['warid'] . "', '" . $gebruikersnaam . "')";
                        if ($conn->query($SQLInsertWarLeden) === FALSE) {
                            
                            echo "<div class='error'>MySQL Error 2!! GVD @#$!!!</div>";
                            break;
                            
                        }
                        
                    }

?>
Gewijzigd op 01/10/2015 18:10:34 door Danny von Gaal
 



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.