DBQuery, Check Name, if the same than reject command?

I’m trying to make an Organization’s system for my rp gamemode.
But with my lua knowhow, I’m not sure how to make it so, when a player creates an Organization, it checks for any other organizations that have the same name.
And if so, rejects it.

The table is Cyderrp_organization and the field for the organization, is ‘org’.

If anyone can help, it’d be greatly appreciated.

[lua]local function Organization(ply, args)
local len = string.len(args)
local low = string.lower(args)

if len > 30 then
	Notify(ply, 1, 4, string.format("Your Organization name is too long."))
	return ""
elseif len < 3 then
	Notify(ply, 1, 4, string.format("Your Organization name is too short."))
	return ""
end

if string.find(args, "\160") or string.find(args, " ") == 1 then --No system spaces in your name bro!
	Notify(ply, 1, 4, string.format(LANGUAGE.unable, "RPname", ""))
	return ""
end

if low == "ooc" or low == "shared" or low == "world" or low == "n/a" or low == "world prop" then
	Notify(ply, 1, 4, string.format(LANGUAGE.unable, "RPname", ""))
	return ""
end

local allowed = { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 
'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 
'z', 'x', 'c', 'v', 'b', 'n', 'm', ' ' }

for k in string.gmatch(args, ".") do
	if not table.HasValue(allowed, string.lower(k)) then
		Notify(ply, 1, 4, string.format(LANGUAGE.unable, "RPname", k))
		return "" 
	end
end 
ply:SetOrganization(args)
return ""

end
AddChatCommand("-bigbang", RPName)[/lua]

Yes, it’s the copied Name function, and yes, DarkRP. But i’m doing a mass over-haul.

How do you store these organizations? Show us the SetOrganization function please.

unrelated to your question, but for checking allowed characters, do this
[lua]
if string.gmatch(args,"%A") then
Notify(ply, 1, 4, string.format(LANGUAGE.unable, “RPname”, k))
return “”
end
[/lua]

%A matches any characters that are NOT a-zA-Z. However, you could use %a to match ONLY a-zA-z (notice the case difference)

so using the above tidbit of code, you could remove the string.lower at the beginning too :stuck_out_tongue:

Thanks, and I’ll post my SetOrganization function.

[lua]function DB.StoreOrganization(ply, org)
if not org or string.len(org) < 2 then return end
ply:SetCyderRPVar(“organization”, org)
DB.QueryValue("SELECT org FROM Cyderrp_organization WHERE steam = " … sql.SQLStr(ply:SteamID()) … “;”, function®
if r then
DB.Query("UPDATE Cyderrp_organization SET org = " … sql.SQLStr(org) … " WHERE steam = " … sql.SQLStr(ply:SteamID()) … “;”)
else
DB.Query(“INSERT INTO Cyderrp_organization VALUES(” … sql.SQLStr(ply:SteamID()) … ", " … sql.SQLStr(org) … “);”)
end
end)
end

local organizationlist --Make sure the DB doesn’t get checked for ALL Organization when someone InitialSpawns
function DB.RetrieveOrganization(callback)
if organizationlist then
return callback(organizationlist)
end

DB.Query("SELECT * FROM Cyderrp_organization;", function(r)
	if r then 
		organizationlist = r
		callback(organizationlist)
	else
		organizationlist = {}
		callback(organizationlist)
	end
end)

end

function DB.RetrieveOrganization(ply, callback)
for k,v in pairs(organizationlist or {}) do
if v.steam == ply:SteamID() then return callback(v.org) end – First check the cache for RP names
end
DB.QueryValue("SELECT org FROM Cyderrp_organization WHERE steam = " … sql.SQLStr(ply:SteamID()) … “;”, callback)
end
[/lua]

These are all the functions in data.lua that have to do with the database.

you could do…

[lua]
local org = DB.Query("SELECT org FROM Cyderrp_organization WHERE steam = " … sql.SQLStr(ply:SteamID()) … “;”)
if org == args then
–stuff
else
–stuff
end
[/lua]

Args = what the player typed correct?