Right, håller på med ett litet forum, har gjort några FTP-skript, så att man kan ladda upp tex en avatar till en server. Men jag vill ju även att användaren skall kunna ta bort sin avatar för att kunna ersätta den med en annan. (Istället för att ladda upp ännu en bild och ta upp ännu mer plats.)
Problem 2
Jag hade tänkt ha en signaturfunktion på forumet. Först hade jag tänkt mig att signaturen lades in i varje post, men tänkte sedan att det kanske vore bättre om man helt enkelt frågade databasen efter användarnas signaturer varje gång man besökte ett inlägg. Dock, jag vet inte hur jag skall läsa detta på ett bra sätt. Om jag skulle ha gjort något sådant där, skulle det se ut såhär:
$result = mysql_query ("SELECT blah blah FROM blah blah LIMIT blah blah");
while ($line = mysql_fetch_array($result)) {
echo blah blah $line["name"] blah blah $line["date"] blah blah $line["text"];
$result2 = mysql_query("SELECT signatur FROM members WHERE members = '{$line["name"]}'");
while ($line2 = mysql_fetch_array($result2)) {
echo $line2["signatur"];
}
// Måste man göra en while-sats varje gång man vill skriva ut något?
}
Som ni ser har jag en mysql-sats i varje inlägg - något man kanske helst vill undvika. Kan man göra åstadkomma samma sak fast på annat sätt, att signaturen ritas ut utan att man lägger in den tillsammans med varje post?
$result = mysql_query ("SELECT blah blah FROM blah blah LIMIT blah blah");
while ($line = mysql_fetch_array($result)) {
echo blah blah $line["name"] blah blah $line["date"] blah blah $line["text"];
$result2 = mysql_query("SELECT signatur FROM members WHERE members = '{$line["name"]}'");
$line2 = mysql_fetch_array($result2);
echo $line2["signatur"];
// Måste man göra en while-sats varje gång man vill skriva ut något?
}
Ett tips är dock att spara användarID:et i databasen istället för namnet och sedan jämföra WHERE userID = $line[userID], då blir det automatiskt unikt.
Melea,
tack för ditt svar! Dock, fortfarande är det en MYSQL-sats i varje inlägg. Det blir så slött! Kan man inte på något sätt välja alla signaturer i en endaste en MYSQL-Sats, och sedan rita ut dem tillsammans med rätt användare?
Självklart ska du använda join. :)
Men vore det inte bättre att använda left-join? Jag menar, _om_ användarID:et av någon anledning inte sparades i databasen så skrivs ju inte någonting alls ut.
SELECT b.date, b.text, m.members
FROM b
LEFT JOIN m
ON b.name = m.members
LIMIT 0,10
Jag förutsätter att man måste vara inloggad för att skriva i forumet, och då sparas användarid ner. Finns inte användarid ska det heller inte gå att spara i forumet.
Därav INNER JOIN.
Jo, jag tänkte bara att om man skriver en lång artikel så hinner t.ex. den session som har sparat användarID:et försvinna.
Men visst, det blir ju samma resultat. :)
Om man har krav på att man måste vara inloggad för att kunna spara, bör man ha en inloggningskontroll innan man kör koden som sparar till databasen.
Har man då ingen sessionsvariabel ska koden som sparar till databasen överhuvudtaget inte köras.
Problemet ska med andra ord aldrig uppkomma.
Okay, har läst lite på mysql.com om JOIN, och jag fattar absolut ingenting. Eller jovisst, man fattar väl ett och annat, men det hela är alldeles för oklart för att jag skall kunna använda det. Finns det ingen sida som förklarar JOIN på ett utförligt och förståligt sätt?
Du har dubbla mid i din SQL-fråga. Du måste sätta ett alias på det ena typ
... forum.mid AS fmid, members.mid AS mmid, ...
Du använder förresten inte wid, tid, mid eller sign, och då finns det inte heller någon anledning att ha med dom i SQL-frågan.
Men troligtvis är det så att du ska använda dom, men förenklade ditt exempel lite.
313 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e