Kan du ens läsa den där fråga själv? ;)
Kan man inte lösa det med LEFT?
where left(t1.username,1) = '$letter'
Databaser & SQLur Databashanterare & SQL
4 svar · 241 visningar · startad av lillebror
Hej,
I denna tråd så frågade jag efter hur jag får ut bokstaven för varje bokstav i alfabetet där en medlem finns registrerad. Detta fungerade bra när jag ska till att skriva ut alla länkar. Nu har jag kommit så långt att jag har skrivet ut en länk som ser ut så här:
ex. /member.php?list=A
A-värdet läser jag av som i sin tur matar en funktion med denna bokstav. I if-satsen nedan känner jag av om $letter innehåller en bokstav. Beroende på så väljer den rätt sql-sats. Nu får jag dock inte själva SQL-satsen att fungera. Jag misstänker att problemet ligger i WHERE-satsen där jag försöker ange att jag bara vill plocka ut de poster där användarens första bokstav matchar variabeln $letter. Hur åstadkommer jag detta?
if($letter <> 'NULL') {
$sqlSelect = "SELECT memberID, username, DATE_FORMAT(last_visit, '%Y-%m-%d %H:%i') AS datetime, (SELECT activity FROM tblonline WHERE memberID = t1.memberID) AS activity, (SELECT memberID FROM tblonline WHERE memberID = t1.memberID) AS online FROM tblmember AS t1 WHERE confirmmembership = 1 AND substring(t1.username FROM 1 FOR 1) = ".$letter." ORDER BY username ASC";
} else {
$sqlSelect = "SELECT memberID, username, DATE_FORMAT(last_visit, '%Y-%m-%d %H:%i') AS datetime, (SELECT activity FROM tblonline WHERE memberID = t1.memberID) AS activity, (SELECT memberID FROM tblonline WHERE memberID = t1.memberID) AS online FROM tblmember AS t1 WHERE confirmmembership = 1 ORDER BY username ASC";
}
Kan du ens läsa den där fråga själv? ;)
Kan man inte lösa det med LEFT?
where left(t1.username,1) = '$letter'
Melea skrev:
Kan du ens läsa den där fråga själv? ;)
Inga problem. En vanesak ;) Min tanke var att snygga till den i formuläret men eftersom det inte går att tabba i formulärfältet så skippade jag det. :)
Men men...jag får jobba på det att göra det mer lättläst till nästa gång!
Melea skrev:
Kan man inte lösa det med LEFT?
where left(t1.username,1) = '$letter'
Jo det borde nog gå. Verkar rimligt! (y) Ska testa så återkommer jag!
left(t1.username,1)
och
substring(t1.username from 1 for 1)
är ekvivalent.
Du har inga apostrofer kring $letter
'".$letter."'
Vad blir det för felmeddelande?
Det var fnuttarna som spökade. Tack för hjälpen (y). Funktionen fungerar perfekt! :e