Avatar billede steenolsen1 Nybegynder
15. februar 2005 - 10:42 Der er 7 kommentarer

opslag i to tabeller i EN query

Hej,

jeg har to tabeller, hvorfra jeg skal hente data - helst ad EN omgang. Det foregår på den måde, at man klikker på en gruppe (tabellen grupper), og på basis af det valg skal man så hente de billeder (tabellen billeder) der:
1) er aktive,
2) er tilknyttet den valgte gruppe,
3) er på det valgte niveau.

Som du nok kan regne ud er der altså flere niveauer (levels) i strukturen, og der skal ved hvert klik kun vises de data der er aktuelle for dels den valgte gruppe, dels det valgte niveau.

Tabellerne ser sådan her ud:
CREATE TABLE `grupper` (
  `id` int(11) NOT NULL auto_increment,
  `gruppenavn` varchar(40) NOT NULL default '',
  `level` int(11) NOT NULL default '0',
  `parent_id` int(11) NOT NULL default '0',
  `aktiv` enum('1','0') NOT NULL default '1',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=20 ;

CREATE TABLE `billeder` (
  `id` int(11) NOT NULL auto_increment,
  `tekst` varchar(50) NOT NULL default '',
  `gruppeid` int(11) NOT NULL default '0',
  `billede_l` varchar(50) NOT NULL default '',
  `billede_h` varchar(50) NOT NULL default '',
  `pris` decimal(6,2) NOT NULL default '0.00',
  `aktiv` enum('1','0') NOT NULL default '1',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=8 ;

Jeg kan bare ikke få det til at virke!!!!
PFT.
Steen
Avatar billede imago-dei Nybegynder
15. februar 2005 - 11:53 #1
Du skal blot join'e de to tabeller på grupper.id og billeder.gruppeid (hvis gruppeid i billeder tabellen er en foreign key fra grupper tabellen). Derefter selecter du fra den joinede tabel.
Avatar billede steenolsen1 Nybegynder
15. februar 2005 - 13:13 #2
Ja jeg har været igang med at joine, men kan ikke få det til at spille. Måske jeg bare har stirret mig blind på det...
Avatar billede imago-dei Nybegynder
15. februar 2005 - 13:50 #3
SELECT    *
FROM      grupper INNER JOIN
                          billeder ON grupper.id = billeder.gruppeid
    WHERE    grupper.aktiv = 1 and level = @level

Noget lignende ovenstående. Level leverer du til queryen som variabel og aktiv går jeg ud fra er defineret i grupper tabellen. Hvorfor har du ellers aktiv i både billeder og grupper tabellen?
Avatar billede steenolsen1 Nybegynder
15. februar 2005 - 14:20 #4
Den melder fejl i midterste linie
$q_fp = mysql_query("SELECT * FROM grupper INNER JOIN billeder ON grupper.id = billeder.gruppeid WHERE grupper.aktiv = 1 AND level = @level");
    while($vis_fp = mysql_fetch_assoc($q_fp)) {
        echo $vis_fp[gruppenavn];
   

Man kan godt slå en hel gruppe fra at blive vist i shoppen, men det kan være at det kun er det ene billede og ikke resten af gruppen, der skal slås fra - derfor de to aktiv felter.
Avatar billede steenolsen1 Nybegynder
15. februar 2005 - 14:21 #5
Midterste linie = while(....
Avatar billede imago-dei Nybegynder
15. februar 2005 - 14:31 #6
Ja det er nu ikke så let at svare på, hvad giver den fejl...kan være 1000 ting.

Men hvordan angiver du @level i koden? @level er en variabel i SQL koden. Dvs. svarer til $level i php hvor du så har angivet $level til en valid værdi.
Avatar billede steenolsen1 Nybegynder
15. februar 2005 - 14:54 #7
Level kan hentes fra url'en - altså med $_GET[level]

Har aldrig brugt @level på den måde du bruger det, så jeg har også prøvet med ovennævnte i stedet... Det virker ikke det skidt :-(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester