<--- http://www.lansensations.nl --->
http://nl.php.net/manual/en/function.sprintf.php en dan het gedeelte over zero padded ints
Maar waarom sla je getallen in dit formaat op? het is niet echt een logisch formaat voor integers.
Programmer - an organism that turns coffee into software.
En ik zal eens kijken wat ik allemaal kan met die pagina
<--- http://www.lansensations.nl --->
"The shell stopped unexpectedly and Explorer.exe was restarted."
Dat is inderdaad wel een goed idee, zoiets had ik voor de hoofdcategorie wel maar had geen idee hoe ik het zou moeten doen met de sub categorieen.Kaassoevlee schreef op dinsdag 11 januari 2005 @ 12:06:
Voor het optellen opslaan hoelang de string is, vervolgens optellen en dan nullen toevoegen totdat je weer de oude lengte hebt.
Allebei in iedergeval bedankt voor de hulp
<--- http://www.lansensations.nl --->
Maar als ik jou was zou ik even kijken naar binaire operators, stukje nuttiger. Sla je gewoon de integer 19 op, dit staat dan voor 10011. MyQL kent gewoon binary operators, dus je kunt dingen als 19 & 13 doen. Dit is dan 10011 & 01101 = 00001 = 1.
Best makkelijk. (Gebruik het zelf ook af en toe, verwerking ervan vindt ik toch net wat handiger als de ingebouwde sets van MySQL.)
Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info
1
2
| $number = 1; printf("%03d", $number); |
op.
1 word dus 001.
Je moet alleen het aantal getallen (nu drie) veranderen, want bij 1003 moeten het er dus 6 zijn (001003). Dat kan je vast wel met strlen() doen
Hmm sorry dat ik zeg, maar mijn nekharen gaan een beetje rechtopstaan als ik zo iets hoor....devilbird schreef op dinsdag 11 januari 2005 @ 12:05:
Dat is omdat ik werk met nivo's in mijn categorien. Voor elke level dieper komen er 3 getallen achter. Dus eerst heb je 001 een categorie daaronder is dan 001001 en een categorie daar weer onder wordt 001001001 enz.
En ik zal eens kijken wat ik allemaal kan met die pagina
Misschien een leuk stukje lezen over normalisatie van databases?
http://www.sum-it.nl/cursus/dbdesign/hollands/logis010.php3 deze is wel leuk om je op weg te helpen.
Programmer - an organism that turns coffee into software.
Is inderdaad wel een makkelijke manier om de nullen er weer voor te zetten.Zoefff schreef op dinsdag 11 januari 2005 @ 12:39:
Een google op http://www.google.nl/sear...hp&btnG=Google+zoeken&lr= levert mij
PHP:
1 2 $number = 1; printf("%03d", $number);
op.
1 word dus 001.
Je moet alleen het aantal getallen (nu drie) veranderen, want bij 1003 moeten het er dus 6 zijn (001003). Dat kan je vast wel met strlen() doen
<--- http://www.lansensations.nl --->
Ik zou zeggen geef zelf eens een voorbeeld om een boomstuctuur te maken met 1 tabel waarin je een onbekend aantal dieptes wil maken.LuCarD schreef op dinsdag 11 januari 2005 @ 13:03:
[...]
Hmm sorry dat ik zeg, maar mijn nekharen gaan een beetje rechtopstaan als ik zo iets hoor....
Misschien een leuk stukje lezen over normalisatie van databases?
http://www.sum-it.nl/cursus/dbdesign/hollands/logis010.php3 deze is wel leuk om je op weg te helpen.
Ik ben nog maar een beginner met php dus info is altijd welkom. Maar voor zover ik nu weet is dit de makkelijkste manier.
<--- http://www.lansensations.nl --->
Ik zou zeggen: gebruik de search eens. Er zijn al behoorlijk wat topics voorbij gekomen om een boomstructuur in PHP weer te geven i.c.m. de opslag daarvan in een DB.devilbird schreef op dinsdag 11 januari 2005 @ 13:12:
[...]
Ik zou zeggen geef zelf eens een voorbeeld om een boomstuctuur te maken met 1 tabel waarin je een onbekend aantal dieptes wil maken.
Ik ben nog maar een beginner met php dus info is altijd welkom. Maar voor zover ik nu weet is dit de makkelijkste manier.
Daarnaast als je je ID als een string opslaat dan blijven ook je voorloop nullen behouden. Met de tips die je nu hebt gekregen moet dat ook wel lukken. Overigens raad ik je dit af
[ Voor 16% gewijzigd door Creepy op 11-01-2005 13:23 ]
"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
Twee tabellen maken.devilbird schreef op dinsdag 11 januari 2005 @ 13:12:
[...]
Ik zou zeggen geef zelf eens een voorbeeld om een boomstuctuur te maken met 1 tabel waarin je een onbekend aantal dieptes wil maken.
Ik ben nog maar een beginner met php dus info is altijd welkom. Maar voor zover ik nu weet is dit de makkelijkste manier.
1
2
3
4
5
6
7
8
9
| Table Tree treeid ItemId ParentTreeId Table Items ItemId naam etc |
Werkt perfect.
Indien ParentTreeId de waarde 0 heeft, is het bijbehorende ItemId een stamitem. Bij deze methode kun je een veel diepere boom maken. Jij loopt al relatief snel aan tegen de maximale grootte van je veld.
Voordeel van deze methode is dat je een item op meerdere plaatsen in de boom kunt gebruiken, zonder het item opnieuw aan te maken.
edit= Je opmerking over 1 tabel heb ik buiten beschouwing gelaten. Ik zie niet in waarom je je zou beperken.
[ Voor 15% gewijzigd door sopsop op 11-01-2005 13:36 ]
Het kan inderdaad zoals boppert zegt, maar ik denk dat het ook prima in 1 tabel kan:devilbird schreef op dinsdag 11 januari 2005 @ 13:12:
Ik zou zeggen geef zelf eens een voorbeeld om een boomstuctuur te maken met 1 tabel waarin je een onbekend aantal dieptes wil maken.
Ik ben nog maar een beginner met php dus info is altijd welkom. Maar voor zover ik nu weet is dit de makkelijkste manier.
1
2
3
4
5
6
| CREATE TABLE `category` ( `id` smallint(6) NOT NULL auto_increment, `name` varchar(100) NOT NULL default '', `parent_id` smallint(6) NOT NULL default '0', PRIMARY KEY (`id`) ) |
Dit kan je dus oneindig diep maken. Met een recursieve functie kan je de hele bende weer uitlezen, bijvoorbeeld:
1
2
3
4
5
| function listCategories($parent_id=0) { if (hasChildren($current_category_id)) { listCategories($current_category_id) } } |
Ik denk dat dit het idee wel aardig illustreert?
(note: dit zijn versimpelde stukjes code uit m'n eigen systeem om het principe duidelijk te maken)
Dat lijkt me relatief simpel eigenlijk?devilbird schreef op dinsdag 11 januari 2005 @ 13:12:
[...]
Ik zou zeggen geef zelf eens een voorbeeld om een boomstuctuur te maken met 1 tabel waarin je een onbekend aantal dieptes wil maken.
Ik ben nog maar een beginner met php dus info is altijd welkom. Maar voor zover ik nu weet is dit de makkelijkste manier.
Geef gewoon ieder item een uniek itemID mee, en een parentID.
1
2
3
4
5
6
7
8
9
10
| ID 1 ParentID 0
ID 2 ParentID 1
ID 3 ParentID 1
ID 4 ParentID 3
ID 5 ParentID 1
ID 6 ParentID 1
ID 7 ParentID 6
ID 8 ParentID 7
ID 9 ParentID 0
ID 10 ParentID 9 |
Zo kan je imho oneindig doorgaan toch? En ook zo diep als je maar zelf wilt
En zelfs met 1 table
Reactie @ boppert: Het hoefde niet speciaal in 1 tabel aangezien ik de server volledig onder controle heb
Maar ik ga nu maar eens kijken wat ik het makkelijkst vind om uit te voeren. In iedergeval bedankt voor alle verhelderende uitleg allemaal
<--- http://www.lansensations.nl --->
Zoek is rond op sql & nested sets http://www.dbazine.com/tropashko4.shtml
Relationele databases zijn niet echt bedoeld om dit soort structuren op te slaan, om dit probleem alsnog een beetje netjes te tackelen is het principe van nested sets uitgewerkt.
Wanneer je met mysql werkt, is het handig om te zoeken op mysql: nested sets
De meest flexibele methode is gebruik maken van 2 tabellen, de eerste tabel worden alle items in vermeld en de 2de tabel daar word de nested set in opgeslagen. Suc6 hiermee
Pascal