php [huisnummer checken]

Pagina: 1
Acties:
  • 169 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 14-08 07:47

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
Ik heb het volgende stuk code om een huisnummet te checken. Maar het werkt niet helemaal. Je moet namelijk nu perse een huisnummer met een letter invullen. Maar dat is natuurlijk niet de bedoeling. Hoe kan ik nou zorgen dat die letters optioneel zijn, maar wel zijn toegestaan. Maar dat alleen een letter niet is toegestaan en het mag ook niet beginnen met een letter.
code:
1
(!ereg("^[0-9].[a-zA-Z]+$", $huisnummer))

Acties:
  • 0 Henk 'm!

  • Pastinakel
  • Registratie: December 2000
  • Laatst online: 00:02

Pastinakel

Zwammen en kwazoedels

code:
1
(!ereg("^[0-9]+[a-zA-Z]*$", $huisnummer))

of:
code:
1
(!ereg("^[0-9]+[A-z]*$", $huisnummer))

code:
1
2
3
4
5
6
7
8
Quantifiers:

*      Match 0 or more times
+      Match 1 or more times
?      Match 1 or 0 times
{n}    Match exactly n times
{n,}   Match at least n times
{n,m}  Match at least n but not more than m times

[ Voor 74% gewijzigd door Pastinakel op 10-04-2003 22:26 ]

Ik kan je niet helpen. De frutsel is warrig en niet knopig. Bovendien heb ik maar één kant | Scrobblernakel


Acties:
  • 0 Henk 'm!

Verwijderd

Het is misschien een goed idee om het huisnummer en het bijvoegsel ervan te scheiden. Dus "14" en "huis" in een apart veld. Jouw systeem laat sowieso "huis" of "zolder" of "kelder" of i.d. niet toe.

Verder is het een goed idee wat manuals door te werken voor je een vraag stelt. Er komen hier zo vaak vragen over regexes, terwijl dit allemaal goed gedocumenteerd is.

Acties:
  • 0 Henk 'm!

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 14-08 07:47

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
Jah in dat laatste heb je in iedergeval gelijk. Ik had ook al gekeken op www.php.net. Maar daar werd niets toegeligt over de syntaxen voor het commando ereg. Wat je met huis of kelder bedoelt snap ik niet helemaal. Het gaat mij er om dat huisnummers zoals 16A en 125B toegestaan zijn. Dus maar 1 letter.

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

En wat met
• 23bis
• 45 2 hoog

allemaal geldige huisnummers

[edit]

NEN (Nederlandse ISO) zegt:
Huisnummer: 5 tekens
toevoeging: 4 tekens
aanduidingtype ADRES-NEN5825
definitie Een ADRES-NEN5825 is een aanduiding voor een LOCATIE.
vormtype [0] ADRES
[1] LOCATIEOMSCHRIJVING AN 35
[2] STRAAT
[21] STRAATNAAM AN 24
[22] HUISNUMMER AN 05
[23] HUISNUMMERTOEVOEGING AN 04
[24] WOONBOOT-WOONWAGENVERWIJZING A 02
[25] POSTBUSNUMMER AN 05
[26] ANTWOORDNUMMER AN 05
[3] POSTCODE
[31] POSTCODE-NUMERIEK N 04
[32] POSTCODE-ALFABETISCH A 02
[4] WOONPLAATSNAAM AN 24
[5] LAND
[51] LANDCODE-A2 A 02
[52] LANDNAAM AN 17

domein Zie overeenkomstige referenties.[1] LOCATIEOMSCHRIJVING
Een nadere aanduiding bij de straatnaam en - indien aanwezig - het huisnummer; gebruikmaking van de locatieomschrijving kan om verschillende redenen wenselijk danwel noodzakelijk zijn. Het huisnummer kan ontbreken of men wil niet-uiterlijk waarneembare kenmerken, zoals toevoegingen voor nadere differentiatie achter de voordeur vermelden;
[21] STRAATNAAM
een naam waarmee een straat binnen een plaats wordt aangeduid, volgens NEN 5825 Adressen; straat is de verzamelnaam voor weg, plein, singel etc.; hoofd- en kleine letters, numerieke tekens en leestekens; indien de straatnaam langer is dan 24 posities, dan verkorten overeenkomstig NEN 5825, Adressen, Bijlage A, Inkortingsregels voor straatnamen;
[22] HUISNUMMER
een nummer waarmee een gebouw binnen een straat uniek wordt aangeduid, volgens NEN 5825; numerieke tekens en spaties;
[23] HUISNUMMERTOEVOEGING
een toevoeging aan een HUISNUMMER om een LOCATIE uniek aan te kunnen duiden, volgens NEN 5825;
[24] WOONBOOT-WOONWAGENVERWIJZING
een verwijzing om aan te geven dat een ADRES een woonboot danwel woonwagen betreft; code "AB" staat voor "woonboot"; code "WW" staat voor "woonwagen"; in NEN 5825 Adressen zijn voor woonboot- c.q. woonwagenverwijzing twee verschillende gegevenselementen aanwezig, deze zijn voor gebruik binnen "PTT Telecom BV" gecombineerd in een(1) standaard gegevenselement.
[26] ANTWOORDNUMMER
een numerieke aanduiding zoals deze door de Nederlandse PTT is vastgesteld voor antwoordnummeradressen;
[3] POSTCODE
een officiële door een PTT toegekende aanduiding voor een gebied;
[31] POSTCODE-NUMERIEK het numerieke deel van een Nederlandse POSTCODE;
[32] POSTCODE-ALFABETISCH
het alfabetische deel van een Nederlandse POSTCODE;
[4] WOONPLAATSNAAM
een naam waarmee een WOONPLAATS uniek wordt aangeduid, volgens NEN 5825 Adressen;
[51] LANDCODE-A2
een code waarmee een land wordt geidentificeerd, volgens ISO 3166 Alpha-2; Hoofdletters: Zie ISO 3166 Country code, Alpha-2, aangevuld met NEN 1888 Algemene persoonsgegevens, Bijlage D, Codes voor namen van landen en gebiedsdelen, niet opgenomen in de NEN-ISO 3166. De lettercombinaties "AA", "QM" t/m "QZ" en "XA" t/m "XZ" zijn in ISO 3166 beschikbaar voor persoonlijk gebruik en kunnen tijdelijk worden toegekend aan landen die nog niet in ISO 3166 zijn opgenomen. Een deel van deze persoonlijke codes is in NEN 1888 Algemene persoonsgegevens, Bijlage D, al gereserveerd en dient te worden overgenomen voor gebruik binnen "PTT Telecom BV" totdat officiele toekenning van codes plaatsvindt in ISO 3166.
[52] LANDNAAM
Een naam waarmee een land uniek wordt aangeduid; bij voorkeur: EDIFACT 3206 Country; Opmerking: indien noodzakelijk de volgende afkortingen gebruiken: DEM. voor DEMOCRATIC ISL. voor ISLANDS MISC. voor MISCELLANEOUS REP. voor REPUBLIC

voorbeeld [1] "Woonboot Willem III t.o. 25"
"Camping De Oude Stal"
"Woonwagen Bambi bij 65"
"Kamer 432"
[21] "Burg. Stronkhorststr"
[24] "AB"
[31] "1099"
[32] "ZZ"
[4] "AMSTERDAM"
[51] "XX" = onbekend
"XE" = Estland
"NL" = Nederland
[52] EDIFACT 3206: "NETHERLANDS"
ISO 3166, french: "PAYS-BAS"
"Lijst van Landennamen": "Nederland"


referentie [1] NEN 5825 Adressen
[2] zie [1]
[3] Postcodetabel 2, straatnaam volgens PTT conventies
[31] NEN 5825 Adressen, 4.3.9.1 Woonplaatscode Nb: Deze woonplaatscode heeft niet dezelfde betekenis als WOONPLAATSCODE
[32] NEN 5825 Adressen, 4.3.9.2 Lettercode
[4] zie [1]
"PTT Topografische aanduidingen" (niet uitputtend)
[5] ISO 3166 Codes for the representation of names of countries
[51] EDIFACT 3207 Country; CCITT X.400; bij e-mail wordt formaat A2 uit CCITT X.400 gehanteerd. Bij netwerkadministratie wordt formaat A3 uit CCITT M.140 gehanteerd. In overige gevallen bij voorkeur formaat A2 hanteren. Beide formaten zijn een (1) op een (1) in elkaar te vertalen.
[52] EDIFACT 3206 Country PTT Topografische aanduidingen

[ Voor 98% gewijzigd door thomaske op 10-04-2003 23:28 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 14-08 07:47

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
Ik vind het daar een beetje laat voor. Maar je hebt wel gelijk. Moet dat dan maar aanpassenin mijn script. Maar niet vandaag meer :O Bedankt in iedergeval.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik vraag me af in hoeveel programma's woonwagen-support zit ingebakken. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Hmmmm, ik zou het iig met twee velden doen, ik heb ff een scriptje gemaakt voor je! Ik denk dat het vlekkeloos werkt.. je moet zelf maar zien of je het gebruikt!
Als je nog vragen hebt of me wil contacteren doe je dat maar.
De DB connectie moet je natuurlijk zelf nog wel maken enzovoort...
stel dat men A invult, maar jij wilt dat het "a" is doe je gewoon:
PHP:
1
2
3
<?php
uc_words($letter); // en daarna natuurlijk nog in de DB gooien! :D
?>


hier is dan de uiteindelijke code:

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

if($_SERVER["REQUEST_METHOD"] == "POST") {

$nummer = $_POST["nummer"];
$letter = $_POST["letter"];

if(strlen($nummer) > 0) {

if(!is_numeric($nummer)) {
$error_message = "Je huistnummer bestaat niet :D<br>";
}


if(strlen($letter) > 1) { // ff checken of letter lengte groter is dan 1!
$error_message .= "Je huis kan niet uit meer dan 2 letters bestaan!<br>";
}

if(is_numeric($letter)) {
$error_message .= "Je huisletter is geen letter O_o"; // heb hier is_numeric() genomen maar weet niet of dat wel klopt!? 
}

if($error_message) {
echo "Je huis kan niet worden toegevoegd om de volgende redenen:<p>";
echo $error_message;
exit();
}

// gooi het in de database
echo "Succesvol toegevoegd!";

} else {
echo "Je moet de velden met een * invullen!<br>";
}

} else {


echo "<form method=\"POST\" action=\"$PHP_SELF\">
Huisnummer:* <input type=\"text\" name=\"nummer\" value=\"hier je huisnummer\" size=\"30\"><br>
Huisletter: <input type=\"text\" name=\"letter\" value=\"hier je letter van je huist\" size=\"30\"><br>
<input type=\"submit\" name=\"Submit\" value=\"toevoegen!\"></form>";

} 

?>


Groeten, Kris.

Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Verwijderd schreef op 11 april 2003 @ 09:50:
Hmmmm, ik zou het iig met twee velden doen, ik heb ff een scriptje gemaakt voor je!
Leuk, maar het is juist de bedoeling dat mensen zelf hun probleem oplossen met hulp van anderen, en niet een scriptje aangereikt krijgen... Zeker zo'n simpel iets als dit...

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

Verwijderd

Rotjeknor schreef op 11 April 2003 @ 10:02:
[...]

Leuk, maar het is juist de bedoeling dat mensen zelf hun probleem oplossen met hulp van anderen, en niet een scriptje aangereikt krijgen... Zeker zo'n simpel iets als dit...
daarom dat ik het even voor hem maakte ;)
maar goed.. ik help graag mensen :D

Acties:
  • 0 Henk 'm!

Verwijderd

ja maar het is niet het bedoeling van het forum, plus 1 veld is netter

Acties:
  • 0 Henk 'm!

Verwijderd

wel, voor mij lijkt het handiger om met 2 velden te werken!
hoe zou jij dan met maar 1 veld werken? :o

Acties:
  • 0 Henk 'm!

Verwijderd

ja het is makkelijker om te proggen, maar niet netjes voor een gebruiker. Ik wil gewoon 14a in kunnen typen, niet meerdere velden invullen.

Acties:
  • 0 Henk 'm!

Verwijderd

Dan zou ik substr() gebruiken als ik jouw was...

Acties:
  • 0 Henk 'm!

Verwijderd

???? ja en ik zou er ook een if statement bij gebruiken...

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Je huis kan niet uit meer dan 2 letters bestaan

Das ook een beetje onzin natuurlijk. Kijk eens in Amsterdam of in van die langerekte dorpen. Daar vind je vaak huisnummers tot 300/400

Acties:
  • 0 Henk 'm!

Verwijderd

Noork schreef op 11 April 2003 @ 10:41:
Je huis kan niet uit meer dan 2 letters bestaan

Das ook een beetje onzin natuurlijk. Kijk eens in Amsterdam of in van die langerekte dorpen. Daar vind je vaak huisnummers tot 300/400
ah in België is dat niet dus ik kon het niet weten hé :*)

Acties:
  • 0 Henk 'm!

  • Theguide
  • Registratie: December 2000
  • Laatst online: 26-06 11:48
Meest logische oplossing lijkt mij om te checken of het ingevoerde ALLEEN bestaat uit letters. Als dat het geval is, dan is het een ongeldig huisnummer, de rest is dan wel geldig. Tenzij er huisnummers bestaan uit louter letters.... in dat geval hoef je helemaal niet te checken :)

Fuck me if I'm wrong, but isn't your name Gretchen?

Pagina: 1