webForumDet fria alternativet

SELECT-sats som inte fungerar

Databaser & SQLur Databashanterare & SQL

4 svar · 241 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

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";
}

Medlem sedan juli 20033 147 inlägg
#2

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'
Medlem sedan apr. 20041 597 inlägg
#3

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!

Medlem sedan dec. 200012 464 inlägg
#4
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?

Medlem sedan apr. 20041 597 inlägg
#5

Det var fnuttarna som spökade. Tack för hjälpen (y). Funktionen fungerar perfekt! :e

129 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)