Avatar billede katja_kh Nybegynder
12. juni 2008 - 20:02 Der er 12 kommentarer og
2 løsninger

hente fra to tabeller (inner join)

Jeg har hentet tekst ud fra en tabel nu vil jeg så gerne have nogle billeder ud fra en anden tabel. Billederne har et fk_id som relaterer til en ret i den første tabel. Jeg er ret sikker på at der skal laves en inner join men ved ikke lige hvordan jeg skal gøre det.

min kode indtil videre:
<?php
include('../Backup2/includes/db_con.php');
$time=time();
$r=mysql_query("select * from cms_menukort where fk_id=2");
        while($row=mysql_fetch_array($r)){
          echo "KATEGORI:"."<br/>"."$row[underkategori]";
            echo "<br />";
            echo "$row[retter]";
            echo "<br />";
            echo "PRIS:"."<br />"."$row[pris]".",-";
            echo "<br /><br />";       
        }
?>

tabellern hvor billederne ligger hedder cms_galleri.
række navnene er som følger:
id, stor, lille, fk_id.
Avatar billede dalbjerg Nybegynder
12. juni 2008 - 20:14 #1
Er ikke sikker på jeg forstår dig rigtigt, men mit bud

select a.felt1,afelt2,b.stor,b.lille from cms_menukort as A,cms_galleri as B where fk_id=2 and A.fk_id=B.fk_id

Det er generelt en dårligt ide at bruge *, da det kan give meget data som du ikke skal bruge til noget og et større ram forbrug. Hent derfor kun de felter ud som du har brug for.
Avatar billede katja_kh Nybegynder
12. juni 2008 - 20:31 #2
jeg har også prøvet at trække billederne ud neden under.

<?php
include('../Backup2/includes/db_con.php');
$time=time();
$r=mysql_query("select * from cms_menukort where fk_id=1 ");
        while($row=mysql_fetch_array($r)){   
            echo "$row[id]";   
            echo "KATEGORI:"."<br/>"."$row[underkategori]";
            echo "<br />";
            echo "$row[retter]";
            echo "<br />";
            echo "PRIS:"."<br />"."$row[pris]".",-";
            echo "<br /><br />";
       
        }
?>   
<?php
include('../Backup2/includes/db_con.php');
$id = $_GET['id'];
$res=mysql_query("select * from cms_galleri where fk_id=$id");
while($row=mysql_fetch_array($res)){
    echo "<td>";
echo "<a href='"."billeder/$row[stor]"."' target=_blank><img src='"."billeder/$row[lille]"."' style='border-color:white;'>&nbsp;&nbsp;</a>"  ;
    echo "<td>";
    echo "<br>";
    echo "</td>";
}
?>

men den tager ikke idérne fra retterne, men den tager menupuktets id som bliver sendt med via en $_GET.

http://katja.wi13.ots.dk/cms/index.php?id=4 er linket til min side.. du kan måske få en idé om hvad det er jeg vil.
Jeg vil under hver ret trække det tilsvarende billede ud. Retterne og billederne ligger i hver deres tabel.
Avatar billede dalbjerg Nybegynder
12. juni 2008 - 20:45 #3
Okay lad os sige du har de her 2 tabeller: cms_menukort, cms_galleri
i cms_menukort er der følgende rækker:
id, navn, menutekst, pris og fk_id

I den anden skriver du selv der er:
id, stor, lille, fk_id

Så vil jeg gøre følgende nå jeg skulle trække det ud:
SELECT menu.navn,menu.menutekst,menu.pris,gall.stor,gall.lille FROM cms_menukort as menu, cms_galleri as gall WHERE fk_id=4 AND menu.fk_id = gall.fk_id
Avatar billede katja_kh Nybegynder
12. juni 2008 - 20:50 #4
hmm hvis jeg skriver den sql sætning kommer den med denne fejl

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/katja.wi13.ots.dk/public_html/cms/includes/4.php on line 19
Avatar billede dalbjerg Nybegynder
12. juni 2008 - 20:59 #5
du skal nok lige omdøbe min navne i din cms_menukort, jeg ved ikke hvad dine rækker hedder deri?
Avatar billede jakobdo Ekspert
12. juni 2008 - 21:07 #6
Hvad med noget i stil med:

SELECT m.underkategori, m.retter, m.pris, g.lille, g.stor FROM cms_menukort m INNER JOIN  cms_galleri g ON m.id = g.fk_id
Avatar billede katja_kh Nybegynder
12. juni 2008 - 21:08 #7
jeg har omdøbt navnene men den kommer stadig med den samme fejl.

SELECT menu.underkategori,menu.retter,menu.pris,gall.stor,gall.lille FROM cms_menukort as menu, cms_galleri as gall WHERE fk_id=4 AND menu.fk_id = gall.fk_id
Avatar billede dalbjerg Nybegynder
12. juni 2008 - 21:17 #8
arrhh...

SELECT menu.underkategori,menu.retter,menu.pris,gall.stor,gall.lille FROM cms_menukort as menu, cms_galleri as gall WHERE menu.fk_id=4 AND menu.fk_id = gall.fk_id
Avatar billede katja_kh Nybegynder
12. juni 2008 - 21:23 #9
hehe jakobdo
Du er redningsmanden igen igen.. det virker efter hensigten nu..

men men.. den trækker to retter ud som den ikke skal.. Det er meningen at den kun skal tage forretter de har fk_id 2 (den tager en dessert og en hovedret med ud også)kan man skrive på en eller anden måde i din sql sætning where g.fk_id=2
Avatar billede jakobdo Ekspert
12. juni 2008 - 21:30 #10
Så skal du evt. lave:

SELECT m.underkategori, m.retter, m.pris, g.lille, g.stor FROM cms_menukort m INNER JOIN  cms_galleri g ON m.id = g.fk_id WHERE g.fk_id = 2
Avatar billede katja_kh Nybegynder
12. juni 2008 - 21:46 #11
yes yes nu virker det!! Du er min php-helt jakobdo.. hvis du vil have pointene skal du bare smide et svar.. hvis ikke du vil have dem må dalbjerg gerne få dem som tak for hans interesse.
Avatar billede jakobdo Ekspert
12. juni 2008 - 21:54 #12
Du får et svar fra mig og jeg deler gerne.
Avatar billede katja_kh Nybegynder
12. juni 2008 - 22:10 #13
så kan dalbjerg lige ligge et svar så får han også point.
Avatar billede jakobdo Ekspert
12. juni 2008 - 22:16 #14
Takker for point.
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