17. januar 2004 - 23:51
Der er
17 kommentarer og 1 løsning
While - hente data fra 2 tabeller?
Hejsa Problemer med while igen :/ Det er et ip-blokker system, hvor der i den ene tabel er: tab 1 ip | blok ---------------------- ipen | ja eller nej I den anden (som indeholder tagwall-data) er bla: tab 2 navn | tekst | logget ip | osv... ----------------------------------- | | | Mit spørgsmål er så: Er det muligt i en while, som udskriver tab 2, at bruge en if (eller andet?) til at udskrive om ip'en er blokeret? Af koden (som jeg lige har sat sammen som overstående eks) er der bla. $tjek_tagwall = mysql_query("select * from tab1 order by id desc limit $liste,$antal_beskeder"); $tab2 = mysql_query("select ip from blokker where blok = ja"); tjek_ip = mysql_fetch_array($tab2); while ($retur_tagwall = mysql_fetch_array($tjek_tagwall)) { ?> <tr><td><? print("$retur_tagwall[id]") ?></td>><td><a href="<?=$PHP_SELF?>?blokker=ban&tagwall&id=<? print("$retur_tagwall[id]") ?>">Handling</a> <? if ($tjek_ip == $retur_tagwall[ip]) echo blokeret; ?> </td></tr> <? } Men det er vel for man skal bruge... eller? Argh! Help! :/
Annonceindlæg fra HP
17. januar 2004 - 23:57
#1
Du skal nok bruge en JOIN ;)
18. januar 2004 - 00:01
#2
:) Seriøst, kan det lade sig gøre at hente fra 2 tabeller?
Slettet bruger
18. januar 2004 - 00:03
#3
Ja
18. januar 2004 - 00:04
#4
... og jeg er bare ret forkert på den i mit eksempel? :)
Slettet bruger
18. januar 2004 - 00:05
#5
Ja, øjeblik, så får du et hint, der er lidt mere tydeligt, end det Erik kom med.
18. januar 2004 - 00:11
#6
okay
Slettet bruger
18. januar 2004 - 00:14
#7
SELECT t.tekst, t.navn, b.blok FROM tagwall as t LEFT JOIN bloklist as b ON t.ip=b.ip ORDER BY t.id DESC LIMIT $liste,$antal_beskeder
Slettet bruger
18. januar 2004 - 00:20
#8
Sagt på en anden måde, skal du bruge en query i stil med denne, og så får du automatisk opslaget fra begge tabeller på en gang.
18. januar 2004 - 00:25
#9
okay, men så er det da ikke muligt udskrive ip'erne - altså udfor ip'er der er blokeret skulle der gerne stå blokeret. Skal der så ikke efterfølgende bruges en if?
Slettet bruger
18. januar 2004 - 00:27
#10
Jo, du skal så bare skrive if ($retur_tagwall['blok']=='ja'){echo "blokeret";} Du skal lige rette til, sp der står de rigtige feltnavne i den SELECT
18. januar 2004 - 00:37
#11
den udskriver som før... bare uden at skrive blokeret :/
18. januar 2004 - 00:39
#12
SELECT t.tekst, t.navn, b.blok FROM tagwall as t LEFT JOIN bloklist as b ON t.ip=b.ip ORDER BY t.id DESC LIMIT $liste,$antal_beskeder Er det ikke t.ip=b.ip i tabellen skal den jo tjekke under blok - tjekke om det er ja eller nej
18. januar 2004 - 00:43
#13
eller hvad?
18. januar 2004 - 00:46
#14
Vis os lige hele koden :) (jeg troede du vidste hvad en join var, og blot skulle mindes om det.)
Slettet bruger
18. januar 2004 - 00:47
#15
Det lyder som om du har misforstået SQL-sproget, så her kommer lidt forklaring. SELECT = giv mig de her felter t.tekst, t.navn, b.blok FROM = fra de her tabeller tagwall as t Tabellen tagwall kalder vi lige t for at spare på tasterne LEFT JOIN og tagwall skal hænge sammen med bloklist as b bloklist, som vi kalder b ON t.ip=b.ip rækker i t passer sammen med rækker i b, hvor ip i begge har samme værdi ORDER BY t.id DESC LIMIT $liste,$antal_beskeder
18. januar 2004 - 00:53
#16
Jeg har ikke misforstået noget i denne sammenhæng. Det jeg blot glemte b.blok... Så nu virker det :)
18. januar 2004 - 00:55
#17
Point til sandbox... opretter du lige "svar"?
Slettet bruger
18. januar 2004 - 01:04
#18
Ja
Computerworld tilbyder specialiserede kurser i database-management