abonnement Unibet Coolblue
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 17:19:44 #1
1972 Swetsenegger
Egocentrische Narcist
pi_107796650


Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt :)

Zie ook:
PHP Dataverwerking
Officiële PHP website
PHP Documentatie
MySQL Reference Manual
Yet Another PHP Faq
PHP Cheat Sheet
PHP5 Power Programming - boek met uitleg over OOP, Pear, XML, etc

Tutorials:
W3Schools PHP
W3Schools SQL
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 21:19:20 #2
1972 Swetsenegger
Egocentrische Narcist
pi_107806276
Ik heb wel een leuk vraagstuk. Voor een website heb ik verschillende categorieën voor producten:

tassen, business, travel, kids, accessoires, overige

Maar omdat producten onder verschillende categorieën kunnen voorkomen (bv onder tassen en business of onder travel en accessoires, of tassen, travel en accessoires, etc) heb ik een rekenkundig truukje verzonnen om de meuk in 1 integer in de db op te slaan

1
2
3
4
5
6
1=tassen
2=business
4=travel
8=kids
16=accessoires
32=overige

En op die manier kan je elke mogelijke combinatie eenvoudig in de database opslaan door de waarden simpelweg op te tellen, bv:

1
2
3
4
3 = tassen + business
48= accessoires + overige
33= tassen + overige
28= travel + kids + accessoires

Volledige lijstje:

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
1=tassen
2=business
3=tassen + business
4=travel
5=tassen+travel
6=business+travel
7=tassen +business+travel
8=kids
9=tassen+kids
10=business+kids
11=tassen+business+kids
12=travel+kids
13=tassen+travel+kids
14=business+travel+kids
15=tassen+business+travel+kids
16=accessoires
17=tassen+accessoires
18=bussines+accessoires
19=tassen+business+accessoires
20=travel+accessoires
21=tassen+travel+accessoires
22=business+travel+accessoires
23=tassen+business+travel+accessoires
24=kids+accessoires
25=tassen+kids+accessoires
26=business+kids+accessoires
27=tassen+business+kids+accessoires
28=travel+kids+accessoires
29=tassen+travel+kids+accessoires
30=business+travel+kids+accessoires
31= tassen+business+travel+kids+accessoires
32=overige
33=tassen+overige
34=business+overige
35=tassen+business+overige
36=travel+overige
37=tassen+travel+overige
38=business+travel+overige
39=tassen+business+travel+overige
40=kids+overige
41=tassen+kids+overige
42=business+kids+overige
43=tassen+business+kids+overige
44=travel+kids+overige
45=tassen+travel+kids+overige
46=business+travel+kids+overige
47=tassen+business+travel+kids+overige
48=accessoires+overige
49=tassen+accessoires+overige
50=business+accessoires+overige
51=tassen+business+accessoires+overige
52=travel+accessoires+overige
53=tassen+travel+accessoires+overige
54=business+travel+accessoires+overige
55=tassen+business+travel+accessoires+overige
56=kids+accessoires+overige
57=tassen+kids+accessoires+overige
58=business+kids+accessoires+overige
59=tassen+business+kids+accessoires+overige
60=travel+kids+accessoires+overige
61=tassen+travel+kids+accessoires+overige
62=business+travel+kids+accessoires+overige
63=tassen+business+travel+kids+accessoires+overige

Naar de database schrijven doe ik dmv aangevinkte checkboxen met de waarden 1,2,4,8,16,32 simpelweg bij elkaar op te tellen.
Uit de database trekken dmv een simpele switch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
switch($page){
            case 
"tassen":
                
$category="1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63";
                break;
            case 
"business":
                
$category="2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31,34,35,38,39,42,43,46,47,50,51,54,55,58,59,62,63";
                break;
            case 
"travel":
                
$category="4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31,36,37,38,39,44,45,46,47,52,53,54,55,60,61,62,63";
                break;
            case 
"kids":
                
$category="8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31,40,41,42,43,44,45,46,47,56,57,58,59,60,61,62,63";
                break;
            case 
"accessoires":
                
$category="16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63";
                break;
            case 
"overige":
                
$category="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";
                break;
            }
?>

So far so good... Máár... Ik moet de invoer ook kunnen editten. Dus aan de hand van bv "56" moet ik de juiste checkboxen in de edit mode weer "pre-checken' zodat de beheerder weet welke categorieen hij in eerste instantie geselecteerd had.

Nu kan ik natuurlijk voor alle 63 mogelijkheden een switch schrijven:

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
<?php
switch ($row['category']){

case 
"1":
$array=array(1);
break;

case
"2":
$array=array(2);
break;

case
"3":
$array=array(1,2);
break;

case
"4":
$array=array(4);
break;

case
"5":
$array=array(2,3);
break;

case
"6":
$array=array(2,4);
break;

case
"7":
$array=array(1,2,4);
break;

case
"8":
$array=array(8);
break;

}
?>
etc, etc
Maar dat lijkt me wat omslachtig :')
Iemand een handiger idee?
  donderdag 9 februari 2012 @ 21:20:51 #3
84244 Scorpie
Abject en infaam!
pi_107806371
Ja, gebruik een koppeltabel.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 21:23:29 #4
1972 Swetsenegger
Egocentrische Narcist
pi_107806548
quote:
14s.gif Op donderdag 9 februari 2012 21:20 schreef Scorpie het volgende:
Ja, gebruik een koppeltabel.
Mjah nonsens, je kan overal wel een koppeltabel voor aan gaan maken. dit werkt net zo effectief.

-edit- Veruidelijking, Ik gebruik voor ALLES wat uitbreidbaar is een koppeltabel. Deze categorieën zijn doelbewust zo gekozen en worden niet uitgebreid en zijn dus een vast onderdeel van productkenmerken. Uitbreiding zou ook een compleet andere vormgeving betekenen en is nadrukkelijk zo doorgesproken dus gaat ook niet gebeuren :)
  donderdag 9 februari 2012 @ 21:25:41 #5
84244 Scorpie
Abject en infaam!
pi_107806679
quote:
0s.gif Op donderdag 9 februari 2012 21:23 schreef Swetsenegger het volgende:

[..]

Mjah nonsens, je kan overal wel een koppeltabel voor aan gaan maken. dit werkt net zo effectief.
Ja, het werkt inderdaad perfect, een beetje rekensommen gaan bijhouden in PHP om je koppelingen die je op een dramatische manier je database infietst bij te houden, om nog maar te zwijgen van de persoon na jou die die meuk van je mag gaan onderhouden en een groot WTF moment gaat krijgen bij het zien van deze handel.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 21:26:49 #6
1972 Swetsenegger
Egocentrische Narcist
pi_107806744
quote:
14s.gif Op donderdag 9 februari 2012 21:25 schreef Scorpie het volgende:

[..]

Ja, het werkt inderdaad perfect, een beetje rekensommen gaan bijhouden in PHP om je koppelingen die je op een dramatische manier je database infietst bij te houden, om nog maar te zwijgen van de persoon na jou die die meuk van je mag gaan onderhouden en een groot WTF moment gaat krijgen bij het zien van deze handel.
Dit is anders een beproefde methode die ook regelmatig gebruikt wordt om rollen en rechten bij te houden. Er worden helemaal geen 'rekensommen' bijgehouden.
  donderdag 9 februari 2012 @ 21:28:36 #7
84244 Scorpie
Abject en infaam!
pi_107806833
quote:
0s.gif Op donderdag 9 februari 2012 21:26 schreef Swetsenegger het volgende:

[..]

Dit is anders een beproefde methode die ook regelmatig gebruikt wordt om rollen en rechten bij te houden. Er worden helemaal geen 'rekensommen' bijgehouden.
En daarom werkt het in jouw geval dus niet.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
pi_107806850
Gebruik toch gewoon koppeltabellen :') . Je gaat toch het wiel niet opnieuw uitvinden?
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 21:30:43 #9
1972 Swetsenegger
Egocentrische Narcist
pi_107806953
quote:
14s.gif Op donderdag 9 februari 2012 21:28 schreef Scorpie het volgende:

[..]

En daarom werkt het in jouw geval dus niet.
Het werkt prima, ik kan er ook even met een loopje doorheen. Daar ging mijn vraag over :')
quote:
7s.gif Op donderdag 9 februari 2012 21:29 schreef Devv het volgende:
Gebruik toch gewoon koppeltabellen :') . Je gaat toch het wiel niet opnieuw uitvinden?
Wiel uitvinden? Dit wordt al jaren zo gebruikt man.
pi_107807049
quote:
0s.gif Op donderdag 9 februari 2012 21:30 schreef Swetsenegger het volgende:

[..]

Het werkt prima, ik kan er ook even met een loopje doorheen. Daar ging mijn vraag over :')

[..]

Wiel uitvinden? Dit wordt al jaren zo gebruikt man.
Maar jij gaat code schrijven om relaties te leggen tussen gegevens die je later sowieso in een relationele database gaat opslaan 8)7 . Of snap ik het gewoon niet?
  donderdag 9 februari 2012 @ 21:32:49 #11
84244 Scorpie
Abject en infaam!
pi_107807070
Oke, wees lekker eigenwijs. I pity the fool die na jou de tyfuszooi mag opruimen en een extra categorie mag gaan toevoegen _O-
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
pi_107807191
als je die lijstjes die je gebruikt in je select, in een array zet kun je daar dmv foreach doorheen lopen en dan gewoon array[] = 1 doen enzo. Gebruik alsjeblieft een koppeltabel.
pi_107807206
quote:
14s.gif Op donderdag 9 februari 2012 21:32 schreef Scorpie het volgende:
Oke, wees lekker eigenwijs. I pity the fool die na jou de tyfuszooi mag opruimen en een extra categorie mag gaan toevoegen _O-
Dit dus. Het is een leuke oefening, maar ik zou het persoonlijk niet in productiecode gebruiken. Ik krijg nu al hoofdpijn van het bovenstaande concept.
  donderdag 9 februari 2012 @ 21:35:11 #14
75592 GlowMouse
l'état, c'est moi
pi_107807208
quote:
14s.gif Op donderdag 9 februari 2012 21:20 schreef Scorpie het volgende:
Ja, gebruik een koppeltabel.
dit. En als je echt eigenwijs bent, kijk je op http://www.php.net/manual/en/language.operators.bitwise.php
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 21:35:16 #15
1972 Swetsenegger
Egocentrische Narcist
pi_107807216
quote:
14s.gif Op donderdag 9 februari 2012 21:32 schreef Scorpie het volgende:
Oke, wees lekker eigenwijs. I pity the fool die na jou de tyfuszooi mag opruimen en een extra categorie mag gaan toevoegen _O-
Als er een extra categorie toegevoegd moet worden moet de hele voorkant gewijzigd worden....
  donderdag 9 februari 2012 @ 21:36:05 #16
84244 Scorpie
Abject en infaam!
pi_107807272
quote:
0s.gif Op donderdag 9 februari 2012 21:35 schreef Swetsenegger het volgende:

[..]

Als er een extra categorie toegevoegd moet worden moet de hele voorkant gewijzigd worden....
En dat is relevant omdat? Wilde je gewoon uit rancune het principe 'dynamisch' niet toepassen, of vond je het gewoon teveel moeite?
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 21:36:47 #17
1972 Swetsenegger
Egocentrische Narcist
pi_107807311
Och kijk alle heren gelijk weer op hun hoge paarden zitten. Geen idee van wat er verder op die website gebeurt maar direct hun mond vol :')

Echt dit topic is vervallen tot betweters die niemand meer wat willen uitleggen maar alleen hun e-piemel willen showen.
  donderdag 9 februari 2012 @ 21:37:16 #18
75592 GlowMouse
l'état, c'est moi
pi_107807350
ik had je een hele mooie hint gegeven
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 21:37:49 #19
1972 Swetsenegger
Egocentrische Narcist
pi_107807388
quote:
5s.gif Op donderdag 9 februari 2012 21:36 schreef Scorpie het volgende:

[..]

En dat is relevant omdat? Wilde je gewoon uit rancune het principe 'dynamisch' niet toepassen, of vond je het gewoon teveel moeite?
Wat is het nut van eenvoudig een extra categorie toe te kunnen voegen als vervolgens de hele voorkant EN achterkant op de schop kan?

Kijk nu is bv afgesproken dat er max 3 foto's aan een product hangen. Maar die staan uiteraard in een koppeltabel want je kan er op wachten dat dat er 4 moeten worden. Eenvoudig uit te breiden.
Kleuren per artikel: koppeltabel. Merk: koppeltabel.

In dit geval is het een FIXED onderdeel van de volledige navigatie op de website. Het is simpelweg niet eenvoudig aan te passen. Kan het in een koppeltabel? Vast wel, heb ik een redelijk ingewikkelde query nodig om de meuk eruit te trekken.

[ Bericht 27% gewijzigd door Swetsenegger op 09-02-2012 21:42:58 ]
  donderdag 9 februari 2012 @ 21:40:51 #20
84244 Scorpie
Abject en infaam!
pi_107807582
quote:
0s.gif Op donderdag 9 februari 2012 21:37 schreef Swetsenegger het volgende:

[..]

Wat is het nut van eenvoudig een extra categorie toe te kunnen voegen als vervolgens de hele voorkant EN achterkant op de schop kan?
Dan kan je je beter afvragen waarom je de voorkant en achterkant op de schop moet gooien bij zoiets simpels als een extra categorie, iets dat je natuurlijk op je vingers kan natellen dat er in de toekomst zoiets gaat gebeuren. Waarom is er geen rekening mee gehouden in het initiele ontwerp en ontwikkelfase?

Maar goed, ik ben toch maar een betweter die zijn e-piemel wil tonen ofzo.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 21:44:18 #21
1972 Swetsenegger
Egocentrische Narcist
pi_107807813
quote:
0s.gif Op donderdag 9 februari 2012 21:40 schreef Scorpie het volgende:

[..]

Dan kan je je beter afvragen waarom je de voorkant en achterkant op de schop moet gooien bij zoiets simpels als een extra categorie, iets dat je natuurlijk op je vingers kan natellen dat er in de toekomst zoiets gaat gebeuren. Waarom is er geen rekening mee gehouden in het initiele ontwerp en ontwikkelfase?

Maar goed, ik ben toch maar een betweter die zijn e-piemel wil tonen ofzo.
Omdat de klant 6 hoofdcategorieen verkoopt. Al 50 jaar. En er geen categorie bijkomt.

Ik heb het de klant meerdere malen uitgelegd. De klant wil het zo. Wie ben ik om vol te houden dat ze na 50 jaar toch ECHT binnen nu en 2 jaar de boel volledig anders gaan doen.
pi_107807935
De vraag is: Waarom wil je een niet-flexibele oplossing toepassen terwijl die (blijkbaar) lastiger is dan de algemeen gebruikte flexibele oplossing? Wat is in hemelsnaam het nadeel?
  donderdag 9 februari 2012 @ 21:46:21 #23
84244 Scorpie
Abject en infaam!
pi_107807955
quote:
0s.gif Op donderdag 9 februari 2012 21:44 schreef Swetsenegger het volgende:

[..]

Omdat de klant 6 hoofdcategorieen verkoopt. Al 50 jaar. En er geen categorie bijkomt.

Ik heb het de klant meerdere malen uitgelegd. De klant wil het zo. Wie ben ik om vol te houden dat ze na 50 jaar toch ECHT binnen nu en 2 jaar de boel volledig anders gaan doen.
Jij bent als het goed is de professional die ondanks het verhaal van de klant rekening houdt met een dynamische omgeving en een applicatie zo opzet dat het niet alleen nu goed werkt, maar ook in de toekomst is voorbereid op wijzigingen, uitbreidingen en verandering in vraag en gebruik van diezelfde applicatie. Daar wordt je voor betaald imo.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
  FOK!-Schrikkelbaas donderdag 9 februari 2012 @ 21:50:42 #24
1972 Swetsenegger
Egocentrische Narcist
pi_107808194
quote:
14s.gif Op donderdag 9 februari 2012 21:46 schreef KomtTijd... het volgende:
De vraag is: Waarom wil je een niet-flexibele oplossing toepassen terwijl die (blijkbaar) lastiger is dan de algemeen gebruikte flexibele oplossing? Wat is in hemelsnaam het nadeel?
Hij is helemaal niet lastiger :? Alles draait al, ik had alleen een leuk vraagstukje voor het editten van producten. Niks spannend.

Zoals gezegd is dit ook een methode die vaak gebruikt wordt om rechten en rollen te definiëren. Komt niet uit de lucht vallen ofzo.

quote:
0s.gif Op donderdag 9 februari 2012 21:46 schreef Scorpie het volgende:

[..]

Jij bent als het goed is de professional die ondanks het verhaal van de klant rekening houdt met een dynamische omgeving en een applicatie zo opzet dat het niet alleen nu goed werkt, maar ook in de toekomst is voorbereid op wijzigingen, uitbreidingen en verandering in vraag en gebruik van diezelfde applicatie. Daar wordt je voor betaald imo.
"Ja ik kan in de database binnen 2 tellen een categorie toevoegen. Vervolgens hebben we een week werk om de volledige navigatie en vormgeving te wijzigen"

Ergo, nut = 0.

En weet je... er is misschien zelfs wel wat te zeggen voor het niet volledig dynamisch opzetten. Zie bv deze website. De klant is volledig vrij in categorieën. Hij maakt een menu item aan en kan daar producten inhangen. Vervolgens krijg je echt een draak van een menu met 88 mogelijkheden.

Wel zonde, want ik heb een enorm geile beheer module voor de navigatie geschreven.


Volledig dynamisch en vrij te beheren. In principe is alleen de vormgeving de uiteindelijke beperking.

[ Bericht 3% gewijzigd door Swetsenegger op 09-02-2012 22:05:53 ]
  donderdag 9 februari 2012 @ 21:53:31 #25
302853 themole
graaft totaal door.
pi_107808364
Gast als een extra categorie je in de front end een week werk kost heb je een heel fout design gemaakt. :')
Niet altijd serieus
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')