hoe add ik genummerde columns?
Ik heb een mysql tafel met de volgende structuur:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
invoer1onderdeel1
invoer1onderdeel1eigenschap1
invoer1onderdeel1aspect1
invoer1onderdeel1aspect1eigenschap1
invoer2onderdeel1
invoer2onderdeel1eigenschap1
invoer2onderdeel1aspect1
invoer2onderdeel1aspect1eigenschap1
..
etc
invoer1onderdeel1eigenschap1
invoer1onderdeel1aspect1
invoer1onderdeel1aspect1eigenschap1
invoer2onderdeel1
invoer2onderdeel1eigenschap1
invoer2onderdeel1aspect1
invoer2onderdeel1aspect1eigenschap1
..
etc
Dit is bedoeld als digitaal formulier dat moet worden ingevuld, en in dat formulier zitten plusjes voor het toevoegen van optionele extra gegevens.
Code (php)
1
2
3
4
5
2
3
4
5
+ Wilt u nog een invoer1onderdeel opgeven?
+ wilt u nog een invoer1onderdeel1aspect opgeven?
..
etc
+ wilt u nog een invoer1onderdeel1aspect opgeven?
..
etc
Een entry toevoegen weet ik,
Code (php)
1
ALTER TABLE `tafel1` ADD `invoer1onderdeel1aspect2` VARCHAR( 21 ) NOT NULL AFTER `invoer1onderdeel1aspect1eigenschap1`
maar wat ik nodig heb is dat als iemand bijvoorbeeld een volgend invoer1onderdeel wil toevoegen,
dat het script dan eerst kijkt welk onderdeelnummer er achter moet (bestaat onderdeel10 bv al of is 1 de laatste?)
en daarna waar het achter moet:
invoer1onderdeel1aspect1eigenschap1 (is dit de laatste eigenschap of is er mischien een eigenschap20?)
en vervolgens toe voegt wat nodig is
voeg toe:
Code (php)
1
2
3
4
2
3
4
invoer1onderdeel2
invoer1onderdeel2eigenschap1
invoer1onderdeel2aspect1
invoer1onderdeel2aspect1eigenschap1
invoer1onderdeel2eigenschap1
invoer1onderdeel2aspect1
invoer1onderdeel2aspect1eigenschap1
(zit er trouwens een maximum aan het aantal columns dat in ee tafel kan zitten? via een createtable script kan ik maximaal 40 columns adden, via phpmyadmin meer (op het moment zon 230), de bedoeling is dat het uiteindelijk toch minstens 5000 worden.))
Verdiep je eens in database-normalisatie.
Je moet database, tabellen, kolommen en velden nooit afhnkelijk maken van een aantal ervan.
Wat je nu hebt kan de vuilnisbak in.
Gewijzigd op 21/02/2012 20:38:03 door - Ariën -
- Aar - op 21/02/2012 20:37:17:
Dit ziet er heel slecht uit.
Verdiep je eens in database-normalisatie.
Je moet database, tabellen, kolommen en velden nooit afhnkelijk maken van een aantal ervan.
Wat je nu hebt kan de vuilnisbak in.
Verdiep je eens in database-normalisatie.
Je moet database, tabellen, kolommen en velden nooit afhnkelijk maken van een aantal ervan.
Wat je nu hebt kan de vuilnisbak in.
Niet horizontaal, maar verticaal denken... :p
en als iemand daar nog een eigenschap bij weet te verziennen moet hij daar dus
fruit1eigenschap2 = zoetzuur
of
fruit1eigenschap3 = vitaminerijk
oid aan toe kunnen voegen.
om nu per mogelijke fruitsoort een nieuwe tafel aan te maken en vervolgens bij de volgende vraag:
groente1 ..
hetzelfde met alle groentjes
etc te doen lijkt mij niet practisch.
De pagina waar ik mee bezig ben is een demo pagina die mocht deze aanslaan, door echte webpagedesigners word overgeschreven. Als zodanig kan ik mij slordige of niet reguliere werkwijzes veroorloven.
Is het uberhaubt mogelijk om een script die nummers te laten identificeren en ze correct aan te vullen?
en iedere vraag heeft ten minste 2 subvragen
iedere subvraag heeft een onbeperkt aantal antwoorden.
Toevoeging op 21/02/2012 21:45:18:
dat zijn dan dus minstens 240 x $query = "INSERT INTO tafelx VALUES ('',..
per keer dat iemand zon formulier invult.
maaruh.. even los van wat hoort of netjes is.
Kan het?
Toevoeging op 21/02/2012 21:54:09:
ik limiteer het wel tot max 10 en doe het lekker met de hand .
Gefixed :D
tnx ieders:D
Gewijzigd op 21/02/2012 21:45:51 door koos jansen
Gewijzigd op 21/02/2012 21:56:54 door Wouter J
onderwerp1eigenschap1
onderwerp1eigenschap2
onderwerp1eigenschap3
..
een eigen tabel te geven.
tabel onderwerp1
id 1 = eigenschap1
id 2 = eigenschap2 etc
om op die manier onbeperkt te kunnen uitbreiden.
het probleem is echter dat ook dat weer moet kunnen expanden
onderwerp1eigenschap1deeleigenschap1
onderwerp1eigenschap1deeleigenschap2
onderwerp1eigenschap1deeleigenschap3
..
etc
dus dan moet niet onderwerp een tabel zijn,
maar onderwerp1eigenschap1 moet dan een tabel zijn met
id 1 = onderwerp1eigenschap1deeleigenschap1
id 2 = onderwerp1eigenschap1deeleigenschap2
etc
dat zijn dus extreem veel tabellen.
en die worden allemaal aangesproken bij het toevoegen of benaderen van de info.
tevens is niet uitgesloten dat uiteindelijk bepaalde deeleigenschappen, ook weer deeleigenschappen toegewezen gaan krijgen, en dat dit pas veel later bepaald wordt.
maargoed, volgens mij kan ik het beste dus maar alles 10 deeleigenschappen toekennen en hopen dat men niet te snel tegen dat plafond op botst;p
Toevoeging op 21/02/2012 22:18:46:
Bovendien blijft ook dan de originele vraag, zei het in iets andere vorm, bestaan.
Als tabel onderwerp1 - onderwerp10 bestaat, en iemand wil een nieuw onderwerp toevoegen,
hoe laat ik het script dan herkennen dat er 10 onderwerpen bestaan en er een nieuwe tabel moet worden aangemaakt met alle benodigde onderdelen en met de naam onderwerp11.
Toevoeging op 21/02/2012 22:21:12:
(gegeven het feit dat tabellen niet gelimiteerd zijn tot slechts onderwerpx, maar ook onderwerpxeigenschapx of onderwerpxeigenschapxdeeleigenschapxdeeleigenschapx kunnen zijn, en dat mocht er een commando bestaan voor het tellen van tabellen in een database, dit dus niet toereikend is, tenzij alle tabelsoorten dus ook een eigen database krijgen...)
Toevoeging op 21/02/2012 22:22:55:
(maargoed.. lekker statisch dus.. wel net zo makkelijk, en ter demonstratie, vast toereikend ;P)
je hebt slechts enkele tabellen nodig, afhankelijk hoe diep je wilt gaan. Laten we zeggen drie niveau's diep is drie tabellen. Het toverwoord is dus echt normaliseren en je krijgt een goed en snel werkend datamodel. Kennelijk heb je niet het inzicht om jouw informatiebehoefte te vertalen naar een gegevensverzameling en die om te zetten in een genormaliseerd datamodel. Je denkwijze klopt niet, je snapt gegevensanalyse niet. Er valt nog wel wat te leren maar het hoeft natuurlijk niet. Je kan ook alles achter elkaar op 1 regel zetten en scheiden met diverse scheidingstekens en lekker programmeren tot je door de bomen het bos niet meer ziet.
Ik lees de link van SanThe morgen aandachtig even door.
Koos jansen op 21/02/2012 22:10:24:
om op die manier onbeperkt te kunnen uitbreiden.
het probleem is echter dat ook dat weer moet kunnen expanden
onderwerp1eigenschap1deeleigenschap1
onderwerp1eigenschap1deeleigenschap2
onderwerp1eigenschap1deeleigenschap3
..
etc
dus dan moet niet onderwerp een tabel zijn,
maar onderwerp1eigenschap1 moet dan een tabel zijn met
id 1 = onderwerp1eigenschap1deeleigenschap1
id 2 = onderwerp1eigenschap1deeleigenschap2
etc
dat zijn dus extreem veel tabellen.
en die worden allemaal aangesproken bij het toevoegen of benaderen van de info.
het probleem is echter dat ook dat weer moet kunnen expanden
onderwerp1eigenschap1deeleigenschap1
onderwerp1eigenschap1deeleigenschap2
onderwerp1eigenschap1deeleigenschap3
..
etc
dus dan moet niet onderwerp een tabel zijn,
maar onderwerp1eigenschap1 moet dan een tabel zijn met
id 1 = onderwerp1eigenschap1deeleigenschap1
id 2 = onderwerp1eigenschap1deeleigenschap2
etc
dat zijn dus extreem veel tabellen.
en die worden allemaal aangesproken bij het toevoegen of benaderen van de info.
maar heb jij dan niet nu extreem veel velden in je database? Velden die overigens het meeste van de tijd leeg zullen blijven denk ik?
Voor mij heb je hiermee aangegeven waarom je absoluut naar normalisatie moet kijken.
Inmiddels heb ik grotendeels geinventariseerd welke informatie in de database moet worden opgenomen en heb het volgens de tutorial genormaliseerd. (maar hij zal sowieso in functionaliteit en dus entries groeien)
Dan kom ik in plaats van op 540 entries uit op 137 tables waarvan er 41 betrokken zijn bij het hoofdinvulformulier(=hoofdfunctionaliteit pagina), en 5 bij het hoofdscherm voor het uitlezen van een beknopt overzicht van de info.
Ik blijf het vreemd vinden dat 41 x een table openen te prevereren is boven 1 x een table van 5000 entries.
maar het is iig weer overzichterlijk :P
(nu uitzoeken hoe ik dit allemaal in een pagina verwerk ;P)
Toevoeging op 23/02/2012 21:55:41:
Bovendien is het de bedoeling dat de pagina vrij druk bezocht gaat worden, en 100 formulierverzendingen per queue is iets waar ik ten minste rekening mee moet houden, dat is dan 4.100 tables die geopend worden in plaats van 100, en als daarbij ook nog 400 mensen het overzicht openen, 2.000 tables = 6.100 tables openen ipv 500.
Toevoeging op 23/02/2012 21:57:05:
.. daar gaat zo'n server toch niet blij mee zijn ;P
Toevoeging op 24/02/2012 08:41:03:
ik blijk toch nog het eea over het hoofd te hebben gezien en al ben ik nog redelijk wat monnikkenwerk verwijderd van een eindconclusie, het lijkt nu heel wat minder tables te worden :D
Gewijzigd op 23/02/2012 21:59:25 door koos jansen
het zijn er een stuk minder, maar naar mijn idee nog steeds een boel.
Iemand misschien een tip voor info over hoe je dit weer uitleest?
In het meest extreme geval gebruikt 1 entry 9 table indexen.
Laat je structuur eens zien die je nu hebt?
Daarnaast is het op dit moment een 28 Kb txtfile en dus ook niet erg forumvriendelijk. Ik zal enkele gerenamede onderdelen posten, daaruit blijkt hopelijk wel of ik al dan niet nu wel de juiste structuur hanteer.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
-lid-index
naam
email
adres
postcode
plaats
-lid-index
-a-index
n
r
f
j
-lid-index
-a-index
-b-index
n
r
j
-lid-index
-a-index
-b-index
-x-index
n
r
j
-lid-index
-a-index
-r-index
n
j
f
-lid-index
-a-index
-r-index
-y-index
n
r
j
f
-lid-index
-a-index
-r-index
-b-index
n
r
j
-lid-index
-a-index
-r-index
-b-index
-x-index
n
r
j
-lid-index
-a-index
-z-index
n
r
f
j
-lid-index
-a-index
-z-index
-b-index
n
r
j
-lid-index
-a-index
-z-index
-x-index
n
r
j
-lid-index
-a-index
-z-index
-r-index
n
j
f
naam
adres
postcode
plaats
-lid-index
-a-index
n
r
f
j
-lid-index
-a-index
-b-index
n
r
j
-lid-index
-a-index
-b-index
-x-index
n
r
j
-lid-index
-a-index
-r-index
n
j
f
-lid-index
-a-index
-r-index
-y-index
n
r
j
f
-lid-index
-a-index
-r-index
-b-index
n
r
j
-lid-index
-a-index
-r-index
-b-index
-x-index
n
r
j
-lid-index
-a-index
-z-index
n
r
f
j
-lid-index
-a-index
-z-index
-b-index
n
r
j
-lid-index
-a-index
-z-index
-x-index
n
r
j
-lid-index
-a-index
-z-index
-r-index
n
j
f
Gewijzigd op 25/02/2012 19:59:23 door koos jansen
Als ik bijvoorbeeld deze 'n' zou willen uitlezen:
en als ik de 'n' wil wegschrijven?