Avatar billede runner19 Nybegynder
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! :/
Avatar billede erikjacobsen Ekspert
17. januar 2004 - 23:57 #1
Du skal nok bruge en JOIN ;)
Avatar billede runner19 Nybegynder
18. januar 2004 - 00:01 #2
:) Seriøst, kan det lade sig gøre at hente fra 2 tabeller?
Avatar billede Slettet bruger
18. januar 2004 - 00:03 #3
Ja
Avatar billede runner19 Nybegynder
18. januar 2004 - 00:04 #4
... og jeg er bare ret forkert på den i mit eksempel? :)
Avatar billede 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.
Avatar billede runner19 Nybegynder
18. januar 2004 - 00:11 #6
okay
Avatar billede 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
Avatar billede 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.
Avatar billede runner19 Nybegynder
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?
Avatar billede 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
Avatar billede runner19 Nybegynder
18. januar 2004 - 00:37 #11
den udskriver som før... bare uden at skrive blokeret :/
Avatar billede runner19 Nybegynder
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
Avatar billede runner19 Nybegynder
18. januar 2004 - 00:43 #13
eller hvad?
Avatar billede erikjacobsen Ekspert
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.)
Avatar billede 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
Avatar billede runner19 Nybegynder
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 :)
Avatar billede runner19 Nybegynder
18. januar 2004 - 00:55 #17
Point til sandbox... opretter du lige "svar"?
Avatar billede Slettet bruger
18. januar 2004 - 01:04 #18
Ja
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
Computerworld tilbyder specialiserede kurser i database-management

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