Permalänk
Medlem

Nybörjarhjälp, PHP & MySQL

Halloj!

Jag har precis börjat lära mig PHP & MySQL, varav jag inte verkar ha några som helst större problem med. Har precis lärt mig fixa en inloggningsfunktion, men de två guider jag sett på skiljer sig ju en hel del eftersom den ena "jobbar med" cookies och den andra med session-grejs (länkar: guide 1, session-blaha, guide 2, cookies). Har dock alltid fått intrycket av att designskolan är typ sämst i världen på allt, men det kanske är ren inbillning? Så, om någon som är mer profesionell än mig skulle tycka till om vilken av dessa som är bäst, berätta det mer än gärna!

Sen har jag ett annat problem, jag har börjat skapa ett litet test-community "bara för att leka", ungefär. Det är verkligen ingenting avancerat, utan det är typ funktioner som att kunna logga in, ha en profilinformationssida som man kan redigera, kolla andras profiler, posta bilder som man kan ge poäng, och sådana saker. Problemet är det att jag inte hittar några bra guider eller tips om bra sätt att "länka ihop" alla dessa tabeller (vet nog bara inte vad jag ska googla på)!
Jag menar, visst bör man inte lägga allting i samma tabell, utan ha separata för medlemmars inloggningsinfo, deras profiler, och så vidare?

Mycket tacksam för snabba svar! Jag litar på er Sweclockers!

Om jag skulle komma på någonting mer i min nybörjarglädje (eller ilska?) så skriver jag det.

Visa signatur
Permalänk
Medlem

jag rekomenderar sessions, eftersom cookies lagras i klienten: PHP: Registering a variable with $_SESSION. - Manual

du kan läsa om skillnaden här: Cookies vs. Sessions | Practical PHP Programming | TuxRadar Linux

Permalänk

En databas till en sådan sida du planerar att göra, kan se ut på hur många som helst. Satsa på en snygg struktur som förenklar kodandet. Detta gör du för att göra så få läsningar från databasen som möjligt.

Ett exempel kan vara olika former av medlemsinfo. Namn, antal vänner, antal besök, senaste besök kanske ska läsas in samtidigt när profilsidan ska visas? Detta varierar klart beroende på hur din sida ska fungera. Men gör först en detaljerad skiss på alla tabeller och kolumner du tänkt använda. Undvik även att ha samma info i olika tabeller, det skapar bara massa problem när informationen senare ska redigeras.

kan utveckla mig mer om du vill, måste återgå till jobbet

Permalänk
Medlem

Tack JoNaZ, det var en givande och förklarande länk du gav där. Känns verkligen som att sessions är rätt att köra på för min del.

MrSomeone, det där du nämner om att undvika att ha samma info i olika tabeller, det är just det som är problemet, på sätt och vis. Det jag inte vet är hur jag ska "länka ihop" de olika tabellerna; dock kom jag precis på att det man gör kanske är att använda samma "idnummer", så att säga? Till exempel, om användaren "Olle", som lagras i tabellen användare med id 13, skriver att han heter "Olle Karlsson" på sin profilsida, som skrivs till tabellen profiler, är det då bäst att lagra denna information i ännu ett id 13?
Detta känns ju som en bra lösning, men om man har en funktion där alla användare kan skriva sina favoritsidor, där man på den sidan ser både användaren som lagt upp sidan och dennes användarnamn, måste man då inte lagra användarnamnet i samma tabell som dessa favoritsidor ligger i? Finns det inget bättre sätt att länka ihop de två tabellerna med favoritsidor och användarnamn, så att jag slipper lagra användarnamnet ännu en gång i "favoritsidor"? (Hoppas det framgår vad jag menar, är jättetrött just nu, haha! )

Visa signatur
Permalänk

Du har helt rätt i ditt tänkande.

Ett exempel kan vara:

Tabell Användare
Kolumn ID (primärnyckel)
Kolumn Namn
Kolumn Skostorlek
Kolumn Längd
osv...

Tabell kommentarer
Kolumn ID (primärnyckel)
Kolumn AnvändarID
Kolumn Text

När en användare skriver en kommentar någonstans, lagras användarens ID (unik siffra) i kolumnen AnvändarID under tabellen kommentarer. När sedan någon annan användare listar kommentarerna, kan du enkelt plocka fram mer info från författarna genom att länka ihop tabellerna. (select * from användare where ID=AnvändarID).

Se bara till att tabellen användare har en primärnyckel, som kortfattat är ett unikt självgenererande nummer. 1,2, osv. denna fylls i per automatik när du skriver in en rad i den tabellen. föreslår att alla tabeller får en primärnyckel av denna typ.

ber om ursäkt ifall jag förklarat mig tokig, jag är lite trött jag med

Permalänk
Medlem

Aha, ungefär som jag trodde då! Tack så mycket för hjälpen! Jo, självklart har tabellen med användarinfon en primärnyckel, tänkte att det annars blir krångligt, hehe.

Kommer säkert återkomma med några nya galna frågor senare, haha... Galet.

Visa signatur
Permalänk
Medlem

Hej igen!

Jag har åter fått ett litet problem som jag vill kunna lösa...

Jag tänkte att man på profilsidan ska fylla i sina inställningar, och sen när man klickar på "Submit" ska man få bekräfta dessa inställningar på en ny sida. Om man vill ändra någonting ska man kunna gå tillbaka och ändra detta, utan att innehållen i fälten försvinner. Hur gör jag detta? Ska jag registrera även dessa i sessionarrayen?

En till fråga också: när man väljer att registrera sig måste man skriva i sitt användarnamn, lösenord, riktiga namn och en e-postadress, och om man inte gör något av detta ska rätt fält higlightas och skriva ut någonstans på sidan att "[fält] måste skrivas i ". Hur ska jag gå tillväga detta för att göra detta?

Visa signatur
Permalänk

När du trycker på submit så skickas alla i fyllda fält i <form> som POST variabler som du kan hämta ut.

tex om du har ett <input>-fält med name="skostorlek" så kan du få fram den efter du tryckt submit mha $_POST["skostorlek"]

Permalänk
Skrivet av Zetsu:

Hej igen!

Jag har åter fått ett litet problem som jag vill kunna lösa...

Jag tänkte att man på profilsidan ska fylla i sina inställningar, och sen när man klickar på "Submit" ska man få bekräfta dessa inställningar på en ny sida. Om man vill ändra någonting ska man kunna gå tillbaka och ändra detta, utan att innehållen i fälten försvinner. Hur gör jag detta? Ska jag registrera även dessa i sessionarrayen?

En till fråga också: när man väljer att registrera sig måste man skriva i sitt användarnamn, lösenord, riktiga namn och en e-postadress, och om man inte gör något av detta ska rätt fält higlightas och skriva ut någonstans på sidan att "[fält] måste skrivas i ". Hur ska jag gå tillväga detta för att göra detta?

Ja, du kan använda sessions för att fixa ditt första problem

Ditt andra problem däremot kan lösas på flertalet sätt.
Ett exempel kan vara att kolla igenom alla värden i koden och ändra html/css-koden baserat på resultatet.

en enkel lösning på detta kan vara:

if (namn==""){tomt=sant;}

<text backcolor= "<? iif(tomt, 'rött', 'vitt') ?>"

här får textfältet en röd bakgrundsfärg..
detta är nog inget fungerande exempel, då jag inte kodat på evigheter.. haha
iif kan ju vara användbart i detta syfte. iif(värde, detta returneras ifall värdet är sant, detta returneras ifall värdet är falskt). så resultatet=iif(1+1=2,rött, vitt) , så får variabeln resultatet värdet "rött" av funktionen.

Permalänk
Medlem

Det första kan ju lätt lösas genom att du sätter en variabel som är skild från all databaskoppling som är till för att lagra värdena i formulären. Gör då globala variablar.

Nummer två skulle jag lösa genom att kolla värdena i formulären såhär:

if (empty($_POST['namn'])){ header("Location: register.php?register=name"); /* Om ovanstående "namn"-fält är tomt så redirectas du till register.php?register=name */ die(); }

Då kan du redirecta till valfritt dokument och i samma dokument (som i detta fall, register.php) som du vill skriva ut nåt liknande: "Du måste skriva in ett användarnamn!" så gör du såhär:

if($_GET['register'] == 'name') { echo "Du måste skriva ett användarnamn!"; }

Själva if-kontrollen lägger du förslagsvis bredvid varje formulär som motsvarar den du precis checkade.
Glöm inte bort att ta med mysql_real_escape_string när du checkar.

Visa signatur

POSTCARDS FROM ITALY