Php - Nyhedssystem med bruger login

Tags:    php login news nyhedssystem

Heej alle

Jeg har brug for noget hjælp.
Jeg har lavet et login system og nyheds system, hvor brugeren kan logge ind og skrive en nyhed. Det virker også helt fint, men jeg kan ikke få den til ligge 'username' fra 'User' over i 'user_name' i 'News'.

Er der nogen der kan forklare mig hvordan man kan gøre dette?

Min mysql database ser sådan her ud:

--- News ---
id
overskrift
user_name
besked
dato

--- User ---
id
fullname
email
username
password
date
ip

--- index.php ---
http://pastebin.com/wJvymERN

--- news.php ---
http://pastebin.com/GZRiEmqg

--- includes/header.php ---
http://pastebin.com/6eAfhK6H



31 svar postet i denne tråd vises herunder
15 indlæg har modtaget i alt 34 karma
Sorter efter stemmer Sorter efter dato
Du kan gemme det id på 'brugeren', som du har i dit table news, også benytte dette til at hente den korrekte bruger, f.eks.
Fold kodeboks ind/udPHP kode 




Hvis du benytter MySQL vil det være åndsvagt ikke at benytte den mulighed at lave relationer imellem tabellerne.

Du kan f.eks. til hver nyhed lave en relation til den bruger som har skrevet nyheden, dine to tabeller kunne så f.eks. laves således:

--- News ---
id (P)
overskrift
besked
dato
user_id (F)

--- Users ---
id (P)
fullname
email
username
password
dato
ip

Hvor (P) er primær nøglen og (F) er fremmed nøglen. Relationen kan laves i SQL således
Fold kodeboks ind/udSQL kode 

Nu har du en reference i din SQL, og kan på denne måde hver gang du laver en nyhed i dit PHP script, så huske at gemme ID'et på den bruger som har lavet nyheden, i user_id feltet. Derefter kan du altid når du henter nyheden vide hvilken bruger der har referencen til nyheden.



Indlæg senest redigeret d. 09.06.2011 17:48 af Bruger #4487
Du kan med en relationel database 'joine' to tabeller og herved få vist begge data, der hvor der findes en relation. Dette gøres f.eks. med følgende statement.
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 09.06.2011 22:13 af Bruger #4487
mhh, jeg er lidt træt nu, så kan ikke rigtigt fokuserer på at 'finde' fejlen, eller prøve på det i hvertfald, så vender lige tilbage i morgen med friske øjne, eller måske er der en anden herinde, som kan hjælpe dig lidt videre her på de sene nattetimer :)



Jamen når du benytter en relationel database som har relationer som jeg bl.a. viste i mit første indlæg, så behøver du ikke gemme username i news, da vi bare gemmer en 'henvisning' til brugeren i users tabellen i stedet.

Med hensyn til statementet i mit andet indlæg, så er SQL koden sådan her opdelt.

Fold kodeboks ind/udSQL kode 

Dette betyder at vi altså henter alt fra de to tabeller news og users, og vi henter kun de brugere, som allerede har en relation til en nyhed. Du kan altså her nemt hente brugerens brugernavn ved at finde det i de data du får ud af forespørgslen.

Med hensyn til at dine brugere skal kunne lave nyheder, så når du laver en ny nyhed, så benytter du bare følgende SQL til at indsætte
Fold kodeboks ind/udSQL kode 

user ID er selvfølgelig brugerens uniqe ID, som du nemt kan hente ind i en session, når brugeren logger på dit system.



Indlæg senest redigeret d. 09.06.2011 23:02 af Bruger #4487
user id'et er kun en henvisning til den bruger som har dette id. Så hvis jeg har en bruger i dit system, og har fået tildelt ID nummer 10, så hver gang jeg laver en nyhed, vil din i nyheds tabellen gemme ID 10 i feltet user ID, fordi min brugers user ID er 10. Du kan så når du gerne vil vise brugernavnet f.eks. benytte brugerens id til at finde den korrekte bruger.



Du kunne formentlig sige dette.
Fold kodeboks ind/udPHP kode 




Og du har ændret tabellerne, til som jeg skrev i starten?



Men du skal også ændre dine database tabeller, ellers fungerer det ikke



news tabel skal benytte en foreign key med user ID, som har en reference til user tabellens ID.
Foreign Keys laves i SQL ved at skrive - FOREIGN KEY (felt) REFERENCES tabel(felt)



Indlæg senest redigeret d. 09.06.2011 23:45 af Bruger #4487
t