Foreach Listbox laatste entry dubbel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior C# .NET developer frontend / Werken met GIS

Beeld je eens in dat je op een zachte lentedag fluitend in je korte broek binnen komt wandelen. Bij binnenkomst krijg je het gevoel of je in een grote zaal staat, tegelijkertijd zie jij jouw collega’s een potje tafelvoetbal spelen en zie je achterin de zaal de ruimte die gereserveerd is om te gamen. Jouw 80 collega’s zijn druk aan het werk, maar je hoort hen niet. Dit komt doordat de werkruimtes gescheiden zijn door glazen wanden. Jij werkt zelf ook in 1 van die glazen ruimtes. Dit doe jij met een scrumteam van 3 tot 5 man, waarin jij

Bekijk vacature »

Medior .NET Developer

Organisatie Ruim 15 jaar geleden is de organisatie opgericht en deze is gevestigd in regio Oss. Zij zijn specialist binnen hun vakgebied en worden door de grootste spelers op de markt benaderd voor de soft- en hardware die ze maken. Met een hechte groep collega’s heeft deze organisatie met hun producten bewezen dat zij een innovatieve speler zijn in de medische wereld. Momenteel draaien de producten die ze gemaakt hebben in meer dan 90% (!) van de operatiekamers van Nederlandse ziekenhuizen. Sterker nog, de producten die zij maken worden zelfs wereldwijd gebruikt voor het redden van levens! Hoezo een impact

Bekijk vacature »

C# Developer

Job description InfoBridge is looking for an all-round software developer. You and the team are responsible for both designing and building new products as well as enhancing and maintaining existing products, which are all developed internally at InfoBridge. We get the job done by using the latest available technology, git, Kanplan, continuous integration and so on. We train ourselves and each other with regular academy sessions on new technology and ideas. Job requirements Several years of experience in a similar role: your main language is C# and you are not afraid of working on all parts of SaaS solutions with

Bekijk vacature »

FRONT-END DEVELOPER JavaScript/Flow/TypeScript, Re

You will develop innovative front-end applications using technologies such as ReactJS, Redux, Redux-Saga and help them stay up to date in their technology selection as the frontend landscape continues to evolve. As a Frontend Developer, you will be responsible for: Developing frontend applications using a stack similar to “react-boilerplate”: ReactJS, Redux, Redux-Saga etc.; Advocating for front-end development best practices, and doing whatever it takes to help to get the right solutions implemented to deliver value to customers around the globe. We are looking for someone with a strong proficiency in JavaScript/Flow/TypeScript, React.js, Redux and: Extensive experience integrating with RESTful APIs;

Bekijk vacature »

Junior C#,ASP.NET Developer / Automotive

Organisatie Door de toenemende vraag vanuit de markt is een van mijn businesspartners op zoek naar versterking voor het team. Deze organisatie specialiseert zich in het ontwikkelen van software voor de automotive branche, hiervoor ontwikkelen zij eigen software in de vorm van een ERP systeem, ook beheren zij verschillende labels. Zij zijn hiermee gestart in de jaren ‘90 en door de jaren heen doorgegroeid tot een van de grootste op dit gebied. Momenteel bedienen zij zo’n 300 bedrijven in zowel binnen als buitenland, mede hierdoor is het een grote pré als je Engels en/of Frans en/of Duits spreekt. Het bedrijf

Bekijk vacature »

Senior PHP developer / SaaS product

Organisatie Direct bij binnenkomst word je gegroet door baliemedewerkster. Jij loopt voorbij de twee StarWars figuren door naar de tweede verdieping. Hier staat de koffieautomaat al warm te draaien zodat jij samen met jou team eerst kan genieten van een lekker bakje! Samen met 23 andere ontwikkelaars is deze gezellige, ruime en lichte kantoor jullie plekje. Verdeeld over 5 scrumteams bestaande uit backend developers, een front-end developer en een tester maken jullie er dagelijks weer een gezellige dag van waar hard werken beloond wordt. Samen met jouw team bekijken jullie dagelijks de prioriteiten en schatten jullie het werk in van

Bekijk vacature »

Frontend Developer

Heb jij ervaring als Front-end ontwikkelaar en ben jij elke dag opnieuw nieuwsgierig naar nog betere codes voor front-end functionaliteiten? Denk jij automatisch vanuit de eindgebruiker en ga je voor de beste en meest gebruiksvriendelijke oplossing. Ben jij deze nieuwe front-end developer, met kennis van Javascript, om het enthousiaste team te versterken? Dan maken ze graag kennis met jou! Dit bedrijf is een sterk groeiend, jong en dynamisch bedrijf in Tilburg. Zij werken met enthousiaste en professionele mensen aan logistieke oplossingen voor hun klanten. Van project management, ontwerp, implementatie en beheer tot en met hosting. Binnen het bedrijf heerst een

Bekijk vacature »

Shipping Analyst

Dynamar B.V. helps shipping companies steer the best course in business. Our services are always in demand and we are looking for a talented Shipping Analyst to join our team as a: Shipping Analyst With offices in the Netherlands (Amsterdam Area), China, Turkey and presences in Romania and India , Dynamar is a leading independent provider of Business Information Risk Reports, covering companies in the maritime, energy and commodities trading sectors. What kind of Shipping Analyst are we looking for? A high level of integrity and trustworthiness An interest and preferably experience in shipping Excellent English language skills, written and

Bekijk vacature »

Software Developer / industriële automatiseri

Functieomschrijving Heb jij ervaring als Software Developer en werk jij graag aan software, gericht op machine besturing? Is C# jouw zeer bekend en werk jij graag in een informeel bedrijf met een platte structuur? Dan zijn wij op zoek naar jou voor een organisatie in regio Eindhoven! Je werkt als Software Developer aan industriële software / software gericht op machine besturing en maakt gebruik van C# en C; Je denkt mee over de architectuur en het design; Je weet requirements te vertalen naar de technische oplossing; Je onderzoekt issues en lost storingen op waar nodig; Je denkt mee over de

Bekijk vacature »

Medior / Senior PHP Developer / Symfony / Fintech

Organisatie Het bedrijf is 2 jaar geleden ontstaan om de brug te zijn tussen de financiële dienstverlener en de particulier. Dat doen ze door verschillende websites en tools te ontwikkelen waardoor het makkelijker wordt om bijvoorbeeld een verzekering of een hypotheek te kiezen. Zo maken ze ook maatwerk CRM pakketten en CMS systemen voor de financiële dienstverlener zelf. Hun legacy zit in Laravel maar ze willen alle nieuwe software in Symfony 3 ontwikkelen. Dit doen ze nu met een team van 5 man tussen de 25 en de 28 jaar oud, je kunt dus zeggen dat dit een jong team

Bekijk vacature »

Creatieve Front-end developer gezocht!

Vacature Omschrijving Een multimedia bedrijf die gespecialiseerd is in het ontwikkelen van computer programma’s voor musea en exposities is op zoek naar creatieve developer. De sfeer binnen het bedrijf is informeel en er word gewerkt op basis van kennis en expertise. Het bedrijf is 16 jaar geleden opgericht en sindsdien zijn ze alleen maar gegroeid. Momenteel zijn er 24 werknemers in dienst. Functieomschrijving Als creatieve developer ga je mee helpen om de ideeën van de ontwerpers werkelijkheid te maken. Je gaat onder andere werken met PHP en HTML-5. Je krijgt de kans om te gaan werken aan interessante projecten voor

Bekijk vacature »

PHP kans met mogelijkheid tot auto!

PHP functie 3 jaar met Zend Functieomschrijving Je gaat met je team werken aan hele slimme nieuw op te zetten PHP applicaties voor professionele bedrijven. Omdat ze steeds voorop willen blijven lopen is er voor jou veel ruimte om te pionieren met nieuwe technologie en hierin verder te groeien als PHP developer. Naast het werken met nieuwe technologie zijn de voorwaarden ook heel goed, denk aan lekker veel vakantiedagen, goede regelingen en een mooie werkplek om het beste uit jezelf te halen. Om voor deze rol in aanmerking te komen dien je ervaring te hebben met Symfony2, Zend of een

Bekijk vacature »

Gezocht! Een Medior/Senior Front-end developer met

Vacature Omschrijving Voor een klant van ons zij we op naar een Medior / Senior front­-end ontwikkelaar. De organisatie bestaat uit 33 professionals; merendeels met een technische achtergrond. In de organisatie is het belangrijk dat ieder elkaar stimuleert en dat er van elkaar geleerd wordt door middel van interne trainingssessies. Daarnaast staat persoonlijke ontwikkeling hoog in het vaandel. Functieomschrijving Voor onze klant zoeken we een professional met echte werkt programmeerervaring (JavaScript) en gevoel voor design. In de organisatie doen zij de front­-end ontwikkeling veel in React (Native), dus ervaring daarmee is vereist. Je gaat werken aan verschillende soorten projecten. Hierin

Bekijk vacature »

Senior PHP Tech-Lead 100% Remote

Organisatie Je komt te werken binnen een organisatie die al bijna 20 jaar actief is in het software development landschap. Ze werken voor organisaties als “TMG Media Groep” en “Sanoma”. Maar hebben bijvoorbeeld ook de volledige backend van “nu.nl” gebouwd. Voor dit soort type organisaties kun je niet met snelle makkelijke code aankomen. Zij bouwen hoogwaardige complexe applicaties en als een klant “quick & dirty” wilt dan is dat niet de juiste klant voor hun. IT is het hart van dit bedrijf en in totaal werken er zo’n 80 mensen in totaal wereldwijd! Ze hebben bijvoorbeeld ook vestigingen in het

Bekijk vacature »

.NET fullstack developer gezocht, Hendrik Ido Amba

Een goede onderlinge sfeer, relaxte omgang met elkaar, leuke afwisselende projecten, snelle adoptie van nieuwe technieken en een mooi pand met uitstekende voorzieningen; slechts een greep uit de redenen waarom de werknemers graag bij dit bedrijf werken. Iets voor jou? Lees dan verder! Het bedrijf/werkzaamheden Voor een softwarebedrijf in Hendrik Ido Ambacht zijn we op zoek naar een ervaren .NET developer. Het gaat hierbij om een groeiende IT dienstverlener bestaande uit 50 mensen. De lijnen zijn kort en er heerst een informele en collegiale sfeer. Dit uit zich onder meer in de regelmaat van teamuitjes, dagelijks goed verzorgde lunches en

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

21/09/2019 22:20:30
 
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.