INSERT INTO unique

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

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 »

Back-end ontwikkelaar

Functie omschrijving Wil jij meebouwen aan diverse databasesystemen in een klein bedrijf met een platte organisatie? In een team van ruim 10 ontwikkelaars wordt er aan diverse ICT oplossingen gewerkt. Jouw taken hierbij zullen bestaan uit: Het onderhouden en door-ontwikkelen van bestaande databases. Denk hierbij aan schema verbeteringen en performance-tuning. Bij nieuwe ontwikkelingen ga jij ook bezig met het bouwen van het databaseschema. Omdat je in een klein team werkt zal je ook de C# routine verder uitbouwen en ontwikkelen. Ook kan je meedraaien in algemene refactory-, ontwikkel- of testwerkzaamheden. Je zal voornamelijk gebruik maken van de volgende technieken: .NET

Bekijk vacature »

Frontend Developer

Functieomschrijving Voor de NIPV zijn wij opzoek naar een Frontend Developer. Als Frontend Developer ga jij aan de slag om dashboards te bouwen vanuit het datawarehouse. Dit stelt NIPV in staat om snel en eenvoudig bij correcte bedrijfsvoeringsinformatie te kunnen. Je ontwikkelt dashboards in PowerBI, publiceert en onderhoud die, verzameld en verwerkt feedback in overleg met het ontwikkelteam. Naast dashboards ontwikkel en onderhoud je een datamodel in Excel waarmee adviseurs, controllers en analisten in staat worden gesteld om de gegevens uit de dashboards te raadplegen en anders te filteren of bepaalde gegevens nader te verfijnen, zodat verdiepende vragen kunnen worden

Bekijk vacature »

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

Bekijk vacature »

Junior .NET developer

Functie Om half 9 kom jij binnen en pak jij als eerst natuurlijk een bakje koffie of thee. Vervolgens ga jij je voorbereiden op de stand-up van kwart voor 9. Zijn er bijvoorbeeld dingen waar jij nog tegen aan loopt? Of is er nog code die getest of gereviewd moet worden? Vervolgens starten jullie met de stand up en na de stand up zoeken jullie elkaar op en gaan jullie aan de slag. Als team met 6 developers werken jullie in drie wekelijkse sprints. Het einde van een sprint is altijd op een donderdag zodat jullie op vrijdag de demo

Bekijk vacature »

Front-end developer wanted! (Angular, React, Vue.j

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

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 »

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 »

Cloud Developer

Cloud Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Senior Full Stack developer

Bedrijfsomschrijving tbd Functieomschrijving Full Stack Java Development bij Randstad Groep Nederland (HQ) Er is een vacature in het Corporate Client Solutions (CCS) team. Dit team is met een ander team net begonnen aan het project ‘Grip op Inhuur’. Het doel van dit project is de tevredenheid van onze leveranciers te verhogen en de efficiëntie van onze administratie te verbeteren. Onderdeel daarvan is een ‘Mijn-omgeving’ voor ZZP’ers en leveranciers. Naast dit nieuwe project werkt het team ook aan het onderhoud en verbeteren van een digitaal vacature management systeem waarmee dagelijks vele vacatures worden voorzien. Het team ontwikkelt zo veel mogelijk zelf

Bekijk vacature »

Magento developer

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

C# .Net Developer

Dit ga je doen Het bouwen van Api's; Nieuwe oplossingen bouwen met C# .Net; De huidige software uitbouwen met C# .Net; Meewerken in projecten; Meedenken aan de toekomstplannen en verbeteringen; Onderdeel van het Scrum Team. Hier ga je werken Onze klant is een dienstverlenende organisatie voor diverse soorten organisaties in Nederland. Ze zijn van oorsprong een familiebedrijf en er is een open cultuur. Ze zijn vooruitstrevend op IT gebied en hebben een eigen inhouse development team van circa 11 man. Je komt hier te werken in het subteam .Net Core. Hier werken ze volgens scrum met de nieuwste technieken en

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden je HBO ICT Informatica diploma in ontvangst mogen nemen? Of heb je een aantal jaar ervaring als Software Developer en ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een gewaardeerde werkgever in de regio van Goirle zijn wij op zoek naar een junior/medior Back-end Developer met affiniteit met MS Acess. Samen met een vooruitstrevend team ben je verantwoordelijk voor het ontwikkelen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL en affiniteit met MS Acess. Je bent klantvriendelijk en flexibel ingesteld en vindt het leuk om klanten te

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

14/05/2024 00:45:15
 
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?
 
Ad Fundum

Ad Fundum

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 Ad Fundum
 
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.