ZoRaC Skrevet 5. august 2007 Del Skrevet 5. august 2007 Har en database med noen tabeller for styring av tilgang på nettsiden. Nå skal jeg lage en side som lister ut alle brukere og hvilken tilgang de har, men jeg vet ikke helt hvordan jeg skal gå frem. Har kommet på en løsning, men den virker tungvindt og krever en spørring for hver bruker, noe som sikkert ikke er nødvendig? Bruker: BRUID (PRI, auto_inc) Navn TilgangsTyper: tilgangsID (PRI, auto_inc) tilgangsNavn TilgangsRelasjon: relID (PRI, auto_inc) BRUID (fremmednøkkel mot Bruker.BRUID) tilgangID (fremmednøkkel mot TilgangsTyper.tilgangsNavn) Jeg vil ha en slik liste: Bruker - Full-tilgang - Nyheter - Kalender - osv zorac - ja - nei - ja - osv ola - nei - nei - ja - osv Hvordan kan jeg best løse dette? Det er også et poeng at jeg i tabellen "TilgangsTyper" kan legge til en ny type og få den med automatisk... Håper noen kan lede meg på rett vei, for foreløpig har jeg bare gjort masse tungvindt og unødvendige greier! Lenke til kommentar
Gjest Slettet+142 Skrevet 5. august 2007 Del Skrevet 5. august 2007 (endret) Tror ikke dette kan løses med en enkel sql. Men her har du mitt forsøk; $q = mysql_query("SELECT b.navn, b.BRUID, t.tilgangID FROM Bruker b INNER JOIN TilgangsRelasjoner t ON b.BRUID=t.BRUID"); if(!$q || mysql_num_rows($q) < 1) die("Feil.. ".mysql_error()); while($r = mysql_fetch_assoc($q)){ $t_id = $r["tilgangID"]; $b_id = $r["BRUID"]; $navn = $r["navn"]; $output_streng = $navn; $q2 = mysql_query("SELECT tilgangsNavn FROM TilgangsTyper WHERE tilgangsID={$t_id}"); if( mysql_num_rows($q2) < 1) $output_streng .= " - Ingen Tilgang"; else{ while($r2 = mysql_fetch_assoc($q2)){ $tilgang = $r["tilgangsNavn"]; $output_streng .= " - " . $tilgang; } // while(query_$q2) }//if(num_$q2) echo $output_streng . "<br>\n"; } // while(query_$q) EDIT: når jeg ser over begge postene... Har jeg misforstått oppsettet, kanskje? Endret 5. august 2007 av Slettet+142 Lenke til kommentar
ZoRaC Skrevet 5. august 2007 Forfatter Del Skrevet 5. august 2007 Fant akkurat en løsning selv! // Hent ut alle tilgangstyper $query = "SELECT tilgangsNavn FROM TilgangTyper ORDER BY tilgangID"; $result = $this->db_query($query, $conSys); // Skriv ut alle tilgangstyper som overskrift echo "<table width=50%><tr><td><b>Navn</b></td>"; while ($row = $this->db_fetch_array($result)) { echo "<td><b>".$row['tilgangsNavn']."</b></td>"; $alleTilganger[] = $row['tilgangsNavn']; } echo "</tr>"; // Hent tilganger til brukerne $query = "SELECT Bruker.BRUID, Bruker.Navn, TilgangTyper.tilgangsNavn FROM Bruker INNER JOIN (TilgangTyper INNER JOIN TilgangRelasjon ON TilgangTyper.tilgangID = TilgangRelasjon.tilgangID) ON Bruker.BRUID = TilgangRelasjon.BRUID"; $result = $this->db_query($query, $conSys); $brukerID = array(); while ($row = $this->db_fetch_array($result)) { // Hvis det ikke er lagret noe om denne brukeren enda, legg til i array if (!in_array($row['BRUID'], $brukerID)) { $brukerID[] = $row['BRUID']; $tilgang[$row['BRUID']]['Navn'] = $row['Navn']; } // Lagre tilgang i array $tilgang[$row['BRUID']]['tilgang'][$row['tilgangsNavn']] = true; } // Loop igjennom alle brukere foreach ($brukerID as $key => $value) { $bruID = $value; echo "<tr><td>".$tilgang[$bruID]['Navn']."</td>"; // Loop igjennom alle tilganger som finnes foreach ($alleTilganger as $key2 => $value2) { echo "<td>"; // Hvis denne brukeren har denne tilgangen - JA! if ($tilgang[$bruID]['tilgang'][$value2]) echo "JA"; else echo "NEI"; echo "</td>"; } echo "</td>"; } echo "</table>"; Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå