Foreach Listbox laatste entry dubbel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C#.NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie; Het oplossen van bugs en incidenten. Hier ga je werken Als C#.NET Developer binnen deze organisatie kan jij het verschil maken. Zij werken momenteel nog met programmatuur die is ontwikkeld in C++. Hiervan gaan zij afscheid nemen zodra alle nieuwe software in C#.NET geschreven is. Een grootschalig en langdurig project. Voor hen is deze software van

Bekijk vacature »

Lead Front-end developer

Functie Hun huidige applicatie worden ontwikkeld in o.a. React, Redux, TypeScript. Ze werken graag met de nieuwste technieken en tooling en zoeken ook developers die hier proactief op zoek naar gaan. Als senior/lead developer ben je een kartrekker in het team. Naast het meedenken over bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Zo kun je bijvoorbeeld 1 dag in de week met 2 collega’s bezig zijn om samen met hen te kijken naar hun ontwikkeling, doelstellingen en uiteraard de gewenste begeleiding hierin. Hiernaast sta je als

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

Ervaren Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als ervaren developer zul je hiernaast ook andere developers assisteren en waar nodig de leiding nemen in het project.

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

Back-end developer

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een gemotiveerde SQL Developer/ functioneel consultant. Jij wordt verantwoordelijk voor zowel het ontwerpen en implementeren van SQL-databases als voor het in kaart brengen van de bedrijfsprocessen van een organisatie en het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Ontwerp en implementatie van SQL-databases: Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Analyse van bedrijfsprocessen: Je analyseert de bedrijfsprocessen van de organisatie om de behoeften van de klant te begrijpen en te vertalen naar

Bekijk vacature »

Java Developer

Functie Wat ga je doen als Java developer? Jij komt terecht binnen een informeel team waarin je verantwoordelijk bent voor de backend systemen voor grote klanten als Ziggo en KPN. Als Medior Java developer werk je in teamverband en soms individueel. Gedurende de werkweek zal je veelvuldig sparren met je collega’s voor een goede implementatie van de software. Ben jij een echte Java developer? Ben je geïnteresseerd in de nieuwste technieken en de laatste ontwikkelingen? Dan ben je hier aan het juiste adres! Eisen Wat wordt er van jou verwacht? • Minimaal HBO/WO denk- en werkniveau; • Analytisch sterk, open

Bekijk vacature »

Robot Programmeur

In het kort Drie redenen waarom deze vacature uniek is! Programmeren van zelflerende robots Werken op kantoor en testen in de bedrijfshal Je krijgt verantwoordelijkheid, vrijheid en je mag werken naar eigen inzicht De organisatie Hier ga je aan de slag Een bedrijf dat innovatieve robottoepassingen ontwerpt en bouwt voor onder andere de staal industrie, energie- bouw- en agrarische sector. De robots die vaak in combinatie met diverse randapparatuur geleverd worden vormen een totaaloplossing voor de klant. Dit zijn klanten over de hele wereld, van België en Duitsland tot China, India, maar ook in Nederland. Projecten waar momenteel aan wordt

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 »

Full-stack developer

Als Full-stack developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Samen met je SCRUM team werk je aan zowel de front- als de back-end. 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 genoeg om als individuele ontwikkelaar invloed uit te kunnen oefenen en echt het verschil te kunnen maken. Ons ontwikkelteam bestaat uit ruim 40 ontwikkelaars, testers, scrum

Bekijk vacature »

.NET Developer C# VB

Samengevat: Deze werkgever is actief in software voor het matchen van vraag en aanbod van gebruikte auto-onderdelen. Ben jij een .NET Developer? Heb je ervaring met het ontwikkelen (REST) en integreren van webservices? Vaste baan: C# .NET Developer C# VB HBO €2.600 - €6.200 Wij ontwikkelen software om vraag en aanbod van onderdelen van personenauto's bij elkaar te brengen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. De branche van dit bedrijf is Automotive. Functie: Voor de vacature als .NET Developer Dordrecht HBO ga je

Bekijk vacature »

.NET developer

Functie Als senior .NET ontwikkelaar en aankomend lead developer ben jij in één van de drie development teams verantwoordelijk voor het volgende: • Jij hebt een oogpunt op modernisering en bent verantwoordelijk voor de technische staat en architectuur van de applicatie; • Jij bent verantwoordelijk voor het reviewen van de technische haalbaarheid van verschillende onderwerpen; • Jij bent verantwoordelijk voor een goede aansluiting binnen het multidisciplinaire team en de bijbehorende taken; • Jij bent verantwoordelijk voor het aandragen van verbetervoorstellen en ontwikkelstandaarden in zowel de techniek als architectuur; • Jij bent meewerkend voorman en ondersteunt en coacht jouw team op

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 »

.NET Developer

Dit ga je doen Tot jouw takenpakket behoort onder andere: Webapplicaties ontwerpen, bouwen, testen en implementeren in .NET/C#.; Ontwikkelen, implementeren en beheren van maatwerkapplicaties; Onderhouden en beheren van standaardpakketten; Onderzoeken en beoordelen van nieuwe technieken. Hier ga je werken Als .NET ontwikkelaar kom je te werken bij een grote semioverheidsinstelling in Nijmegen. De organisatie staat garant voor het leveren van onderwijs en les- en onderzoeksmateriaal voor duizenden betrokkenen. De organisatie wil bijdragen aan een gezonde, vrije wereld met gelijke kansen voor iedereen. Binnen de teams hangt een open en collegiale cultuur met veel aandacht voor een prettige en sociale werksfeer.

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

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

16/04/2024 18:44:39
 
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.