08. oktober 2004 - 22:57Der 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)) {
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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.
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....
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.
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
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.
$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']."'");
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 }
var så lidt ;) 1000 takker for hjælpen :) tænket på om du hade msn :)
Synes godt om
Ny brugerNybegynder
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.