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

Invoer meerdere formuliervelden in 1 database veld

Pagina: 1
Acties:

  • damen18
  • Registratie: Mei 2004
  • Laatst online: 21-11-2023
Hoi,

Ik weet niet hoe dit moet en heb er uiteraard naar gezocht, maar ik kom er niet uit.

Er is een php pagina met een formulier en die heeft 5 invoervelden. Naam, adres, postcode, plaats en land. Nu is het de bedoeling dat het in 1 veld in de mysql database komt. In het veld genaamd: cdadres.

Dan zou het er zo in moeten komen te staan: Shell rotterdamseweg 11 3023 ER ROTTERDAM Nederland

Hoe moet ik dit aanpakken?

Ik zit te denken aan:
Ik laat d.m.v. php een create_form_field aanmaken en die dezelfde waarde toekennen (in dit geval is het cdadres), zoiets als dit:
PHP:
1
2
3
4
5
6
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  echo create_form_field("cdadres", "Naam:", $myCheckout->ship_name, 30)."<br>";
  echo create_form_field("cdadres", "Adres:", $myCheckout->ship_address, 30)."<br>";
  echo create_form_field("cdadres", "Postcode:", $myCheckout->ship_pc, 8)."<br>";
  echo create_form_field("cdadres", "Plaats:", $myCheckout->ship_city, 20)."<br>";
  echo create_form_field("cdadres", "Country:", $myCheckout->ship_country, 30)."<br>";

<input type="submit" name="submit" value="Order now!">

Deze gegevens worden per veld uit de database gehaald en moeten er ook weer in, maar dan in 1 veld.

Is dit in de goede richting?

Alvast bedankt voor je reactie

[ Voor 5% gewijzigd door damen18 op 19-05-2008 14:18 ]


  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
Waarom wil je alles in 1 veld bewaren?

Het is veel makkelijker alle gegevens apart op te slaan en ze nadien, waar nodig, samen te voegen in je code.

Op die manier behoud je de mogelijkheid om op een eenvoudige manier te sorteren/filteren op bepaalde waarden.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Er is maar 1 goede oplossing: aparte velden, met het liefst ook adres opgesplitst in straat, huisnr en huisnrtoevoeging.

Áls je het per se in 1 veld aan elkaar wil plakken, moet je natuurlijk een gunstig scheidingsteken of structuur keizen, want dat een spatie problemen gaat geven moge toch wel vrij duidelijk zijn. Maar serieus, gebruik een mooi datamodel, als je voor een nieuwe applicatie alles in 1 veld gaat knikkeren ben je domweg stom bezig.

{signature}


  • damen18
  • Registratie: Mei 2004
  • Laatst online: 21-11-2023
Ja, ik ben het met je eens, maar ik ben een online bestelsysteem aan het maken voor het programma genaamd Multivers. Daar worden de adresgegevens in 1 veld gezet voor een order. Dus vandaar dat ik dat nu ook moet doen. Heb je een idee hoe ik dat het beste zou kunnen doen? Bedankt

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dan heb je pas bij een order 1 veld nodig, dus plak je het pas op dat moment aan elkaar...

{signature}


  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
damen18 schreef op maandag 19 mei 2008 @ 12:09:
Ja, ik ben het met je eens, maar ik ben een online bestelsysteem aan het maken voor het programma genaamd Multivers. Daar worden de adresgegevens in 1 veld gezet voor een order. Dus vandaar dat ik dat nu ook moet doen. Heb je een idee hoe ik dat het beste zou kunnen doen? Bedankt
Ok, maar waarom wil je die samenvoeging dan ook persé opslaan in je DB ?

Je beschikt toch altijd over de opgesplitste gegevens die je, wanneer nodig, toch maar gewoon moet samenvoegen?

Gegevens dubbel bewaren verhoogt alleen de kans op fouten.

[edit]
^^ wat voutloos zegt dus

[ Voor 2% gewijzigd door Blacksnak op 19-05-2008 12:14 . Reden: spuit 11 ]


  • Johnny
  • Registratie: December 2001
  • Laatst online: 11:54

Johnny

ondergewaardeerde internetguru

Als je de veldnamen de naam "cdadres[]" geeft dan maakt PHP er een array van nu ontvang je alleen de laatste waarde omdat deze elkaar overschrijven. Met behulp van de implode() functie kan je ze dan weer samenvoegen. Maar voordat je dat doet moet je waarschijnlijk ook nog bepaalde controles en tranformaties op het adres uitvoeren, bijvoorbeeld trim() om onnodige spatie ste verwijderen en strtoupper() voor de plaatsnaam. Daarnaast vraag ik me af hoe dit systeem omgaat met spaties in de bedrijfs-, plaats- of straatnaam aangezien deze hier als seperator worden gebruikt.

Wanneer je alle veldnamen dezelfde naam geeft werkt de autocomplete van de browser echter ook niet meer, je kan daarom beter simpele algemene engelstalige namen gebruiken voor de veldnamen.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • damen18
  • Registratie: Mei 2004
  • Laatst online: 21-11-2023
De gegevens die ik wil weergeven komen uit de tabel adres en als ik een order wil invoeren komt dat in de tabel factureeropdracht te staan. Dus eigenlijk worden ze geselecteerd uit de tabel adres en ingevoerd in factureeropdracht. Vanuit factuureeropdracht kun je die gegevens niet wijzigen.

Die gegevens uit de tabel adres staan wel apart opgeslagen, maar in de tabel factureeropdracht staan ze samengevoegd. En aangezien de orders in de tabel factureeropdracht komen te staan, zal ik ze daar ook neer moeten zetten.

Ik hoop dat dit een beetje duidelijk is.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07:40

Creepy

Tactical Espionage Splatterer

Eeh, je kan toch gewoon die losse velden aan elkaar plakken en wegschrijven in de database in je PHP script? Of op het moment dat de factuuropdracht gegenereerd wordt deze velden aan elkaar plakken zodat je ze niet in 1 veld hoeft op te slaan?

Lukt dat je niet? dan wordt het tijd voor een PHP tutorial. Of kan het om de 1 of andere reden niet? Zo ja, waarom niet? Wat heb je zelf dan geprobeerd? Wat lukt er niet mee? Kreeg je foutmeldingen?

"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


  • damen18
  • Registratie: Mei 2004
  • Laatst online: 21-11-2023
Ja, dat klopt.
Creepy schreef op maandag 19 mei 2008 @ 12:32:
Eeh, je kan toch gewoon die losse velden aan elkaar plakken en wegschrijven in de database in je PHP script? Of op het moment dat de factuuropdracht gegenereerd wordt deze velden aan elkaar plakken zodat je ze niet in 1 veld hoeft op te slaan?

Lukt dat je niet? dan wordt het tijd voor een PHP tutorial. Of kan het om de 1 of andere reden niet? Zo ja, waarom niet? Wat heb je zelf dan geprobeerd? Wat lukt er niet mee? Kreeg je foutmeldingen?
Wat bedoel je met aan elkaar plakken? Gewoon achter elkaar zetten? Dan zit je idd met die spaties die er dan niet zijn....

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18-11 08:25

Janoz

Moderator Devschuur®

!litemod

damen18 schreef op maandag 19 mei 2008 @ 12:48:
Ja, dat klopt.
[...]


Wat bedoel je met aan elkaar plakken? Gewoon achter elkaar zetten? Dan zit je idd met die spaties die er dan niet zijn....
Tja, dan zet je die er tussen...


Echter, gezien je stukje voorbeeld code gebruik je 1 of ander framework die automatisch je formulier velden genereert en vast ook iets automatisch doet met database opslag. Echter, zonder dat duidelijk is welk framework dit is en hoe dit exact werkt is er voor anderen helemaal niks zinnigs over te zeggen, behalve dan dat je database model ruk is.

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


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Pak die PHP tutorial maar. :>

Variabelen aan elkaar plakken, of van een array een string maken middels implode() behoort toch echt tot de basics die je in de eerste paar minuten PHP tutorial kan leren.
Iedereen kan een paar variabelen al dan niet met spaties aan elkaar plakken, dat kan ik mijn overgrootoma ook nog wel leren. Als je maar begrijpt dat de omgekeerde actie in dit geval minder triviaal is.

{signature}


  • damen18
  • Registratie: Mei 2004
  • Laatst online: 21-11-2023
Janoz schreef op maandag 19 mei 2008 @ 12:52:
[...]

Tja, dan zet je die er tussen...


Echter, gezien je stukje voorbeeld code gebruik je 1 of ander framework die automatisch je formulier velden genereert en vast ook iets automatisch doet met database opslag. Echter, zonder dat duidelijk is welk framework dit is en hoe dit exact werkt is er voor anderen helemaal niks zinnigs over te zeggen, behalve dan dat je database model ruk is.
Het is geen framework. Het is een functie die inputvelden aanmaakt, hoef je niet die code opnieuw te schrijven. En het is trouwens niet mijn datamodel, Multivers is een boekhoudprogramma die door redelijk wat bedrijven gebruikt wordt....

  • damen18
  • Registratie: Mei 2004
  • Laatst online: 21-11-2023
Voutloos schreef op maandag 19 mei 2008 @ 12:57:
Pak die PHP tutorial maar. :>

Variabelen aan elkaar plakken, of van een array een string maken middels implode() behoort toch echt tot de basics die je in de eerste paar minuten PHP tutorial kan leren.
Iedereen kan een paar variabelen al dan niet met spaties aan elkaar plakken, dat kan ik mijn overgrootoma ook nog wel leren. Als je maar begrijpt dat de omgekeerde actie in dit geval minder triviaal is.
Dat gaat ook wel....ik vroeg alleen om een richting. Jullie hoeven het niet voor te doen.

Bedankt voor jullie reacties

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18-11 08:25

Janoz

Moderator Devschuur®

!litemod

damen18 schreef op maandag 19 mei 2008 @ 13:40:
[...]


Het is geen framework. Het is een functie die inputvelden aanmaakt, hoef je niet die code opnieuw te schrijven.
Dan is die code dus helemaal niet relevant omdat het niet het stuk code is dat het resultaat van het formulier naar de database stuurt.
En het is trouwens niet mijn datamodel, Multivers is een boekhoudprogramma die door redelijk wat bedrijven gebruikt wordt....
Dan heeft Multivers een ruk datamodel, of jij gebruikt het verkeerd.

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


  • Mythix
  • Registratie: Oktober 2004
  • Laatst online: 17-11 15:04

Mythix

www.ctrl-f5.net

je zou ook alles in een class of array kunnen opslaan en deze in 1 veld opslaan dmv serialize();

Whenever you find yourself on the side of the majority, it is time to pause and reflect


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
^ Aldus het woord 'structuur' in mijn 1e post. Maar dan nog gaat Janoz' opmerking op:
Janoz schreef op maandag 19 mei 2008 @ 14:01:
Dan heeft Multivers een ruk datamodel, of jij gebruikt het verkeerd.

{signature}

Pagina: 1