Oprettet fre. d. 17. august 2012 kl. 14:31:17

rix17172
rix17172 (5.165 point. Point ude: 0)

Mysqli søg i to tabeler

Hej

hvis man nu har to tabeler (lille eks.

medlem
id|brugernavn|password

gruppe
brugerid|gruppenavn

hvis man så ville lave f.eks en liste over medelemmer og ville sammentidig have brugerens grupper vist findes der en fiks metode til det eller skal jeg først finde alle brugerne og så søge efter grupperne ??

Skrevet fre. d. 17. august 2012 kl. 14:48:42| #1

claes57
claes57 (36.616 point)
du skal fra starten lave tabeller bedre - i 3:
medlem
m_id|brugernavn|password

gruppe
g_id|gruppenavn

gruppemedlem
id|m_id|g_id

Skrevet fre. d. 17. august 2012 kl. 15:37:49| #2

rix17172
rix17172 (5.165 point)
Hej claes57

Det var kun en nem eksempel min tabel er noget alá
member
id|user|pass|email|

member_group
u_id|ansog_id|com_id

ansog
id|name| osv.

Skrevet fre. d. 17. august 2012 kl. 16:41:07| #3

olebole
olebole (216.743 point)
<ole>

#2: Det er, såvidt jeg kan se, en tilgang, der er ret forskellig fra claes57's. Det kommer lidt an på, hvad meningen med tabellerne er - og hvad de indeholder.

Tabellen 'gruppemedlem' i Claes' eksempel bruges kun til at relatere de to andre tabeller. Den skal ikke indeholde egentlige data

/mvh
</bole>

Skrevet fre. d. 17. august 2012 kl. 17:13:08| #4

Christian_Belgien
Christian_Belgien (50.883 point)
rix17172, drejer spørgsmålet sig simpelt hen om hvordan man joiner to tabeller (uanset hvad nu indholdet i tabellerne måtte være?)  I så tilfælde, hvis du med dine to tabeller (der som allerede nævnt ikke er stillet ideelt op, men det var ikke dit spørgsmål i denne omgang) vil have alle medlemmer med id, brugernavn, password, og gruppe, så kan det gøres, for eksempel, således:

SELECT medlem.id, medlem.brugernavn, medlem.password, gruppe.gruppenavn
FROM medlem
JOIN gruppe ON medlem.id = gruppe.brugerid

Som allerede antydet bør kikke videre på hvordan man strukturerer relationelle databaser.  Der er masser af tutorials på nettet og hjælp (til selvhjælp) at hente her på forummet.

Skrevet fre. d. 17. august 2012 kl. 17:23:44| #5

olebole
olebole (216.743 point)
- og så skal du huske at bruge passende foreign keys, så dine søgninger på tværs af tabeller er indekseret

Skrevet fre. d. 17. august 2012 kl. 23:28:13| #6

rix17172
rix17172 (5.165 point)
Der er en ting jeg ikke forstår.

u_id|ansog_id|com_id

u_id er bruger id.

ansog_id er en af de ansøgnings mugligheders id som man skal have tilladese til at se

com_id er hvilken del af ansognings muglihed man skal have tilladelse til.


ansog
er alt data omkring ansognings mugligheder.

member
er alt data omkring brugeren. id password osv.

så member_group bruges udelukkende til at finde ud af hvad brugeren har adgang til og hvad han ikke har adgang til.

Skrevet lør. d. 18. august 2012 kl. 07:09:47| #7

Christian_Belgien
Christian_Belgien (50.883 point)
rix17172, lad os antage, at du har tre members, Jens, Hans, og Sven.  Samtidig har du tre ansøgningstyper, Ansøgning1, Ansøgning2, og Ansøgning3.  Jens skal kunne se alle tre typer, Hans type 1 og 2, og Sven type2.  Det kan du vise i den følgende tabel:

Jens Ansøgning1
Jens Ansøgning2
Hans Ansøgning1
Sven Ansøgning2
Hans Ansøgning2
Jens Ansøgning3

Men hvis du nu har hundrede members og tyve ansøgningstyper, så ville du hurtigt tabe overblikket med en tabel som ovenstående.  Når man skal holde styr på en mange-til-mange relation, hvordan for eksempel mange ansøgningstyper relaterer til mange personer, så laver man en tabel for members, en tabel for ansøgningstyper, og en tabel for relationen derimellem.  Her er et simpelt eksempel med ovenstående data. 

member
id navn
1 Jens
2 Hans
3 Sven

ansøg
id navn
1 Ansøgning1
2 Ansøgning2
3 Ansøgning3

member_ansøg
u_id ansog_id
1      1
1      2
1      3
2      1
2      2
3      2

Her kan du, og et database-system, nemt se, at member1 har ansøg 1, 2, og 3, member 2 har ansøg 1 og 2, og member3 har ansøg 3.

Hvis du så, for eksempel, vil se navnene på de members der har adgang til ansøgningstype 1 kan du forespørge således:

SELECT navn
FROM member
JOIN member_ansøg ON member.id = member_ansøg.m_id
JOIN ansøg ON member_ansøg = ansøg.id
WHERE ansøg.navn = 'Ansøgning1'

Resultatet af den forespørgsel vil være:
Jens
Hans

I #2 viser du ud over u_id og ansog_id også com_id.  Det kunne tyde på, at du har en tredje tabel som du ikke viser.

(Dette eksempel er ment udelukkende som et 'starter' eksempel.  Hvis du skal sætte en funktionerende database op skal du, som der er gjort opmærksomt på, også lære om indeksering og andre ting.)

Skrevet man. d. 20. august 2012 kl. 16:43:26| #8

rix17172
rix17172 (5.165 point)
hej sry jeg ikke har svaret men travlt weekend :)

Nej com_id er en form for hvor meget man har lov til at se.
den kan kun være 1 eller 2.
1 betyder at man kun har adgang til det mest nødvændige. og 2 betyder alt. en bruger kan ikke have 1 og 2 sammentidig så derfor har jeg valgt det på denne måde.

Jeg tror hellere ikke i har forstået hvordan jeg har sat det op.

jeg har 3 tabler.

en table med data omkring brugeren.

en table med ansøgnings data.

og en table med tilladelser.

tablen kunne som i selv siger kun indeholde 2 felter nemlig
bruger_id|ansøgnings_id.

jeg har vaglt da jeg havde en behov for at gøre en person som leder for en enkelt ansønging at lave en 3 felt nemlig com_id.

og der skul kun være 1 tal i nemlig 1 eller 2 1 er nomal bruger.
der er føglende mugligheder.
1 se ansøgning.
2 skriv en post i intern dialog.
3. stemme om optagelse.
4. skriv en post i ekstern dialog med brugeren.

2 (leder) skal have de samme rettigheder som tallet 1 og
1. ændre data for ansøgningen
2. oprette en ny ansøgning.
3. tilføjere og fjerne medlemmer.
4. acceptere ny medlem.

Skrevet ons. d. 22. august 2012 kl. 17:19:42| #9

Christian_Belgien
Christian_Belgien (50.883 point)
Jeg reagerer fra mit feriested i Egypten, fra en internetcafe med meget begraenset funktionaliget.  Du bekraefter, hvad jeg formodede fra dit indlaeg #6 og sagde i mit #7, at du har tre tabeller.  Men det staar mig ikke klart hvad det er for et problem d soeger hjaelp til.  Hvad er problemet?

Skrevet ons. d. 22. august 2012 kl. 18:10:32| #10

olebole
olebole (216.743 point)
@Christian: Jeg er sikker på, den samlede danske underverden takker behørigt for dén oplysning  *o)

Skrevet søn. d. 26. august 2012 kl. 04:34:16| #11

arne_v
arne_v (1.048.778 point)
Mener du at de vil koere til Belgien for at begaa indbrud?

Skrevet søn. d. 26. august 2012 kl. 13:35:41| #12

olebole
olebole (216.743 point)
@Arne: Nu har vores tidligere håndbold-es Janne Kolding jo boet og spillet mange andre steder end lige i Kolding - men det kan selvfølgelig være, du ved noget, jeg ikke ved  =)

Skrevet søn. d. 26. august 2012 kl. 15:50:59| #13

arne_v
arne_v (1.048.778 point)
Christian har ved forskellige lejligheder givet udtryk for at han bor i Belgien.

Skrevet søn. d. 26. august 2012 kl. 16:09:16| #14

olebole
olebole (216.743 point)
Okay, den var så glippet for mig. Så har du nok ret i, at der ikke er den store risiko for at invitere til indbrud her  =)

Skrevet tir. d. 28. august 2012 kl. 05:30:53| #15

Christian_Belgien
Christian_Belgien (50.883 point)
rix17172, med hensyn til DIT spørgsmål, så giv genlyd.  Hvis spørgsmålet ikke længere er aktuelt, så luk det venligst igen.  Hvis det stadig er aktuelt, så kom ind og forklar (eftersom mine tidligere indlæg åbenbart ikke ramte det) hvad det er for et problem du prøver at løse, hvad det er du vil opnå men ikke kan.

Skrevet ons. d. 29. august 2012 kl. 12:59:31| #16

rix17172
rix17172 (5.165 point)
Christian_Belgien.
Grunden til jeg ikke helt har svaret er fordi jeg har leget med din eks. i #4 som jeg lige har fået til at virke.
Mnage tak hvis du ville have poit så lig en svar :)

Skrevet ons. d. 29. august 2012 kl. 13:35:26| #17


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

ZF2 Entity was not found

Oprettet den 23. maj 2013 kl. 12.51
zorkmontana giver 60 point for svar | Giv et svar »

hjælp til php / mysql

Oprettet den 23. maj 2013 kl. 10.54
AOT1977 giver 30 point for svar | Giv et svar »

Hjælp til database kolonne

Oprettet den 22. maj 2013 kl. 17.44
StotheT giver 30 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Fem smarte funktioner i din Mac som du sikkert ikke kender

Her har du fem muligheder for at tweake din Mac på en fed måde.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Ny opfindelse: Oplad din mobil på 20 sekunder

Måske er det snart slut med at lade mobilen op hver aften. Med ny opfindelse kan telefonen få fuld energi på sølle 20 sekunder.


Nyheder fra Computerworld

Teaser billede

Galleri: De 10 vildeste datacentre i verden

I en gammel kirke, i et oppusteligt telt, på nedlagte militæranlæg eller midt i ørkenen. Der er ingen grænser for, hvor man kan banke et datacenter op. Her er de 10 sejeste anlæg i verden. I...


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger