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

[SQL] categorieën koppelen

Pagina: 1
Acties:

  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 25-10-2023
Hallo,

Ik ben op dit moment bezig met een website waarbij er categorieën en subcategorieën zijn.
Nu is de wens dat de subcategorieën bij meerdere categorieën kunnen horen.
Oftewel:
Subcategorie 1 kan zowel in Categorie 1 als Categorie 2 zitten.
Daarom heb ik een koppeldatabase gemaakt, die ziet er zo uit:
id (unieke id van de koppeling)
categorie (id van de hoofdcategorie)
subcategorie (id van de subcategorie)

Ik heb deze query gebruikt om alles eruit te halen:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
    k.id AS koppelid,
    k.categorie AS koppelcategorie,
    k.subcategorie AS koppelsubcategorie,
    c.id AS categorieid,
    c.naam AS categorienaam,
    s.id AS subcategorieid,
    s.naam AS subcategorienaam
FROM
    categoriekoppel AS k
INNER JOIN
    categorieen AS c
ON( c.id = k.categorie )
INNER JOIN
    subcategorieen AS s
ON( s.id = k.subcategorie )


Als ik dit uitvoer en een print_r doe krijg ik het volgende:
Array
(
[koppelid] => 1
[koppelcategorie] => 1
[koppelsubcategorie] => 1
[categorieid] => 1
[categorienaam] => ICT
[subcategorieid] => 1
[subcategorienaam] => Software-Ontwikkeling
)
Dus hij haalt het er netjes uit en pakt de goede hoofd-categorie en subcategorie.

Maar nu ik een 2e record heb, pakt die die niet. Hij geeft maar 1 resultaat weer terwijl er toch echt 2 records instaan.

Weet iemand waar dit aan ligt?

Alvast bedankt.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Je hebt gecontroleerd of van het tweede record de categorie en de subcategorie ook aanwezig zijn in de eigen tabellen?

Today's subliminal thought is:


  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 25-10-2023
Annie schreef op donderdag 21 februari 2008 @ 14:50:
Je hebt gecontroleerd of van het tweede record de categorie en de subcategorie ook aanwezig zijn in de eigen tabellen?
Jep! :) Want ik heb ze via PhpMyAdmin ingevoerd, en daarbij heb ik een relatie gemaakt met de 3 tabellen.. Het werkt met het eerste record maar niet met het 2e record..

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik heb even zitten kijken, maar ik zie geen probleem in je query of tabelopzet; het zou moeten werken, of (en die kans is aanwezig) ik ben nog niet helemaal wakker.

Sterker: Ik heb het even getest; en het werkt hier toch écht :?

Diagram:

Afbeeldingslocatie: http://tweakers.net/ext/f/eDQkimyDs8Sp9CbEDgtxW4oF/full.gif

Inhoud:

Afbeeldingslocatie: http://tweakers.net/ext/f/ek3yFJgYlA2speU8txpj98io/full.gif

Query:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
    k.id AS koppelid,
    k.categorie AS koppelcategorie,
    k.subcategorie AS koppelsubcategorie,
    c.id AS categorieid,
    c.naam AS categorienaam,
    s.id AS subcategorieid,
    s.naam AS subcategorienaam
FROM
    categoriekoppel AS k
INNER JOIN
    categorie AS c
ON( c.id = k.categorie )
INNER JOIN
    subcategorie AS s
ON( s.id = k.subcategorie )


Geeft:

code:
1
2
3
4
5
6
7
8
9
koppelid    koppelcategorie koppelsubcategorie categorieid categorienaam                                      subcategorieid subcategorienaam                                   
----------- --------------- ------------------ ----------- -------------------------------------------------- -------------- -------------------------------------------------- 
1           1               1                  1           ICT                                                1              Development
2           1               2                  1           ICT                                                2              Research
3           2               3                  2           Fruithandel                                        3              Inkoop
4           1               4                  1           ICT                                                4              Planning
5           2               4                  2           Fruithandel                                        4              Planning

(5 row(s) affected)

[ Voor 96% gewijzigd door RobIII op 21-02-2008 15:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 25-10-2023
RobIII schreef op donderdag 21 februari 2008 @ 14:54:
Ik heb even zitten kijken, maar ik zie geen probleem in je query of tabelopzet; het zou moeten werken, of (en die kans is aanwezig) ik ben nog niet helemaal wakker.

Sterker: Ik heb het even getest; en het werkt hier toch écht :?
Meen je dat? :o
Hmm raar dat het hier niet werkt :S
Welke MySQL versie heb jij? Misschien dat het daar aan ligt, je weet maar nooit :)

Edit: Als ik de SQL in PhpMyAdmin uitvoer krijg ik ook netjes alle resultaten, maar in PHP niet :o
Even iets anders uitproberen (ipv print_r even een while loopje maken)

[ Voor 15% gewijzigd door Online-Gamer op 21-02-2008 15:02 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
:Y
Misschien druk je niet alle resultaten af?
Online-Gamer schreef op donderdag 21 februari 2008 @ 15:00:
Welke MySQL versie heb jij? Misschien dat het daar aan ligt, je weet maar nooit :)
MySQL? Ik gebruik MSSQL :P
Maar trust me, daar zit het/je probleem niet ;)
Online-Gamer schreef op donderdag 21 februari 2008 @ 15:00:
Edit: Als ik de SQL in PhpMyAdmin uitvoer krijg ik ook netjes alle resultaten, maar in PHP niet :o
Even iets anders uitproberen (ipv print_r even een while loopje maken)
Dat lijkt me een goed plan d:)b

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 25-10-2023
RobIII schreef op donderdag 21 februari 2008 @ 15:04:
[...]

:Y


[...]

Misschien druk je niet alle resultaten af?


[...]

MySQL? Ik gebruik MSSQL :P
Maar trust me, daar zit het/je probleem niet ;)


[...]

Dat lijkt me een goed plan d:)b
Rob, heel erg bedankt voor alle moeite die je hebt gedaan, echt top _/-\o_
Ik heb nu in plaats van een print_r met de array, een while loopje gemaakt, en het werkt!
Geen idee waarom print_r het nou weer niet laat zien, maargoed het werkt :)

Heel erg bedankt!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Online-Gamer schreef op donderdag 21 februari 2008 @ 15:06:
Geen idee waarom print_r het nou weer niet laat zien, maargoed het werkt :)
Ik ben niet heel bekend met PHP, dus ik kan niet met zekerheid zeggen of print_r alle resultaten zou moeten afdrukken; het lijkt me wel de schuldige dan ja ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • mithras
  • Registratie: Maart 2003
  • Niet online
Het ligt er uiteraard aan wat je readable print. Kan je het php deel posten waar je iets met je mysql resource doet?

  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 25-10-2023
mithras schreef op donderdag 21 februari 2008 @ 15:10:
Het ligt er uiteraard aan wat je readable print. Kan je het php deel posten waar je iets met je mysql resource doet?
Toen ik nog de print_r methode had, heb ik verschillende methodes gebruikt, onder andere:
PHP:
1
2
3
4
5
6
$getKoppel = mysql_query("hier de hele query");
// methode 1
echo '<pre>',print_r(mysql_fetch_assoc($getKoppel)),'</pre>';
// methode 2
$fetch = mysql_fetch_assoc($getKoppel);
print_r($fetch);


Maar bij elke methode kwam er maar 1 resultaat uit, sinds nu vertrouw ik die print_r niet meer zo :')

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Online-Gamer schreef op donderdag 21 februari 2008 @ 15:06:
Geen idee waarom print_r het nou weer niet laat zien, maargoed het werkt :)
mysql_fetch_array() en mysql_fetch_object() (en gelijkende functies) geven 1 rij terug in array resp. object vorm. Staat letterlijk als 1e regel in de manual van desbetreffende functies.
Online-Gamer schreef op donderdag 21 februari 2008 @ 15:13:
Maar bij elke methode kwam er maar 1 resultaat uit, sinds nu vertrouw ik die print_r niet meer zo :')
Of je lees eerst wat elke functie doet, voordat je aanneemt dat iets niet te vertrouwen is. :>

[ Voor 29% gewijzigd door Voutloos op 21-02-2008 15:18 ]

{signature}


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Voutloos schreef op donderdag 21 februari 2008 @ 15:16:
[...]
mysql_fetch_array() en mysql_fetch_object() (en gelijkende functies) geven 1 rij terug in array resp. object vorm. Staat letterlijk als 1e regel in de manual van desbetreffende functies.
Alleen stond die informatie nog niet in de TS ;)
Oh, ik dacht even dat je op Mithras reageerde; de TS had dit idd kunnen weten en vinden ;)

[ Voor 12% gewijzigd door RobIII op 21-02-2008 15:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
RobIII schreef op donderdag 21 februari 2008 @ 15:21:
Alleen stond die informatie nog niet in de TS ;)
Dat neemt niet weg dat het een eenvoudig te debuggen probleem is, cq. een probleem welke niet voorkomt als je weet wat gebruikte functies doen.

Vandaar die laatste opmerking, ga eerst uit van gedrag dat je nog niet helemaal begrijpt ipv dat je denkt dat de fout bij PHP, MySQL of whatever moet liggen.

edit:
leuk zo'n edit :P

{signature}


  • mithras
  • Registratie: Maart 2003
  • Niet online
Online-Gamer schreef op donderdag 21 februari 2008 @ 15:06:
[...]

Rob, heel erg bedankt voor alle moeite die je hebt gedaan, echt top _/-\o_
Ik heb nu in plaats van een print_r met de array, een while loopje gemaakt, en het werkt!
Geen idee waarom print_r het nou weer niet laat zien, maargoed het werkt :)

Heel erg bedankt!
Hoewel het hieronder al beschreven staat, is er niet een oplossing print_r() of while().

Het is een combinatie: while( fetch ){ print_r } Bijvoorbeeld, uiteraard :)

  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 25-10-2023
Voutloos schreef op donderdag 21 februari 2008 @ 15:25:
[...]
Dat neemt niet weg dat het een eenvoudig te debuggen probleem is, cq. een probleem welke niet voorkomt als je weet wat gebruikte functies doen.

Vandaar die laatste opmerking, ga eerst uit van gedrag dat je nog niet helemaal begrijpt ipv dat je denkt dat de fout bij PHP, MySQL of whatever moet liggen.

edit:
leuk zo'n edit :P
Inderdaad je hebt gelijk, ik had gewoon verwacht dat de fetch functie een complete array terug gaf en die met print_r kon uitlezen, mijn fout dus ;)
hoef je niet gelijk zo bot te reageren hoor :'( :')

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 22:06
Hou 't eens gezellig ja? :(

[ Voor 75% gewijzigd door RobIII op 21-02-2008 16:06 ]

Strava | AP | IP | AW


  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 25-10-2023
weggeveegt

[ Voor 60% gewijzigd door Online-Gamer op 23-02-2008 18:35 ]


  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 22:06
Ga wat zinnigs doen... :(

[ Voor 91% gewijzigd door RobIII op 21-02-2008 16:07 ]

Strava | AP | IP | AW


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Online-Gamer schreef op donderdag 21 februari 2008 @ 15:54:
Als ik 1 dingetje niet wist van print_r ben ik dan gelijk geen programmeur?
Misschien een beetje betweterig, maar het ging er om dat je 1 dingetje van mysql_fetch_assoc() niet wist. ;) print_r() print in alle gevallen uitstekende de gehele array. :)

{signature}


  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 25-10-2023
Voutloos schreef op donderdag 21 februari 2008 @ 16:01:
[...]
Misschien een beetje betweterig, maar het ging er om dat je 1 dingetje van mysql_fetch_assoc() niet wist. ;) print_r() print in alle gevallen uitstekende de gehele array. :)
Haha ja inderdaad 8)7
Maar in ieder geval, hij doet het nu, dus bedankt degene die mij geholpen hebben ;)
Pagina: 1