INSERT INTO unique

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior C# Software Ontwikkelaar te Zaandam

Bedrijfsomschrijving Deze werkgever heeft als missie om haar klanten op ICT-gebied volledig te ontzorgen. Ze zijn een ICT bedrijf met een verscheidenheid aan ICT oplossingen waaronder Cloud oplossingen en een groot deel van het werk is gericht op software realisatie. Voor de Enterprise-klanten voert het relatief kleine ontwikkelteam waar jij deel uit van kan gaan maken binnen deze organisatie te Zaandam de grootste opdrachten uit. Niet alleen websites en complexe webapplicaties maar ook mobile apps, web services en complete systeemintegraties! Je moet dan denken aan Dynamics, Sharepoint en Salesforce. Je komt hier terecht in een relatief kleine organisatie met ontzettend

Bekijk vacature »

Senior Developer ERP Dynamics 365

Samengevat: Deze werkgever is een softwarebedrijf. Ben jij een enthousiaste developer? Heb je ervaring met ERP of Dynamic 365 bussines central? Vaste baan: ERP Applicatie Specialist ERP MBO €3.600 - €5.200 Wij houden ons als bedrijf bezig met het leveren en implementeren van het Microsoft Dynamics pakket binnen verschillende industriële sectoren. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Binnen ons open team is er een no-nonsense cultuur. Daarnaast is er veel onderling contact door de korte communicatielijnen. Het team werkt enthousiast samen om een

Bekijk vacature »

TypeScript developer (tot € 6.000, - bruto pe

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een ervaren Typecript developer die niet alleen zichzelf verder ontwikkelt, maar het ook leuk vinden om op termijn meer junior collega’s op pad te helpen. Je zult aan de slag gaan met het migreren van hun bestaande UI in Angular. Maar ook het ontwikkelen van een mobiele app. Hierbij hechten ze veel waarde aan User Experience en kiezen ze duidelijk voor kwaliteit i.p.v. snelheid. Je krijgt dus de ruimte om vanuit gedegen onderzoek te werk te gaan en het borgen van kwaliteit staat hoog in het vaandel.

Bekijk vacature »

Senior PHP developer/ Software Architect

Functie Momenteel zijn ze op zoek naar een ervaren PHP developer die zichzelf graag bezighoudt met zaken als architectuur en de algehele verbetering van structuren en standaarden. Het is eigenlijk meer operationeel als uitvoerend omdat je bezig gaat met zaken als het verder uitrollen en verbeteren van testautomatisering, codereviews, tickets en de doorloop hiervan en architectuurkeuzes. Mocht je hiernaast ook wat DevOps kennis meenemen is dit mooi meegenomen! Vanwege het kleine team maar de wereldwijde impact die zij leveren is er veel focus op kwaliteit. In deze functie werk je aan één van hun belangrijkste applicaties. Hierin werk je nauw

Bekijk vacature »

Senior Front-end Developer

Wordt jij de nieuwe Front end specialist / developer? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel binnen als

Bekijk vacature »

Java Developer

Dit ga je doen Ontwerpen en bouwen van nieuwe functionaliteiten binnen de complexe omgeving; Proactief de processen kwalitatief en efficient inrichten; Opzetten van Unit Tests; Code Reviews; Regie nemen voor innovatieve projecten; Landschap beheren en de bijbehorende ketens hierbij in het oog houden. Hier ga je werken De organisatie is actief binnen de financiele branche en heeft een IT afdeling van circa 450 man. De organisatie voorziet de maatschappij binnen de financiele dienstverlening en is gedurende de jaren een onmisbare schakel geworden. Het is een high profile organisatie waar ze veel te maken hebben met veranderingen voortkomend uit maatschappelijke ontwikkelingen,

Bekijk vacature »

Senior PHP Developer

As a Senior PHP Developer at Coolblue, you ensure that our webshops work as optimal as possible and you choach other colleagues on the hard and soft skills. How do I become a Senior PHP Developer at Coolblue? As a PHP Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you are not averse to a little TypeScript or other technologies that might be used. Would you also like to become a PHP Developer at Coolblue? Read below if the

Bekijk vacature »

Back end developer

Functie Jij als full stack ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. De technische uitdaging momenteel is dat

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar ga jij aan de slag bij een van onze klanten actief in de High Tech Industrie. Onze klanten zijn voornamelijk gelokaliseerd in de omgeving van Eindhoven. Wij zijn erg selectief als het gaat om de projecten die wij accepteren en richten ons dan ook alleen op innovatieve en complexe projecten. Omdat onze klanten voornamelijk gespecialiseerd zijn in de machinebouw, werk jij ook vaak dicht tegen de machines aan. Ons team bestaat momenteel uit Embedded engineers, IOT developers en Cloud engineers. Wij werken voornamelijk aan Microsoft projecten waar er gebruik wordt gemaakt van WPF, UWP, .NET Core

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 »

In-house .NET software developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house development functie? Maak jij graag hét verschil m.b.t. interne automatisering? Haal jij energie uit het automatiseren van processen voor je eigen collega's? Dan hebben wij de perfecte vacature voor je! Voor een gezellig Brabants familiebedrijf, zijn wij op zoek naar een .NET software developer. Je gaat in deze zelfstandige functie werken aan de ontwikkeling van eigen applicaties & en het koppelen van deze applicaties aan de ingekocht software. Jouw werkzaamheden zien er als volgt uit: Het management team signaleert behoeftes vanuit de business. Vervolgens worden deze behoeftes uitgewerkt en geprioriteerd.

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 »

.NET Developer

Functie omschrijving In deze functie ga je werken als C# Developer. Jij gaat aan de slag met de volgende taken: Maatwerk software bouwen; Huidige softwareprojecten verder uitbouwen en optimaliseren; Ideeën van de klant omzetten naar handige oplossingen en tools; Bovenstaande doe je middels de Microsoft- stack: C#, ASP.NET en MVC/ Entity Framework. Ben je net afgestudeerd aan een HBO opleiding Informatica, aarzel dan niet om te solliciteren. Dit is namelijk de ideale startersfunctie! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van websites. Dit is door

Bekijk vacature »

Robot Programmeur

In het kort Drie redenen waarom deze vacature uniek is! Modern, innovatief en Informeel bedrijf waar veel mogelijk is Werken met diverse robot merken Meehelpen met inbedrijfstellingen bij de klant De organisatie Hier ga je aan de slag Dit groeiende bedrijf van totaaloplossingen in de automatisering van productieprocessen, is hoofdzakelijk actief in de Benelux. Vanuit het kantoor in regio Amersfoort worden veel oplossingen geboden in de vorm van robotica. Geen project is hetzelfde wat garant staat voor bijzonder veel afwisseling. De bedrijfsgrootte is ongeveer 80 man. Van gerobotiseerde machinebeladingen tot aan assemblage automatiseringen wordt vanuit krachtige engineering maatwerk equipment geleverd.

Bekijk vacature »

SQL database ontwikkelaar

Functie omschrijving Ben jij niet bang voor complexe algoritmes? Schikt het schrijven van procedures in T-SQL jouw niet af en heb jij al de nodige informatie in SQL, dan is functie precies wat voor jou! Jouw werkzaamheden gaan er als volgt uit zien: Je gaat werken aan de complexere projecten waar jij van A tot Z bij betrokken bent. Je gaat zorg dragen voor het ontwerp, de ontwikkeling en het updaten van SQL databases. Dit doe je op basis van T-SQL. Jij bent van start tot finish betrokken bij de projecten die jij leidt. Je houdt contact met klanten en

Bekijk vacature »
Veur Heur

Veur Heur

19/12/2022 07:50:08
Quote Anchor link
Al jaren gebruik ik een (misschien verkeerde) manier van INSERT INTO namelijk...

Om een uniek veld af te dwingen (bijv. user o.b.v. e-mail) zet ik een kolom op UNIQUE en is de insert query niet true, dan toon ik een foutmelding. Sinds PHP8.x geeft dit echter een foutmelding en twijfel ik of dit altijd wel de juiste manier is geweest en vraag ik me af...

Moet ik o.b.v. de UNIQUE kolom eerst een SELECT doen om te zien of de waarde bestaat en o.b.v. daarvan een foutmelding tonen of zijn er betere manieren die misschien minder omslachtig zijn?
 
PHP hulp

PHP hulp

28/12/2024 21:03:30
 
Jan R

Jan R

19/12/2022 09:09:49
Quote Anchor link
Database structuur is inderdaad uniek.
Als je record niet unique is dan krijg je nu inderdaad een melding. Deze melding kan je onderdrukken door
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysqli_report(MYSQLI_REPORT_OFF);

Een ander alternatief in aan je sql dit toevoegen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
ON DUPLICATE KEY UPDATE id=id
Niet echt proper maar het werkt wel.
 
Veur Heur

Veur Heur

19/12/2022 09:13:59
Quote Anchor link
Meldingen onderdrukken lijkt me nooit handig en in het geval van de toevoeging: is de uitkomst dan niet altijd true?
 

19/12/2022 10:24:02
Quote Anchor link
Met een UNIQUE index bewaakt de database server de integriteit van de gegevens.
Dat is ideaal om te voorkomen dat programmeurs fouten maken die de gegevens corrumperen.

De SQL syntax ON DUPLICATE KEY UPDATE is wel proper, mits je het toepast in de juiste situaties.
Stel, iemand vult de gegevens in van een bepaalde productcode (primary key) en klikt op 'Opslaan'.
Als het niet uitmaakt dat het product al in de database stond, dan kan je op deze manier de gegevens overschrijven, zonder extra queries uit te laten voeren.
Deze bewerking wordt ook wel 'UPSERT' genoemd: UPDATE OR INSERT. Zie ook https://linuxhint.com/upsert_mysql/
Gewijzigd op 19/12/2022 10:26:26 door
 
Adoptive Solution

Adoptive Solution

28/12/2022 15:32:50
Quote Anchor link
Hier een uitgebreid doch versimpeld voorbeeld van INSERT ON DUPLICATE UPDATE.

De idee is om een uniek accountnummer aan te maken en te reserveren alvorens de verdere gegevens in te voeren en te bewaren.

Als een leeg record niet wordt gebruikt omdat de invoer is afgebroken, kan je het gereserveerde accountnummer zelf gebruiken en daar je eigen gegevens aan toevoegen.Weliswaar is dat een omweg, maar toch.

De nadruk ligt op het aanmaken van het unieke accountnummer mbv MySQL in spCreateAccount().

Wat het doet :

Een leeg record met uniek accountnummer wordt aangemaakt : spCreateAccount && sfMakeAccountNumber

Met een form worden andere gegevens ingevoerd en bewaard met spUserInsert

Procedure spGetDiagnostics doet voor als een uniek record al bestaat.

Andere procedures laten de lege records zien en wissen die.

Maak eerst een lege database aan ( upsert , wordt in connect.php gebruikt ) en voer dan onderstaand SQL bestand uit dat een tabel en de procedures en functie toevoegt.

Aan het eind worden die uitgevoerd.

Fouten voorbehouden.

Zelf ideeën toevoegen en/of uitwerken.

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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
-- Adminer 4.8.1 MySQL 10.6.11-MariaDB-0ubuntu0.22.04.1 dump

SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

SET NAMES utf8mb4;

DELIMITER ;;

DROP FUNCTION IF EXISTS `sfMakeAccountNumber`;;
CREATE FUNCTION `sfMakeAccountNumber`() RETURNS char(15) CHARSET utf8mb4 COLLATE utf8mb4_general_ci
BEGIN
SET @modulo = 26;
SET @nu     = NOW();
SET @jaar   = DATE_FORMAT( @nu, '%y' ) - 20;
SET @maand  = MONTH(@nu);
SET @dag    = MOD( DAYOFMONTH( @nu ), @modulo );

IF @dag = 0 THEN
    SET @dag = 1;
END IF;

#SET @wofm   = FLOOR( ( DAYOFMONTH( @nu ) - 1) / 7) + 1;

SET @uur = HOUR( @nu );
IF @uur = 0 THEN
    SET @uur = 1;
END IF;

SET @minuut = MOD( MINUTE( @nu ) , @modulo );
IF @minuut = 0 THEN
    SET @minuut = 1;
END IF;

SET @seconde = MOD( SECOND( @nu ) , @modulo );
IF @seconde = 0 THEN
    SET @seconde = 26;
END IF;

SET @micro = MICROSECOND( SYSDATE(4) );
IF @micro = '' THEN
    SET @micro = '9999';
END IF;
SET @micro = LPAD( @micro, 4, 0 );

SET @base     = 64;
SET @cjaar    = CHAR( @base + @jaar );
SET @cmaand   = CHAR( @base + @maand );
SET @cdag     = CHAR( @base + @dag );
#SET @cwofm    = CHAR( @base + @wofm );
SET @cuur     = CHAR( @base + @uur );
SET @cminuut  = CHAR( @base + @minuut );
SET @cseconde = CHAR( @base + @seconde );
SET @account  = CONCAT ( @cjaar, @cmaand, @cdag, @cuur, @cminuut, @cseconde, @micro, 'Z' );

RETURN @account;
END;;

DROP PROCEDURE IF EXISTS `spCheckEmptyAccounts`;;
CREATE PROCEDURE `spCheckEmptyAccounts`()
SELECT *
FROM users
WHERE naam IS NULL
ORDER BY registratiedatum;;

DROP PROCEDURE IF EXISTS `spCreateAccount`;;
CREATE PROCEDURE `spCreateAccount`()
BEGIN
    SET @errno = 0;
    REPEAT
        SET @account = sfMakeAccountNumber();
        INSERT IGNORE INTO users (account, registratiedatum, naam, adres, woonplaats) VALUES ( @account, NOW(), NULL, NULL, NULL);
        GET DIAGNOSTICS @num_conditions = NUMBER;
        SET @nummer = @num_conditions;
        GET DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO;
    UNTIL @errno = 0 END REPEAT;
    SELECT @account AS account;
END;;

DROP PROCEDURE IF EXISTS `spDeleteEmptyAccounts`;;
CREATE PROCEDURE `spDeleteEmptyAccounts`()
DELETE FROM users WHERE naam IS NULL;;

DROP PROCEDURE IF EXISTS `spGetDiagnostics`;;
CREATE PROCEDURE `spGetDiagnostics`()
BEGIN
INSERT IGNORE INTO users (account, registratiedatum, naam, adres, woonplaats) VALUES ( 'BBFAUHJ28851K', NOW(), NULL, NULL, NULL);
GET DIAGNOSTICS @num_conditions = NUMBER;
SET @nummer = @num_conditions;
GET DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO;
If @errno = 1062 THEN
  SELECT @errno AS fout;
ELSE
  SELECT @nummer;
END IF;
END;;

DROP PROCEDURE IF EXISTS `spUserInsert`;;
CREATE PROCEDURE `spUserInsert`(IN `faccount` char(15), IN `fnaam` char(50), IN `fadres` char(50), IN `fwoonplaats` char(50))
BEGIN

INSERT INTO
users ( account, registratiedatum, naam, adres, woonplaats )
VALUES ( faccount, now(), fnaam, fadres, fwoonplaats )
ON DUPLICATE KEY UPDATE
    naam = values(naam),
    adres = values(adres),
    woonplaats = values(woonplaats);
END;;

DELIMITER ;

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `account` char(15) NOT NULL,
  `registratiedatum` char(20) NOT NULL,
  `naam` char(50) DEFAULT NULL,
  `adres` char(50) DEFAULT NULL,
  `woonplaats` char(50) DEFAULT NULL,
  PRIMARY KEY (`account`),
  UNIQUE KEY `id` (`id`),
  KEY `naam` (`naam`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;


-- 2022-12-27 09:48:04

# demo how it works
TRUNCATE TABLE users;
CALL spGetDiagnostics();
CALL spCheckEmptyAccounts();
CALL spGetDiagnostics();
CALL spCreateAccount();
CALL spCheckEmptyAccounts();
SELECT @account;
SET @naam = 'Fred';
SET @adres = 'Plein 54';
SET @woonplaats = 'Ergens';
CALL spUserInsert(@account, @naam, @adres, @woonplaats);
SELECT * FROM users WHERE account = @account;
SELECT * FROM users;
CALL spDeleteEmptyAccounts();
SELECT * FROM users;


Dit zijn de PHP bestanden.

connect.php om te verbinden

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$SQL_host
     = 'localhost';
$SQL_user     = 'root';
$SQL_password = 'password';
$SQL_port     = '3306';
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new MySQLi( $SQL_host, $SQL_user, $SQL_password, '', $SQL_port );
$db->set_charset("utf8mb4");
$db->query("SET NAMES utf8mb4 COLLATE utf8mb4_general_ci");

$dbase = 'upsert';
$db->select_db( $dbase );
?>


menu.php

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
<style>
#menu {
    font-family: Copperplate;
    font-size: 1.200em;
    }

#menu a {
    text-decoration: none;
    }

</style>

<p id="menu">
<a href="UserInput.php">Input</a> |
<a href="UserUpdate.php">Update</a> |
<a href="UserShowAll.php">All</a>
</p>

<hr />


index.php om te beginnen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
include('menu.php');
?>


<h3>Upsert Demo</h3>


UserInput.php om in te voeren

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
<?php

include('menu.php');

include ('connect.php'); // = new mysqli();
$query = "CALL spCreateAccount();";
$result = $db->query( $query );
if ( $result->num_rows > 0 ):
    $row = $result->fetch_object();
    echo '<pre>' . print_r( $row, TRUE ) . '</pre>';
    $account = $row->account;
endif;

?>


<style>
p, input {
    font-size: 120%;
}
</style>

<form method="post" action="UserPost.php">

    <p>Account <input type="text" name="account" value="<?php echo $account; ?>" readonly /></p>

    <p>Naam <input type="text" name="naam" value="" required /></p>

    <p>Adres <input type="text" name="adres" value="" required /></p>

    <p>Woonplaats <input type="text" name="woonplaats" value="" required /></p>

    <p><input type="submit" name="submit" value="submit" /></p>

</form>


UserPost.php om te verwerken en het resultaat te zien

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
<?php
include('menu.php');

echo '<pre>' . print_r( $_POST, TRUE ) . '</pre>';

if ( $_POST['submit'] ):

    include('connect.php');// = new mysqli();

    $faccount    = $db->real_escape_string( trim( $_POST['account'] ) );
    $fnaam       = $db->real_escape_string( trim( $_POST['naam'] ) );
    $fadres      = $db->real_escape_string( trim( $_POST['adres'] ) );
    $fwoonplaats = $db->real_escape_string( trim( $_POST['woonplaats'] ) );

    if ( !empty($faccount) && !empty($fnaam) && !empty($fadres) && !empty($fwoonplaats) ):
        $query = 'CALL spUserInsert("' . $faccount . '", "' . $fnaam . '", "' . $fadres . '", "' . $fwoonplaats . '")';
        echo '<p>' . $query . '</p>';

        $result = $db->query( $query );

        $query = 'SELECT * FROM users WHERE account = "' . $faccount . '"';
        $result = $db->query( $query );
        $row = $result->fetch_object();
        echo '<pre>' . print_r( $row , TRUE ) . '</pre>';
    else:
        echo '<p style="color:red;">Er ontbreken gegevens</p>';
    endif;

endif;

?>


UserUpdate.php om te bewerken

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
include('menu.php');
?>


<style>
    p, input {
        font-size: 120%;
    }
    </style>

<?php
if ( isset( $_GET['account'] ) ):
    
    include ('connect.php'); // = new mysqli();
    $account = $_GET['account'];
    $query = 'SELECT * FROM users WHERE account = "' . $account . '";';
    echo '<p>' . $query . '</p>';
    $result = $db->query( $query );
    if ( $result->num_rows > 0 ):
        $row = $result->fetch_object();
        echo '<pre>' . print_r( $row, TRUE ) . '</pre>';
        $account = $row->account;
        $naam = $row->naam;
        $adres = $row->adres;
        $woonplaats = $row->woonplaats;
        ?>


        <form method="post" action="UserPost.php">

        <p>Account <input type="text" name="account" value="<?php echo $account; ?>" required /></p>

        <p>Naam <input type="text" name="naam" value="<?php echo $naam; ?>" required /></p>

        <p>Adres <input type="text" name="adres" value="<?php echo $adres; ?>" required /></p>

        <p>Woonplaats <input type="text" name="woonplaats" value="<?php echo $woonplaats; ?>" required /></p>

        <p><input type="submit" name="submit" value="submit" /></p>

        </form>

        <?php
    else:
        echo '<p>Account niet gevonden</p>';
    endif;

else:
    echo '<p>Accountnummer ontbreekt</p>';
endif;

?>
Gewijzigd op 28/12/2022 15:34:40 door Adoptive Solution
 
Ozzie PHP

Ozzie PHP

28/12/2022 17:00:45
Quote Anchor link
>> Om een uniek veld af te dwingen (bijv. user o.b.v. e-mail)

Als het gaat om het toevoegen van een username o.b.v. een e-mailadres, dan lijkt me inderdaad de eerste logische stap om te bepalen of die username wellicht al bestaat. Dit zou ik dan doen vóórdat ik nieuwe informatie aan de database ga toevoegen.

In het geval dat het mailadres (als username) al bestaat, heeft de eigenaar daarvan waarschijnlijk vergeten dat hij zich ooit al eens heeft ingeschreven. In dat geval kun je vragen: bent u uw wachtwoord vergeten? (en zo ja een wachtwoord reset-link mailen)
 
Adoptive Solution

Adoptive Solution

28/12/2022 18:47:57
Quote Anchor link
Simpel testen of iets bestaat :

https://www.tutorialspoint.com/best-way-to-test-if-a-row-exists-in-a-mysql-table

Toevoeging op 28/12/2022 20:35:53:

Dit kan ook :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
DELIMITER ;;

DROP PROCEDURE IF EXISTS `spAccountBestaat`;;
CREATE PROCEDURE `spAccountBestaat`(IN `accountnum` char(15))
BEGIN
SET @x = (SELECT 1 FROM users WHERE account = accountnum);
#SELECT @x ;
SELECT COALESCE(@x, 0) AS bestaat;
END;;

DELIMITER ;


Een stored procedure die een 1 of 0 teruggeeft als een unieke gebruikersnaam wel of niet bestaat.

Je kan bij het opslaan vooraf een CALL spAccountBestaat() maken en daarop reageren.

Of je kunt bij het invoeren van de unieke gebruikersnaam bij elke keyup met AJAX e.e.a. dynamisch controleren.

https://www.w3schools.com/php/php_ajax_livesearch.asp
 



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.