Foreach Listbox laatste entry dubbel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

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 »

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe stap? Voor een softwarebedrijf in regio Oosterhout zijn wij op zoek naar een back-end developer met kennis of ervaring met C# en SQL. Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in kaart, om ze vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten;

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 »

Front-end PHP Developer

Dit ga je doen Bouwen van de frontend van een nieuwe applicaties; Verbeteren van de user experience; Opstellen van een style guide; Schakelen met collega developers over de te bouwen oplossing; Je speelt een belangrijke rol in het neerzetten van het nieuwe systeem; Werken met o.a. Symfony 6, API Platform, Twig, Javascript, Redis Automatiseren van processen; Koppelen van verschillende functionaliteiten; Unit tests, integration tests, end-to-end tests; In de toekomst ga je nog werken aan andere projecten. Hier ga je werken Voor onze vaste opdrachtgever in de regio Breda zijn wij op zoek naar een Frontend Developer. Het betreft een organisatie

Bekijk vacature »

Traineeship IT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

Low Code Ontwikkelaar

In het kort Als Low Code Developer werk je aan projecten bij en voor onze klanten, waarbij je voor het ontwikkelen van de oplossingen een technisch low-code platform gebruikt. Samen met het team streef je naar de beste oplossing en bepalen jullie de juiste aanpak. Je rol is divers en je bent van begin tot eind betrokken bij de ontwikkeling zowel de back-end en de front-end van de applicatie. Naast de ontwikkeling en oplevering, breng je ook advies uit aan de klant waarom bepaalde keuzes worden gemaakt. Je bent dan ook communicatief sterk en kunt je keuzes goed (inhoudelijk) onderbouwen.

Bekijk vacature »

Mendix Consultant / Developer

Dit ga je doen Het in kaart brengen en analyseren van de functionele wensen van de klant rondom Mendix applicaties; Het fungeren als sparringpartner voor de (interne) klanten; Het opstellen van requirements en het vertalen hiervan naar technische mogelijkheden; Het opstellen van user stories; Het bouwen van de Mendix applicaties in samenwerking met jouw team of zelfstandig; Het testen van op te leveren software en het zorg dragen voor de implementatie; Trainen van gebruikers in het gebruik van de applicatie; Werken in een Agile omgeving. Hier ga je werken De organisatie begeeft zich in de retail branche en focust zich

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Low-Code Expert/Developer: Power Platform Speciali

Bedrijfsomschrijving Als Low-Code Expert/Developer bij ons innovatieve bedrijf, neem je een cruciale rol op je in de creatie, ondersteuning en implementatie van diverse oplossingen met behulp van het veelzijdige Power Platform. Dit platform omvat Power Apps, Power BI, Power Automate, Power Virtual Agent en Azure Logic Apps. Het Power Platform biedt je de mogelijkheid om klanten te voorzien van naadloze integraties door op maat gemaakte oplossingen te creëren die compatibel zijn met (bijna) alle bestaande software-infrastructuren. Dankzij het uitgebreide scala aan toepassingen, krijg je de kans om als architect en projectleider van je eigen oplossing te fungeren. Dompel jezelf onder

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 »

Database Developer

Functie omschrijving Voor een logistieke dienstverlener in omgeving Zuid Beijerland zijn wij op zoek naar versterking. Weet jij als geen ander systemen aan elkaar te koppelen en heb jij goede kennis van SQL en UML, lees dan snel verder! Jouw taken zien er als volgt uit: Je bent in deze rol voornamelijk verantwoordelijk voor het bouwen, implementeren en beheren van koppelingen tussen de bestaande systemen (zowel business 2 business als application 2 application). Daarnaast inventariseer je de wensen van in- en externe klanten, die je vervolgens samen met je collega's, vertaalt naar technische specificaties, die jullie zelf ontwikkelen en implementeren.

Bekijk vacature »

Ontwikkelaar Centrale Monitoring

Ontwikkelaar centrale Monitoring Functieomschrijving Wil jij een bijdrage leveren aan het onderhoud, opzetten en ontwikkelingen van technologieën van SSC-ICT, een van de grootste ICT-dienstverleners van en voor de Rijksoverheid? Je komt als monitorspecialist te werken bij team Operations Management Services. Dit team werkt aan het stabiliseren en waarborgen van een betrouwbare monitoromgeving voor 7 ministeries. Jij begeleidt het implementatieproces van de te monitoren technologieën, onder andere via management packs, connectoren en API's. Je hebt hiervoor veel contact met interne en externe klanten, die hun wensen op het gebied van monitoring aan jou doorgeven. Je beoordeelt deze wensen en komt met

Bekijk vacature »

Full stack Developer / .NET / Angular / Azure

Dit ga je doen Jij gaat je als Full Stack .NET Developer voornamelijk bezighouden met: Het vertalen van concepten naar passende innovatieve en duurzame oplossingen; Het ontwikkelen van bedrijf kritische en gebruiksvriendelijke applicaties voor de internationale markt en intern gebruik; Bouwen aan software om het Internet of Things netwerk te ondersteunen; Het maken en onderhouden van interfaces tussen systemen aan de hand van API's; Het onderhouden en blijven verbeteren van de ontwikkelde software. Hier ga je werken Binnen deze organisatie zal jij als Full Stack .NET Developer een belangrijke rol krijgen en ga je dagelijks de uitdaging aan om maatwerk

Bekijk vacature »

Junior .NET developer

Functie Wij zijn bezig met het ontwikkelen van een nieuw product en wij hebben jouw hulp hierbij nodig! Als junior .NET ontwikkelaar krijg jij de kans om samen met ons deze nieuwe uitdaging aan te gaan! Momenteel bestaat ons team uit drie interim Software Engineers. Twee hiervan zijn zeer ervaren .NET specialisten die inmiddels hun strepen in dit vakgebied al hebben behaald. Ook hebben wij een junior als onderdeel van ons team die zich op dit moment nog bezig houdt met de Front-end (Angular/TypeScript), maar zich nu ook meer gaat verdiepen in de backend. Wij willen ons team graag verder

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

27/04/2024 06:23:17
 
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.