Avatar billede williamengbjerg Nybegynder
08. oktober 2004 - 22:57 Der er 19 kommentarer og
1 løsning

hot og not

Sider med et hot og not system jeg gerne vil lave. men ja har et lille problem det er når det er man har stemt på et billede en gang så skal den jo ikke vises mere for den brugere... noget nogen ved noget om :( det enste jeg gør er at whilde den ud jo...

if ($_GET['id'] != "")
{
$res = mysql_query("SELECT * FROM eng_hotnot WHERE id = '". $_GET['id'] ."'") or die();
}
else
{
$res = mysql_query("SELECT * , rand() as random FROM eng_hotnot WHERE godkend = '1' ORDER BY random LIMIT 0, 1") or die();
}
while ($row = mysql_fetch_array($res))
{
Avatar billede jakobsynder Nybegynder
08. oktober 2004 - 23:01 #1
Normalt fungerer det vist sådan, at man kun registrerer stemmer fra andre brugere der er logget ind. Hvis det også er sandt i dit tilfælde, har du vel også en brugertabel?
Så laver du en relation mellem din "hot or not"-tabel og din brugertabel, som angiver at brugeren allerede har stemt og kan ligeledes indeholde karakteren der blev givet.
Avatar billede williamengbjerg Nybegynder
08. oktober 2004 - 23:04 #2
yes men hvis en bruger alle rade har stemt skal den finde en ny... der jeg har problemet :( fordi hvis vi nu har 1000 pic i. og jeg fx har stemt på 900 og så den bare står og refrachere 800 gange :( så ville det være noget lort jo....
Avatar billede jakobsynder Nybegynder
08. oktober 2004 - 23:47 #3
Hej igen,

Du har helt ret - den problematik tænkte jeg ikke lige på. Den er lidt svær uden subqueries.

Jeg har lige testet lidt frem og tilbage, og det lader til at følgende virker:

SELECT *
FROM hot h
LEFT JOIN vote v ON v.hot_id = h.hot_id
RIGHT JOIN user u ON u.user_id = v.user_id
WHERE v.hot_id IS NULL
AND u.user_id = [dit userid feks fra session]

Jeg håber du er med på den.
Den henter fra hot tabellen (hotornot) sammenlignende med vote tabellen (relationen) _og_ sammenlignende med user tabellen (brugere) hvor hot_id'et skal være ikke-eksisterende i vote tabellen og user_id'et skal være det du angiver.
Avatar billede williamengbjerg Nybegynder
09. oktober 2004 - 00:06 #4
hmmm kan du lige prøve at lave coden :d hæ hæ det der forstod jeg ik lige pt maget af :S min code er

$res = mysql_query("SELECT * , rand() as random FROM eng_hotnot WHERE godkend = '1' ORDER BY random LIMIT 0, 1") or die();
while ($row = mysql_fetch_array($res))
{
}


eng_hotnot tablen
id  pic  info  username  vote  point  gennemsnit  kon  date  ip  godkend

id = unik
pic = billedet
info = text
username = var
vote = int
point = int
gennemsnit = dec ,2
kon = var
date = var
ip = var
godkend = int MAX 1 tegn


eng_hotnot_vote tablen
id  user  pic_user  vote  hotid  ip  date 

id = unik
user = var ( den bruger der stemmer )
vote = int ( de point man får )
hotid = int ( billede id fra eng_hotnot )
ip = var
date = var


håbe det hjælper dig :)
Avatar billede jakobsynder Nybegynder
09. oktober 2004 - 00:14 #5
SELECT h.id, h.pic, h.info, h.username
FROM eng_hotnot h
LEFT JOIN eng_hotnot_vote v
ON (v.hotid = h.id)
RIGHT JOIN [brugertabel] u
ON (u.[brugernavnfelt_i_brugertabel] = v.user)
WHERE v.hotid IS NULL
AND v.user = [session_brugernavn]

- Deromkring. De 3 ting i [ ] kan du udskifte med dine egne værdier.
Altså, navnet på brugertabellen, derefter navnet på feltet der indeholder brugernavnet i brugertabellen og til sidst brugernavnet du har i session.
Avatar billede williamengbjerg Nybegynder
09. oktober 2004 - 00:27 #6
nu ser den sådan her ud


    $res = mysql_query("SELECT h.id, h.pic, h.info, h.username
    FROM eng_hotnot h
    LEFT JOIN eng_hotnot_vote v
    ON (v.hotid = h.id)
    RIGHT JOIN eng_user u
    ON (u.username = v.user)
    WHERE v.hotid IS NULL
    AND v.user = '".$_SESSION['user']."'");

og det virker ikke helt :S
Avatar billede jakobsynder Nybegynder
09. oktober 2004 - 00:29 #7
Nej?

Får du fejl eller returnerer den noget forkert?
Avatar billede williamengbjerg Nybegynder
09. oktober 2004 - 00:31 #8
nej den viser bare intet :S
Avatar billede jakobsynder Nybegynder
09. oktober 2004 - 00:31 #9
aah hov, prøv lige at ændre sidste linie:

fra:
AND v.user = '".$_SESSION['user']."'");
til:
AND u.user = '".$_SESSION['user']."'");
Avatar billede williamengbjerg Nybegynder
09. oktober 2004 - 00:33 #10
nu fjelre den her    

while ($row = mysql_fetch_array($res))

:S
Avatar billede jakobsynder Nybegynder
09. oktober 2004 - 00:33 #11
Det var mig der skrev forkert i anden omgang.
Avatar billede williamengbjerg Nybegynder
09. oktober 2004 - 00:34 #12
det hed username isted for user :D tak nu virker det ;) du er bare dejlig :D smider du et svar :D
Avatar billede jakobsynder Nybegynder
09. oktober 2004 - 00:34 #13
Sæt lige en:

or die(mysql_error());

- efter dit query og paste beskeden her, sammen med den præcise sql du bruger nu.
Avatar billede jakobsynder Nybegynder
09. oktober 2004 - 00:35 #14
Ah, godt godt :-)

Hermed svar. Og selv tak!
Avatar billede williamengbjerg Nybegynder
09. oktober 2004 - 00:36 #15
hov der er lige et problem :S hvis man ikek er logget ind skal de også vælge et billede :) kan det klares hurtig ?
Avatar billede jakobsynder Nybegynder
09. oktober 2004 - 00:38 #16
Well, du kan vel bare lave et tjek på om de er logget ind, og så bruge et andet query?

if($_SESSION['user']) {
// kør det query der finder billeder som brugeren ikke har stemt på
} else {
// kør et andet query der bare vælger et tilfældigt billede
}

- Eller hvad?
Avatar billede williamengbjerg Nybegynder
09. oktober 2004 - 00:38 #17
ja du siger måske noget :d
Avatar billede williamengbjerg Nybegynder
09. oktober 2004 - 00:42 #18
hvis mappen nu er tom dvs hvis man ikek skal stemme igne :S hvad skal der så stå makkeR :)
Avatar billede jakobsynder Nybegynder
09. oktober 2004 - 00:46 #19
Du mener, hvis man allerede har stemt på alle der er?
Så kan du tjekke om der bliver returneret noget?

Du kan jo eksempelvis skrive:

if(mysql_fetch_array($res)) {
  // vis billede
} else {
  print "Vi beklager, du har allerede stemt på alle billeder.";
}

Eller hvad mener du?

PS. Tak for point.
Avatar billede williamengbjerg Nybegynder
09. oktober 2004 - 00:57 #20
var så lidt ;) 1000 takker for hjælpen :) tænket på om du hade msn :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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