Gå til innhold

Vil ikke hente ut rad fra tabell i database (INNER JOIN)


Anbefalte innlegg

hei, jeg har sett over denne koden mange ganger, og prøvd all slaks mulig ting for og få den til og virke...

håper det er noen som ser feilen..

 

<?php
include_once('db_connect.php');
$sql = mysql_query ("SELECT * FROM bruker INNER JOIN private_m") or die ("Error in query: $sql".mysql_error()); 
while($row = mysql_fetch_array($sql)) {

$subejct = $row['private_m.subject'];
$to = $row['private_m.to'];
$brukerID = $row['bruker.brukerID'];

if ($to == $brukerID) {
echo "$subject";
} else {
echo "Du har ingen private meldinger";
}
}


?>

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

Kommer det noe feilmelding? Hvis ikke, er det muligens det at mysql_fetch_assoc() ikke returnerer tabell.felt, men bare felt. Derfor bør du, om do felter i de to forkjsellige tabellene er like, bruke AS, slik at mysql_fetch_assoc() returnerer alle feltene, hvis du skjønner?

Endret av Slettet+142
Lenke til kommentar
Gjest Slettet+142

"om do", skulle egentlig være "om to" :p

 

Okey. Da prøver jeg med et eksempel :)

 

<?php
include_once('db_connect.php');
$sql = mysql_query ("SELECT p.subject AS private_m_subject, p.to AS private_m_to, b.brukerID AS bruker_brukerID FROM bruker b INNER JOIN private_m p") or die ("Error in query: ".mysql_error());
while($row = mysql_fetch_array($sql)) {

$subejct = $row['private_m_subject'];
$to = $row['private_m_to'];
$brukerID = $row['bruker_brukerID'];

if ($to == $brukerID) {
echo "$subject";
} else {
echo "Du har ingen private meldinger";
}
}


?>

 

En annen ting som kan være feil, er jo det at INNER JOIN-tingen din ikke har noen krav for at bruker-raden som velges har noe spesifik relasjon til private_m-raden..

Endret av Slettet+142
Lenke til kommentar
Gjest Slettet+142

Da vil koden bli noe som dette, hvis jeg har forstått riktig:

 

<?php
include_once('db_connect.php');
$sql = mysql_query ("SELECT p.subject AS private_m_subject, p.to AS private_m_to, b.brukerID AS bruker_brukerID FROM bruker b INNER JOIN private_m p ON b.brukerID=p.to") or die ("Error in query: ".mysql_error());
while($row = mysql_fetch_array($sql)) {

$subejct = $row['private_m_subject'];
$to = $row['private_m_to'];
$brukerID = $row['bruker_brukerID'];

if ($to == $brukerID) {
echo "$subject";
} else {
echo "Du har ingen private meldinger";
}
}


?>

Lenke til kommentar
Gjest Slettet+142

Ja du sier noe der.. Det kan være at brukeren ikke har noen meldinger i innboksen, at jeg har gjort feil(feil i kode, misforstått), eller at du har gitt meg feile opplysninger.

 

Prøver uansett igjen under:

<?php
include_once('db_connect.php');

$brukerID = mysql_real_escape_string($_SESSION["brukerID"]); // Fiks denne til riktig session-variabel

$sql = mysql_query ("SELECT p.subject AS private_m_subject, p.to AS private_m_to, b.brukerID AS bruker_brukerID FROM bruker b INNER JOIN private_m p ON b.brukerID=p.to WHERE b.brukerID='{$brukerID}'") or die ("Error in query: ".mysql_error());
while($row = mysql_fetch_array($sql)) {

$subejct = $row['private_m_subject'];
$to = $row['private_m_to'];
$brukerID = $row['bruker_brukerID'];

if ($to == $brukerID) {
echo "$subject";
} else {
echo "Du har ingen private meldinger";
}
}


?>

Lenke til kommentar

Slik ser scriptet som skjekker om brukernavn og passord finnes i databasen, og det er her jeg setter verdien i session, men jeg vet ikke helt om det er rett eller om det slik man gjør det..

 

Klikk for å se/fjerne innholdet nedenfor
<?php
// we must never forget to start the session
session_start();

if (isset($_POST['usrname']) && isset($_POST['psword'])) {
include_once('db_connect.php');

  $usrname = $_POST['usrname'];
  $password = $_POST['psword'];

  // check if the user id and password combination exist in database
  $sql = "SELECT * FROM bruker WHERE brukernavn = '$usrname' AND passord = '$password'";


  $result = mysql_query($sql)
		 or die('Query failed. ' . mysql_error());
while($row = mysql_fetch_array($result)){
$userlevel = $row['userlvl'];
$level = '2';
$brukerID = $row['brukerID'];

if ($userlevel == $level) {
  $_SESSION[$brukerID] = true;
  header('Location: admin.php');
  exit;
} else {
echo "You dont have the supirior level to enter this site.";
}
}
}
?>

 

EDIT: Har endret litt på koden, men den funker ikke enda

EDITII: Nå tror jeg har funnet problemet, scriptet som skjekker om brukernavn og passord er rett, setter ikke ny session variabel, jeg har prøvd og kjøre "echo $_SESSION[brukerID];" men den skriver ikke ut noe.

Og da vet jeg ikke hva problemet er, scriptet ovenfor skal da funke,..

Endret av Famen
Lenke til kommentar

Fikk det til!! det var skrive feil som gjorde at koden ikke printet ut noe, men jeg får fremdeles ikke session til!, kanskje jeg skal bruke cookies? (aner ikke hvordan)

 

Her er koden som nesten funker.

 <?php
session_start();
include_once('db_connect.php');
$sql = mysql_query ("SELECT p.subject AS private_m_subject, p.to AS private_m_to, b.brukerID AS bruker_brukerID FROM bruker b INNER JOIN private_m p ON b.brukerID=p.to") or die ("Error in query: ".mysql_error());
while($row = mysql_fetch_array($sql)) {

$subject = $row['private_m_subject'];
$to = $row['private_m_to'];
$brukerID = mysql_real_escape_string($_SESSION['brukerID']); // Fiks denne til riktig session-variabel

if ($to == $brukerID) {
echo "$subject";
} else {
echo "Du har ingen private meldinger";
}
}


?>

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...