Toon posts:

[php][mysql] controleer op dubbele invoer

Pagina: 1
Acties:
  • 64 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben een aanmeldsite aan het maken voor een LAN die ik op school ga organiseren. De site is te vinden op:

http://81.69.15.71/aanmelden/

Nu is het echter niet de bedoeling dat mensen dubbele waarden invoeren. Met andere woorden: mensen mogen zich niet meer dan 1 keer aanmelden. Dit wil ik bereiken door de volgende controles uit te voeren.

1. Het ingevoerde leerlingnummer mag maar 1 keer in de tabel voorkomen.
2. De combi voornaam, tussenvoegsel, achternaam mag maar 1 keer voorkomen.
3. Nickname mag maar 1 keer voorkomen.

Het probleem is echter dat ik er geen flauw idee van heb hoe dit in mysql zou moeten. Het volgende had ik bedacht, maar ik weet niet of dit nu eigenlijk de goede manier is om zoiets te bereiken:

code:
1
2
3
4
$leerlinnr=$_POST['leerlingnr'];
    $query="SELECT leerlingnr FROM aanmeldingen where '%$leerlingnr%'";
    $result=mysql_query($query);
        if($num_results > 0) $errorMessage .= "<font color=#ff0000> Je bent al aangemeld! </font>";

Deze code lijkt overigens niet te werken maar het idee is naar mijn mening duidelijk.Heeft er iemand een idee hoe ik dit probleem goed zou moeten aanpaken?

  • Gardocki
  • Registratie: Oktober 2000
  • Niet online
Moet het niet zijn:

SELECT leerlingnr FROM aanmeldingen WHERE leerlingnr = '%$leerlingnr%'";

?

[ Voor 15% gewijzigd door Gardocki op 16-01-2005 00:17 ]

They made me do it.


  • rb338
  • Registratie: Januari 2001
  • Laatst online: 04-03 19:38
Als je de % tekens gebruikt is het sowieso: "... WHERE leerlingnr LIKE '%$leerlingnr%'"
Maar aangezien het om een nummer gaat moet je gewoon "... WHERE leerlingnr = '$leerlingnr'" gebruiken.

Waarom laat je registranten uberhaupt een nummer invullen? Gebruik dan liever autonummering...

Verder gebruik je gewoon voor elke waarde de "... WHERE kolom = $blaat"
Lijkt me de basis van SQL, dus ga eens wat lezen zou ik zeggen :)

edit:
Enneh, ik zie jou nergens de variable $num_results vullen...?
Doe dat sowieso even met $num_results = mysql_num_results($result)

[ Voor 26% gewijzigd door rb338 op 16-01-2005 02:43 ]


  • rickmans
  • Registratie: Juli 2001
  • Niet online

rickmans

twittert

Verwijderd schreef op zondag 16 januari 2005 @ 00:15:
.

1. Het ingevoerde leerlingnummer mag maar 1 keer in de tabel voorkomen.
2. De combi voornaam, tussenvoegsel, achternaam mag maar 1 keer voorkomen.
3. Nickname mag maar 1 keer voorkomen.
Je kan ook al een deel voorkomen in je database sowieso. Zorg dat het leerlingnummer een primary key is en voor punt twee en drie kan je unique keys definieren. Daarnaast zou je nog een nette front end melding moeten maken. Waarbij je inderdaad met een query zoals rb338 ook aangeeft geen LIKE hoeft te gebruiken. Het gaat namelijk om een exacte match neem ik aan en met een like (en wildcards) zoek je naar een gedeelte van een string, nummer die meerdere keren (gedeeltelijk)kan voorkomen.

Don't mind Rick


  • Tom-my
  • Registratie: November 2000
  • Laatst online: 21-05-2025

Tom-my

w03iz0rz

Verwijderd schreef op zondag 16 januari 2005 @ 00:15:
I
1. Het ingevoerde leerlingnummer mag maar 1 keer in de tabel voorkomen.
2. De combi voornaam, tussenvoegsel, achternaam mag maar 1 keer voorkomen.
3. Nickname mag maar 1 keer voorkomen.

[/code]
1. mee eens, een keer voorkomen, maar je gebruikt zo te zien nu een char of varchar voor je nummer (aan je quote's te zien) niet doen joh. Tis een nummer, dus gewoon het nummer op slaan als int of iets in die richting.

2. Zou ik niet doen, zo origineel zijn mensen in nederland niet, de combinatie naam + voornam kan wel is gelijk zijn, zeg niet dat het zo is, maar zou moeten kunnen.

3. Dat zou ik wel afvangen, maar wederom met een = en niet een like

"Then there was the man who drowned crossing a stream with an average depth of six inches."


Verwijderd

Verwijderd schreef op zondag 16 januari 2005 @ 00:15:
Deze code lijkt overigens niet te werken maar het idee is naar mijn mening duidelijk.Heeft er iemand een idee hoe ik dit probleem goed zou moeten aanpaken?
Ga jij eerst eens even een basis beginnerscursus MySQL lezen.

Modbreak:Iets minder hard reageren mag wel. Als een topic je echt niet aan staat laat dan dit soort replies achterwege en maak een topic report

[ Voor 28% gewijzigd door Creepy op 16-01-2005 11:39 ]


  • Taro
  • Registratie: September 2000
  • Niet online

Taro

Moderator General Chat / Wonen & Mobiliteit
$leerlinnr=$_POST['leerlingnr'];
$query="SELECT leerlingnr FROM aanmeldingen where '%$leerlingnr%'";

Mjah, een variabele $leerlinnr zonder g en daarna gebruik je hem met g, tuurlijk gaat dat niet werken, ook is je WHERE leeg. Nu zal de query dit zijn: SELECT leerlingnr FROM aanmeldingen where '%%'"; Wat where? Wat moet ie vergelijken? Dit slaat nergens op :)

Gewoon eerst een select doen en checken of je num results terug krijgt, zo niet doe je een insert. Je kan natuurlijk ook in de DB aangeven dat iets een unieke waarde moet zijn. Denk dat dit allemaal best makkelijk te vinden is.

[ Voor 13% gewijzigd door Taro op 16-01-2005 09:57 ]

iotdomotica.nl | Replace fear of the unknown with curiosity | 95 kWh thuisaccu | Tesla Model Y LR & Model 3 SR+ | 11.460 Wp


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 14:22

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op zondag 16 januari 2005 @ 00:15:
Het probleem is echter dat ik er geen flauw idee van heb hoe dit in mysql zou moeten. Het volgende had ik bedacht, maar ik weet niet of dit nu eigenlijk de goede manier is om zoiets te bereiken:

code:
1
2
3
4
$leerlinnr=$_POST['leerlingnr'];
    $query="SELECT leerlingnr FROM aanmeldingen where '%$leerlingnr%'";
    $result=mysql_query($query);
        if($num_results > 0) $errorMessage .= "<font color=#ff0000> Je bent al aangemeld! </font>";

Deze code lijkt overigens niet te werken maar het idee is naar mijn mening duidelijk.Heeft er iemand een idee hoe ik dit probleem goed zou moeten aanpaken?
Wat je nu vraagt is een MySQL / PHP tutorial van het nivo waar er echt een hele hoop zijn te vinden op het groze boze internet. Iets wat je aan de replies in je topic ook al ziet.

Dit is iets wat op zich basis kennis genoemd mag worden, en indien het geen basis kennis is dan is dit met een vrij weinig kennis van PHP en MySQL vrij snel te leren. Vandaar dat ik je ook ga vragen om eerst een MySQL / PHP tutorial te gaan bekijken en daar eens mee aan de slag te gaan :).

Op het moment dat je er echt niet uitkomt en je zelf al het 1 en ander hebt geprobeert en je kan een concrete vraag stellen met daarbij eventueel wat code van wat je op dat moment hebt: open dan gerust een nieuwe toic :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.