Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[PHP/MySQL] Vcard opslaan in DB, hoe ?

Pagina: 1
Acties:
  • 371 views

Verwijderd

Topicstarter
Ik ben geïntrigeerd door Vcards en aangezien ik altijd graag dingen doe met PHP en MySQL wil ik Vcards kunnen importeren en kunnen exporteren maar ook kunnen bewerken in mijn database.

Nu komt hier direct naar voren dat je je tabel voor je vcard, of je gebruiker dus optimaal in moet delen.

In veel projecten zie ik dat een Vcard opgeslagen wordt zoals deze ook eigenlijk opgeslagen behoord te worden, dus:

code:
1
2
3
4
5
6
7
8
9
10
11
BEGIN:VCARD
N:Barnes;Julie
FN:Julie Barnes
CATEGORIES:Business
ADR:;Suite 520;177 Bovet Road;San Mateo;CA;94402
TEL;WORK:650-573-3215
TEL;FAX:650-573-3244
EMAIL;INTERNET:jbarnes@virage.com
TITLE:Business Development Manager
ORG:Virage, Inc.
END:VCARD


Dit is een voorbeeld uit een textfile, waarbij het voordeel is dat je je database niet hoeft te ontwerpen op het aantal velden maar je al je vcard velden gewoon textbased (XML-based eigenlijk) in een textfield dumpt. Veel projecten welke met Vcards werken schijnen dit toch wel te gebruiken.

So far, so good en best een logische gedachte, zeker voor het syncen van je mobiel.

Maar nu, ik heb deze Vcards niet onder elkaar in een bestand staan maar per record in een Database. Hier wordt het lastig aangezien ik wel de lines per Vcard wil kunnen aanpassen als dat nodig is.

De vraag is hoe je dit het beste kan doen en of dit een denkbare mogelijkheid is. Ik zie het niet zitten op per Vcard een id aan te maken en per line een record. Dit zou de boel wel vergemakkelijken alleen stap je van een standaard af welke mij goed lijkt om te blijven gebruiken.

Mijn vraag is dus, hoe zouden jullie deze Vcard opslaan, en als jullie dit in een textfield zouden doen zoals hierboven aangegeven, hoe zouden jullie de data per line in een simpel PHP form aan willen passen ?

Per line moet er wel een formfield zijn, dus gewoon querien en je textfield aanpassen in een grote textfield is geen optie helaas.

  • Saven
  • Registratie: December 2006
  • Laatst online: 10:08

Saven

Administrator

exploden op newlines denk ik toch, en anders toch aparte velden in je DB

Verwijderd

Topicstarter
Saven schreef op zaterdag 01 januari 2011 @ 22:32:
exploden op newlines denk ik toch, en anders toch aparte velden in je DB
Dat exploden vind ik een beetje dirty maar ik denk dat ik er ook aan vast zit... Vandaar dat ik het vraag!

Daarbij komt dat je met het exploden wel veel felxibeler bent, alleen je hebt weer een lap text in een blob of textfield.

[ Voor 17% gewijzigd door Verwijderd op 01-01-2011 23:01 ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 28-11 20:13

Boss

+1 Overgewaardeerd

Je kan ook key/value pairs opslaan in je database. Dan ben je flexibeler in de velden die je moet aanmaken. Alleen wordt het querien op je DB wat lastiger.
Hier zijn de diverse NoSQL db's natuurlijk erg geschikt voor.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Er is een PEAR class om een vCard in te lezen.

http://pear.php.net/package/File_IMC

Programmer - an organism that turns coffee into software.


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 12:11

MueR

Admin Devschuur® & Discord

is niet lief

Dit mag gewoon in Programming

Anyone who gets in between me and my morning coffee should be insecure.


  • kokx
  • Registratie: Augustus 2006
  • Laatst online: 18-11 12:58

kokx

WIN

Dit lijkt mij typisch iets waarvoor je een NoSQL DB als CouchDB goed voor kan gebruiken. Ipv records met bepaalde velden, sla je dan de data op in een document. Zo kun je dus netjes de vCard parsen (wat best goed kan met het PEAR component File_IMC), en deze in een document plaatsen. Anders krijg je al heel snel dat je meerdere tabellen nodig gaat hebben om met alle vCards overweg te kunnen.

Ook zijn vCards best gemakkelijk te parsen anyways. Tenzij je dus echt wilt SELECT-en op data in de vCard, kun je ze net zo goed als text opslaan.

Verwijderd

LDAP is dan ook meer geschikt voor dit soort gegevens dan een relationele database.
Verwijderd schreef op zaterdag 01 januari 2011 @ 22:26:
Per line moet er wel een formfield zijn, dus gewoon querien en je textfield aanpassen in een grote textfield is geen optie helaas.
Wie laat dan ook de invoerelementen direct afhangen van het formaat waarin of de manier waarop iets wordt opgeslagen in de database? Voor een geboortedatum heb je toch ook 3 invoervelden (dag, maand en jaar) terwijl het maar een veld is in een database?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:55

Creepy

Tactical Espionage Splatterer

Zo'n vcard is nu een prima schoolopdracht om te normaliseren. Dus als je het in een RDBMS wilt opslaan, ga eens normaliseren en kijk eens waar je opt uit komt. Je moet ook niet het geheel in 1 textveld opslaan. Pas als je het als vcard nodig hebt genereer je de vcard aan de hand van de database. Echt heel moeilijk is dat nu ook weer niet. Ga gewoon eens aan de slag, let op de normalisatie regels en dan moet je het zelf prima kunnen uitvogelen. De vcard parsen is ook vrij simpel.

[ Voor 3% gewijzigd door Creepy op 02-01-2011 16:15 ]

"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.