Avatar billede scaniav8 Nybegynder
06. juli 2005 - 01:30 Der er 14 kommentarer og
1 løsning

Der skal KUN vises private beskeder.

$br = mysql_query("SELECT * FROM brugersystem WHERE Brugernavn = '$_SESSION[Brugernavn]'");
$bruger = mysql_fetch_array($br);

$rest = mysql_query("SELECT * FROM textsystem WHERE rum = '$bruger[rum]' && timee > $_SESSION[roomtxt] && privat = 0  OR  privat = 1 AND tilbruger = $bruger[id] ORDER BY id DESC LIMIT 30");
while($rowt = mysql_fetch_array($rest)){

Denne kode viser kun private beskeder til den person som de er sendt til, men uheldigvis viser den det i ALLE de rum man er i, og de forsvinder ikke når "timee" er udløbet..!
Avatar billede jaw Nybegynder
06. juli 2005 - 01:34 #1
Det første jeg lige ville prøve, var at indsætte nogen paranteser, for måske MySQL misforstår din hensigt lidt. Jeg har forsøgt:

$rest = mysql_query("SELECT * FROM textsystem WHERE (rum = '$bruger[rum]'( AND (timee > $_SESSION[roomtxt]) AND (privat = 0  OR  privat = 1) AND (tilbruger = $bruger[id]) ORDER BY id DESC LIMIT 30");

Måske ikke rigtig, så check dem lige.

Og forresten kunne du nok have forsvaret at tilføje dette til dit tidligere spørgsmål, der misforstod jeg dig - beklager...
Avatar billede scaniav8 Nybegynder
06. juli 2005 - 01:36 #2
Okay :P

Nu viser den slet ingenting :S
Avatar billede jaw Nybegynder
06. juli 2005 - 01:38 #3
Så er de jo måske nok sat forkert :) Du har set, at jeg vendte den ene forkert, ik?
Avatar billede scaniav8 Nybegynder
06. juli 2005 - 01:38 #4
$rest = mysql_query("SELECT * FROM textsystem WHERE ( rum = '$bruger[rum]' AND timee > $_SESSION[roomtxt] AND privat = 0 ) OR ( privat = 1 AND tilbruger = $bruger[id] ) ORDER BY id DESC LIMIT 30");


Jeg lavede den sådan, men har stadigvæk samme problem som før:
[quote]
Denne kode viser kun private beskeder til den person som de er sendt til, men uheldigvis viser den det i ALLE de rum man er i, og de forsvinder ikke når "timee" er udløbet..!
[/quote]
Avatar billede jaw Nybegynder
06. juli 2005 - 01:41 #5
Ja, men de paranteser vil jeg også vove at påstå er forkerte...

Men hvis brugeren er i flere rum, hvad indeholder $bruger['rum'] så?
Avatar billede scaniav8 Nybegynder
06. juli 2005 - 01:42 #6
Brugeren kan kun være i 1 rum..!
Vælger han så at skifter, så bliver rum id ændret til 2 eller 3, alt efter hvad id rummet har..!
Avatar billede jaw Nybegynder
06. juli 2005 - 01:43 #7
Citat: "uheldigvis viser den det i ALLE de rum man er i" <- hvad mener du så med det, hvis man kun kan være i 1 rum?
Avatar billede scaniav8 Nybegynder
06. juli 2005 - 01:47 #8
Jo hvis du er i rum id 3 og skriver en privat besked, og går til rum id 4 så viser den private beskeder der :P og alle andre rum end rum id 3
Avatar billede jaw Nybegynder
06. juli 2005 - 01:53 #9
Hm, så prøv lige at få den udskrevet for at se, om de variabler du sender nu også er de rigtige:

echo "SELECT * FROM textsystem WHERE ( rum = '$bruger[rum]' AND timee > $_SESSION[roomtxt] AND privat = 0 ) OR ( privat = 1 AND tilbruger = $bruger[id] ) ORDER BY id DESC LIMIT 30");
Avatar billede scaniav8 Nybegynder
06. juli 2005 - 02:00 #10
echo "SELECT * FROM textsystem WHERE ( rum = '$bruger[rum]' AND timee > $_SESSION[roomtxt] AND privat = '0' ) OR ( privat = '1' AND tilbruger = '$bruger[id]' ) ORDER BY id DESC LIMIT 30");

giver resultatet:


Parse error: parse error, expecting `','' or `';'' in c:\apache\htdocs\websitev2\v2\chat3\upd.php on line 10

Men hvor skulle den pase error være? :S
Avatar billede jaw Nybegynder
06. juli 2005 - 02:02 #11
Nok den sidste afsluttende parantes der giver dig problemer:
echo "SELECT * FROM textsystem WHERE ( rum = '$bruger[rum]' AND timee > $_SESSION[roomtxt] AND privat = '0' ) OR ( privat = '1' AND tilbruger = '$bruger[id]' ) ORDER BY id DESC LIMIT 30";
Avatar billede scaniav8 Nybegynder
06. juli 2005 - 02:06 #12
SELECT * FROM textsystem WHERE ( rum = '3' AND timee > 1120606021 AND privat = '0' ) OR ( privat = '1' AND tilbruger = '1' ) ORDER BY id DESC LIMIT 30

Det får jeg nu, men den skriver stadigvæk de private beskeder i alle rum jeg er i :(
Avatar billede scaniav8 Nybegynder
06. juli 2005 - 02:07 #13
Jeg fik det til at virke, gjorde sådan:

$rest = mysql_query("SELECT * FROM textsystem WHERE ( rum = '$bruger[rum]' AND timee > $_SESSION[roomtxt] AND privat = '0' ) OR ( privat = '1' AND tilbruger = '$bruger[id]' AND rum = '$bruger[rum]' AND timee > $_SESSION[roomtxt] ) ORDER BY id DESC LIMIT 30");

skulle huske at gøre det samme ved privat = 1 :P
Avatar billede scaniav8 Nybegynder
06. juli 2005 - 02:07 #14
Men tak for din hjælp :) godnat :)
Avatar billede jaw Nybegynder
06. juli 2005 - 02:09 #15
Ok, så er variablerne jo nok gode nok. Så er det et spørgsmål om dine paranteser, det må det være.

SELECT * FROM textsystem WHERE (rum = '3') AND (timee > 1120606021) AND (privat = '0' OR privat = '1') AND (tilbruger = '1') ORDER BY id DESC LIMIT 30

Men hvis du så skifter rum, og så prøver at udskrive den igen, får du så WHERE rum = '3' eller WHERE rum = 'rigtige-rum' ?
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