Toon posts:

[PHP] Compatibility prob tussen shop & betaalsyst.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een webshop gemaakt met een bepaalde database indeling. Bij het gebruikers gegevens gedeelte wordt hij zo ingedeeld:

Straatnaam + huisnummer = 1 cel

maar het betaalsysteem wat ik nu, achteraf dus, aan het implementeren ben wil het zo hebben:

Straatnaam = 1 cel
Huisnummer = 1 cel

aangezien al heel veel mensen zich hebben in geschreven is het geen optie om de database handmatig over te zetten. Split() e.d. is ook niet mogelijk want wanneer je hem laat splitten op spaties kom je in de knoop bij straatnamen met meerdere woorden. Wie weet hier een oplossing voor?

Verwijderd

splitten op de laatste spatie?

Welk betalingssysteem is dat trouwens?? Ik wer met BIBIT, maar die willen niet eens die gegevens hebben....

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Zet eerst je DB om maar laat het huisnummer nog gewoon bij de straatnaam staan en hou huisnummer leeg. Zorg dat alle nieuwe registraties wel goed in de DB komen. Zorg dat bij het afdrukken er geen problemen optreden bij het afdrukken van de straatnaam ed.

Vervolgens kun je simpel de verouderde records uit de DB vissen door te kijken waar huisnummer nog null is. Deze kun je dan om gaan zetten met wat voor manier dan ook.

Door deze aanpak te gebruiken hoef je de site niet offline te halen of een registratie stop instellen.

Het werkelijke omzetten zou je kunnen proberen te doen mbv een regexp. Maak het algoritme zo dat hij alleen omzet waneer deze zeker is dat het goed gaat en dat ie anders het record met rust laat. Hierdoor zullen er steeds minder records overblijven die nog volgens de verkeerde indeling zijn. Deze kun je dan eventueel nog handmatig aanpassen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Grum
  • Registratie: Juni 2001
  • Niet online
splitsen VOOR et laatste nummer zal bijna altijd wel goed gaan :)

Verwijderd

Topicstarter
Op vrijdag 21 juni 2002 17:48 schreef Grum het volgende:
splitsen VOOR et laatste nummer zal bijna altijd wel goed gaan :)
Ok, en hoe?

Wat ook kan: is eerst het aantal spaties tellen.
Maar ik denk niet dat dat mogelijk is met regexe's?

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
PHP:
1
<?$exp = explode(' ', $straat_huisnummer);$straat = "";$a = count($exp) - 1;for ($i=0; $i<$a; $i++){  $straat .= "$exp[$i] ";}$straat = trim($straat);$huisnummer = exp[$a];?>

zoiets?

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Grum
  • Registratie: Juni 2001
  • Niet online
:r SWINX

doe et dan zo:
code:
1
2
list($theNum) = array_splice(($tmp = explode(' ', $theString)), -1);
$theStreet    = implode(' ', $tmp);

  • p0m
  • Registratie: September 2000
  • Laatst online: 22-08 07:02

p0m

PHP:
1
<?if (preg_match('/^\s*(.*?)\s*([0-9]*)\s*$/si',$string,$matches)){    $straat = $matches[1];    $huisnr = $matches[2];}?>

matched altijd, maar toch een if statement voor de zekerheid :)
huisnummer mag leeg zijn, voor huisnummer bijvoegsels zou je de regexp moeten uitbreiden.

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op vrijdag 21 juni 2002 21:03 schreef Grum het volgende:
:r SWINX

doe et dan zo:
code:
1
2
list($theNum) = array_splice(($tmp = explode(' ', $theString)), -1);
$theStreet    = implode(' ', $tmp);
ehh.... mjah ziet er wel wat beter uit eigenlijk jah ;)

* SWINX had nog nooit van array_splice gehoord...

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Ik zou het idd ook met een regexje doen, want dacht niet dat er in straatnamen ook cijfers voorkwamen en zo kan je ook nog A, B en dergelijke uit het stukje text opslaan indien die er is en mischien zelfs appart opslaan ;)

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op zaterdag 22 juni 2002 08:24 schreef xtentic het volgende:
Ik zou het idd ook met een regexje doen, want dacht niet dat er in straatnamen ook cijfers voorkwamen en zo kan je ook nog A, B en dergelijke uit het stukje text opslaan indien die er is en mischien zelfs appart opslaan ;)
geen cijfers in straatnamen?

ik noem maar iets: 3e hoefsteeg

;)

[edit]
hmm... maakt voor de regex natuurlijk niks uit :z

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Op zaterdag 22 juni 2002 14:14 schreef SWINX het volgende:
geen cijfers in straatnamen?

ik noem maar iets: 3e hoefsteeg

;)

[edit]
hmm... maakt voor de regex natuurlijk niks uit :z
:D

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

$regexp = '/^([\S\s.\/]+?)\s*(([0-9]+)\s*-?\s*(.*))?$/si'; (preg_match())

that should work.
1 => straat, 3 -> huisnummer, 4-> extensie (a, -bis, 2 hoog et.)

Klaar voor een nieuwe uitdaging.


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op zaterdag 22 juni 2002 14:14 schreef SWINX het volgende:

[..]

geen cijfers in straatnamen?

ik noem maar iets: 3e hoefsteeg

;)

[edit]
hmm... maakt voor de regex natuurlijk niks uit :z
3e hoefsteeg is NIET een correcte straatnaam, dat moet 'derde hoefsteeg' zijn. Maar goed, tell that to the customer ;)

Klaar voor een nieuwe uitdaging.


  • dualspeed
  • Registratie: Januari 2000
  • Laatst online: 07-05 08:57
Hmm, ik ben postbode :p geweest, maar er bestaan bijvoorbeeld in het centrum van Rotterdam toch heel veel straten die wel met cijfers beginnen hoor chem:

-1e nieuwstraathof
-2e nieuwstraathof
-1e goudsewagenhof
-2e goudse...
-3e :)

goed zo kan ik nog wel 5 voorbeelden opnoemen, maar dat doe ik niet :). Bij al deze dingen staat er echt een cijfer op het bordje

  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
misschien zo?
PHP:
1
<?$matches = array();preg_match('/^(.*\D+)(\d+)(\D*)$/', $oudestraatnaamenhuisnummer, $matches);$nieuwestraatnaam = trim($matches[1]);$nieuwhuisnummer = trim($matches[2]);$nieuwhuisnummerachtervoegsel = trim($matches[3]);?>

getest; houdt rekening met:
1e lakmoesstraat 18c

edit: trim() toegevoegd

Pas de replâtrage, la structure est pourrie.


  • cobratbq
  • Registratie: Maart 2001
  • Laatst online: 17-12-2015
Anders maak je toch een backup van je database.
Vervolgens schrijf je in PHP een schript dattie heel je database opnieuw schrijft.
Een paar fouten verbeteren net zo lang totdat het werkt
en dan kun je in een keer je hele database omgooien ben je van heel het probleem af.
Is wel wat werk, maar moet in een daggie misschien 2 te doen zijn.
Mijn oplossing is niet de makkelijkste, maar het werkt wel.

One ring to rule them all, one ring to find them, one ring to bring them all, and in darkness bind them...


Verwijderd

Topicstarter
Op zondag 23 juni 2002 00:02 schreef cobratbq het volgende:
Anders maak je toch een backup van je database.
Vervolgens schrijf je in PHP een schript dattie heel je database opnieuw schrijft.
Een paar fouten verbeteren net zo lang totdat het werkt
en dan kun je in een keer je hele database omgooien ben je van heel het probleem af.
Is wel wat werk, maar moet in een daggie misschien 2 te doen zijn.
Mijn oplossing is niet de makkelijkste, maar het werkt wel.
Die van GRUM ook :)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op zaterdag 22 juni 2002 17:00 schreef dualspeed het volgende:
Hmm, ik ben postbode :p geweest, maar er bestaan bijvoorbeeld in het centrum van Rotterdam toch heel veel straten die wel met cijfers beginnen hoor chem:

-1e nieuwstraathof
-2e nieuwstraathof
-1e goudsewagenhof
-2e goudse...
-3e :)

goed zo kan ik nog wel 5 voorbeelden opnoemen, maar dat doe ik niet :). Bij al deze dingen staat er echt een cijfer op het bordje
he ja, je hebt gelijk :)

maar (!) het is zelden het geval, meestal is het voluit geschreven...

Klaar voor een nieuwe uitdaging.

Pagina: 1