[PHP] Categorieen doorlopen uit tabel

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • B2
  • Registratie: April 2000
  • Laatst online: 17-09 23:21

B2

wa' seggie?

Topicstarter
Ik heb voor een storingswebapplicatie een bepaald stuk code wat records ophaalt uit een SQL2000 database om een rapport te genereren.
De code ziet er als volgt uit :

code:
1
2
3
4
5
6
7
8
9
10
11
12
$pharos = db_query("
    SELECT p.id, p.name, p.description, p.on_special,  

p.orig_datum,p.inige,p.iniaf, p.o_timestamp, p.af_timestamp, c.name AS category
    FROM products p, products_categories pc, categories c
    WHERE (c.name = 'PHAROS' OR c.name = 'PHAROS-workstation')
    AND p.id = pc.product_id
    AND c.id = pc.category_id
    AND month(o_timestamp) = $maand
    AND year(o_timestamp) = $jaar
    ORDER BY p.id
    ");


Zoals je ziet geef ik telkens in het WHERE statement op in welke categorie ie moet kijken.
Nu staat er in de file voor elke categorie dit stuk code. Het probleem hiermee is dat wanneer er ooit eens een nieuwe categorie wordt aangemaakt, dit niet in deze file meeveranderd.

Nu ben ik aan het denken hoe ik het beste dus bovenstaande code in een for() of foreach() statement kan krijgen om zo met minimale code alle categorieen te doorlopen.
Ik heb al gekeken naar foreach() maar dat gaat zover ik snap over arrays.

[ Voor 3% gewijzigd door B2 op 24-08-2003 22:37 ]


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Kan je dan niet een array maken met categorieen en daar doorheen lopen met foreach?

Het beste kan je dan in je database een tabel maken met daarin je categorieen. Die categorieen haal je dan op en zet je in een array. Vervolgens kan je dan door middel van foreach door die array heen lopen en de records op halen die bij elke categorie horen. Je hoeft dan alleen een categorie in je database toe te voegen als er een categorie bij komt ern geen php files aan te passen.

[ Voor 65% gewijzigd door Brakkie op 24-08-2003 22:45 ]

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

SQL:
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
$pharos = db_query("
    SELECT 
        p.id, 
        p.name, 
        p.description, 
        p.on_special,  
        p.orig_datum,
        p.inige,
        p.iniaf, 
        p.o_timestamp, 
        p.af_timestamp, 
        c.name AS category
    FROM 
        products p, 
        products_categories pc, 
        categories c
    WHERE 
        (c.name = 'PHAROS' OR c.name = 'PHAROS-workstation')
    AND 
        p.id = pc.product_id
    AND 
        c.id = pc.category_id
    AND 
        month(o_timestamp) = $maand
    AND 
        year(o_timestamp) = $jaar
    ORDER BY 
        p.id
    ");


FF je query wat duidelijker gezet
Zoals je ziet geef ik telkens in het WHERE statement op in welke categorie ie moet kijken.
Nu staat er in de file voor elke categorie dit stuk code. Het probleem hiermee is dat wanneer er ooit eens een nieuwe categorie wordt aangemaakt, dit niet in deze file meeveranderd.
Waarom doe je die where dan ik zie het nut er niet van in :P

Als je die weglaat is je probleem opgelost lijkt me zo ;)

Als je niet wilt dat ze allemaal opgenomen worden kan je natuurlijk een veld in de category tabel opnemen waarin je een index aangeeft voor opnemen in deze query of niet :)

[ Voor 16% gewijzigd door BierPul op 24-08-2003 22:46 ]

Ja man


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je laat al "dynamisch" het jaar en de maand erin zetten... Dat kan toch ook met de categorynaam :?
En dan evt via een foreach elke categorynaam die in een array staat of met een while-loop elke category uit de database of een losse tekstfile ofzo??

Acties:
  • 0 Henk 'm!

  • B2
  • Registratie: April 2000
  • Laatst online: 17-09 23:21

B2

wa' seggie?

Topicstarter
Hoe kan ik het beste dan de namen van de variabelen laten kloppen?

Of te wel : elke query geeft dus een aantal waardes terug die op een volgende pagina in een tabel komen te staan. Maar er zijn dus een stuk of wat van die tabellen nodig. Voor elke categorie 1.

Ik heb het nu dus zo dat elke query een aparte naam als resultaatvariabele heeft (bv $pharos en $vccs). Dit moet dan dus ook veranderen.

Ik zat zelf al ongeveer dit te bedenken qua code om de categorieen door te lopen :

code:
1
2
3
$result = mysql_query("SELECT name FROM categories");
while ($row = mysql_fetch_array($result) {
  $gegevens = db_query("blablabla") }


Die variabele $gegevens moet dus straks allemaal verschillende tabellen kunnen laten zien.

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Je moet in die while loop waarin je je categorieen ophaald een nieuwe loop maken waarin je per categorie de gegevens ophaald. Dus gewoon nog een keer hetzelfde als je al hebt alleen dan binnen die andere while loop.

Systeem | Strava

Pagina: 1