Avatar billede brianmilan Juniormester
09. juli 2007 - 11:45 Der er 4 kommentarer og
1 løsning

Vis bestemte data til forskellige brugere.

Hej,

Jeg har et lille problem, jeg har en database, hvor jeg godt kunne tænke mig at vise forskellige omlysninger, alt efter hvilken bruger der logger ind, jeg har fået den til at tjekke på hvem brugeren er, da jeg har et felt - admin - i min database der fortæller hvor meget brugeren må se, f.eks. 1, 2 eller 3, brugere med 3 i admin feltet må kun se alle VHS film hvor brugere med 1 i admin feltet må se både VHS og DVD film.. Nu kommer mit problem.. Når jeg logger ind som en bruger med 3 i admin feltet hvor jeg kun må se VHS film, viser den mig også alle DVD filmene, men der tæller rigtigt nok op f.eks. har jeg lavet det sådan at den foroven skriver "Der er fundet x antal VHS film"

Ved i hvorfor den også tager mine DVD film med i visningen?

Hilsen Brian

Jeg har sat min kode med i :o)

***************************************************************
<?php
echo '<table id="Table_Backcolor" width="790" border="2" align="center" cellpadding="6" cellspacing="0">
<tr align="center" valign="top">
  <td id="td_1" align="left">
    <table id="table_1">';

if( isset($_GET['kategori']) ) {
      display_film($_GET['kategori']);
} else
  echo "Kategori findes ikke";
 
  echo '</table>
  </td>
</tr>
</table>
<br>';

//********************************************************************

function display_kategori($cat) {
  $sql = "SELECT kategori FROM alle_dvd_film WHERE kategori LIKE '%$cat%'";
  if( $_SESSION['admin']==3 )
    $sql .= " AND VHS_DVD LIKE 'VHS'";

  $rows = mysql_query($sql);
  $antal_poster = mysql_num_rows($rows);
  if( $antal_poster > 0 )
    echo "I kategorien $cat er der fundet $antal_poster film:<br><br>";
  else
    echo "Der er desværre ingen film i kategorien $cat.";
}

//*************************** Viser Film ***************************
function display_film($cat) {
  display_kategori($cat);
  $sql = "SELECT * FROM alle_dvd_film WHERE Kategori LIKE '%$cat%' ORDER BY Original_Titel";
  if( $_SESSION['admin']==3 )
    $sql .= " AND VHS_DVD LIKE 'VHS'";
  $query = mysql_query($sql);
  while( $row=mysql_fetch_array($query) )
    echo "<tr><td><a href=\"../DVD_Film.php?dvd_film_ID=$row[0]\">$row[0]</a></td><td width=\"520\">$row[1]</td></tr>";
}
?>
Avatar billede nemlig Professor
09. juli 2007 - 14:21 #1
Du sætter variablen $sql i 2 linjer, hvis Admin=3
Så er sql-sætningen:

SELECT * FROM alle_dvd_film WHERE Kategori LIKE '%$cat%' ORDER BY Original_Titel AND VHS_DVD LIKE 'VHS'

Jeg vil mene, at den korrekte sætning er :
SELECT * FROM alle_dvd_film WHERE Kategori LIKE '%$cat%' AND VHS_DVD LIKE 'VHS' ORDER BY Original_Titel

Derfor vil mit forslag være, at du retter:
if( $_SESSION['admin']==3 )
    $sql .= " AND VHS_DVD LIKE 'VHS'";

til

if( $_SESSION['admin']==3 )
$sql = "SELECT * FROM alle_dvd_film WHERE Kategori LIKE '%$cat%' AND VHS_DVD LIKE 'VHS' ORDER BY Original_Titel";

Mangler du ikke nogle { og } i If-sætningerne.
Avatar billede jakobdo Ekspert
09. juli 2007 - 14:37 #2
Du kunne også trække alle data ud og så i din præsentation af data lave:

if($_SESSION['admin'] == 3)
{
//Data som kun brugere der har admin = 3 skal se...
}
if($_SESSION['admin'] == 2)
{
//Data som kun brugere der har admin = 2 skal se...
}

//Data som alle brugere skal se...
Avatar billede brianmilan Juniormester
10. juli 2007 - 08:24 #3
Nu virker det "Nemlig", jeg byttede lige om så IF sætningen kommer før SQL sætningen, og så virker det :o) kunne jeg få dig til at lægge et svar?
Avatar billede nemlig Professor
10. juli 2007 - 10:11 #4
Godt det nu virker.
Avatar billede brianmilan Juniormester
10. juli 2007 - 10:28 #5
Tak for hjælpen :-)
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