Jump to content

executeSQLQuery شرح ل


Recommended Posts

3 hours ago, Master_MTA said:

السلام عليكم ورحمة الله وبركاته

كيف  الحال شباب باذن الله اليوم بشرحلكم كيف تستخمون

executeSQLQuery

بطريقه مفصله بس اهم شي دعواتكم لي في الاختبار

+_+

حق القدرات والله المستعان بس بسم الله نبدا

طيب اولا 

executeSQLQuery

هي وظيفه ثابته ما تتغير لكن فقط ما بين الاقواس هو اللي يتغير  يعني انا شرحي ما اعرف اوصل المعلومه صح لكن حاولو تفهمو مني على قدر استطاعتكم +_+

نبدا باول وظيفه وهي انشاء قاعدة بيانات او بمعنى اصح تيبل


executeSQLQuery("CREATE TABLE IF NOT EXISTS players (clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)")

 

طيب الان  ناخذ ما بين الاقواس وحده وحده

في حالة انشائك لاي تيبل بتكون هذي ثابته ما فيها اي تغيير ما تعدل عليها ابد


CREATE TABLE IF NOT EXISTS

الان نجيي للي بنعدل عليه

players

هذا وشو هذا اسم التيبل اللي تبيه وليكن حطيته انا ماستر

Master

بكذا يكون هذا اول متغير صادفك في انشاء التيبل

(clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)

نجي لهنا وش هي

clothes_head_texture

هذا اسم الكولمن اللي داخل التيبل اللي بندخل فيه القيم وما الى ذلك

طيب وش هي

TEXT

هذا نوع الكولمن يحتوي بالمناسبه الكلومن=عمود

على تكست فقط

طيب والفاصله وش وظيفتها

الفاصله تستخدمها لو تبي تسوي اكثر من كولمن مثلا

في هذي الحاله هو هنا مسوي 3 كولمن الاول اسمه

clothes_head_texture

الثاني

clothes_head_model

والاخير name

اتمنى وصلت فكرة انشاء التيبل

طيب هنا نجي للحذف

انا دخلت قيمه وما ابيها ابي احذفها من الجدول او مثلا سويت تفعيل اشتراك في رنت سيستم للاعب وابيه ينحذف من التيبل اللي عندي

كيف

بنشوف الان


executeSQLQuery("DELETE FROM players WHERE name=?", playerName)

وكالعاده هي ثابته

DELETE FROM

اما بالنسبه لذي

players

فهي بتكون ماستر لاننا بدلناها لو تذكرون في انشاء التيبل فوق

هذا اسم التيبل اللي انشاناه ايا كان اسمهه

Master

زي ما قلنا فوق مثلا

WHERE name=?

هنا تبي تحذف من اي كولمن؟

اي عمود تبي تحذف منه

هنا سوينا حذف من عمود

name

, playerName)

الفاصله ثابته

playername

تكون القيمه اللي تبي تحذفها وليكن اسم اللاعب محمد ابي احذف محمد كيف

بتكون كذا

,'محمد')

على سبيل المثال فقط

بالنسبه لكم انتم على حسب استخدامكم مثلا

getPlayerName(source)

المصدر اسم لاعب المصدر اللي بالايفينت على حسبكم انتم

طيب افرض انا ابي احذف ايضا

من

clothes_head_texture

 

هل بطر اسوي 2 سطر ورا بعض؟


executeSQLQuery("DELETE FROM players WHERE name=?", playerName)

 


executeSQLQuery("DELETE FROM players WHERE clothes_head_texture=?", head)

طبعا هيد تكونو معرفينها انتم ما يحتاج

بس هل ذي طريقه صحيحه الجواب خطا

الطريقه الصحيح لو تبي  تحذف القيمه صح بتسوي كذا


executeSQLQuery("DELETE FROM players WHERE clothes_head_texture=? AND name=?", head,playername)

زي ما تلاحظون ظفت انت وحطيت فاصله بعد وبلاير نيم بالظبط هذا اللي بتسويه

ملاحظه مهمه الان لازم كابيتال

ما يصلح سمول

نجيي للي بعده


executeSQLQuery("DROP TABLE players" )

 

هذي وظيفه لحذف التيبل 

وفي حالة شرحنا بتكون زي ما قلنا ماستر يعني كذا


executeSQLQuery("DROP TABLE Master" )

executeSQLQuery("SELECT score,health FROM players WHERE name=?", playerName )

طيب هذي وشو هذي تجيبلك بينات من التيبل للاعب معين 

مثلا اانت لما دخلت للتيبل سويت اللاعب مع نقاطه مثلا

SELECT

ثابته كالعاده

score,health

 

هذي اسماء الكولمن اللي تبي تختار منها البيانات في حالة شرحنا بتكون

clothes_head_texture, clothes_head_model

طيب

FROM players WHERE name=?

بشرحها دفعه وحده

FROM

ثابته

players

اسم التيبل وفي حالتنا بتكون

Master

WHERE

ثابته

name=?

هذا اللي عندك قيمته تبي تختار من عمود الاسماء بينات اللاعب اللي جمبو

اللي هي

clothes_head_texture, clothes_head_model

فهمتو

طيب بيكون التعريف كذا مثلا

local ss,mm=executeSQLQuery("SELECT clothes_head_texture, clothes_head_model FROM Master WHERE name=?", playerName )

بكذا بيطلعلك القيمتين المجهولتين

نجي للي بعده

اوه قبل لا نجي للي بعده في شي

افرض انا ابي كل التيبل

بسوي كذا

local table=executeSQLQuery("SELECT * FROM Master" )

كذا بيكون عندي جمميع البيانات اللي بالتيبل

نجي للي بعده


executeSQLQuery("INSERT INTO players(name,color,sound) VALUES(?,?,?)", playerName, colorName, soundName )

 

وش وظيفتها الادخال في التيبل تبي تدخل قيم جديده

INSERT INTO players(name,color,sound) VALUES(?,?,?)

اولا الانزرت ثابته

وانتو ثابته

اما ما بين الاقواس فبتكون اسماء العمود

اللي تبي تدخل فيه القيم

وفي حالتنا
INSERT INTO players (name,clothes_head_texture, clothes_head_model) VALUES(?,?,?)

VALUES(?,?,?)

وش هذي هذي عدد القيم ونعبر عنها باستفهام لاننا بنكتبها باخر السطر بنشوف افرض عندي اربع عواميد راح نزيد

,?

وبالتالي بتصير كذا

VALUES(?,?,?,?)

لكن احنا حاليا شغالين على 3 فمافي داعي

VALUES(?,?,?)

نكمل

, playerName, colorName, soundName )

 

playername

هذا اللي تبي تدخله في العمود الاول حسب الترتيب

(name,clothes_head_texture, clothes_head_model)

اللي سويته هنا

وكذلك الباقي

نجي للي بعده


 

executeSQLQuery("UPDATE players SET color=?,sound=? WHERE name=?", colorName, soundName, playerName )

هذي وظيفتها تحديث البيانات افرض اللاعب زادت نقاطه كل اللي عليك انك تستخدم هذي الوظيفه لتحديث بياناته

UPDATE players SET

ابديت ثابته 

players

في حالتنا بتكون

Master

بالنسبه ل

SET

ثابته

color=?,sound=? WHERE name=?

color=?,sound=?

في حالتنا بتكون كذا

clothes_head_texture=?, clothes_head_model=?

بالنسبه ل

WHERE name=?

هذا وين تبي تحدث انت عند اي اسم تبي تحدث؟

على حسب اسم اللاعب اللي زادت نقاطه

مثلا

طيب

colorName, soundName, playerName

colorName هذا زي ما قلت بالترتيب حق العواميد اللي سويته يعني ذا راح يروح ل

clothes_head_texture

soundName

وهذا راح يروح ل

clothes_head_model

 

والقيمه الاخيره وهي اللي نبي

نحدث عندها اسم اللاعب اللي زادت نقاطه

playerName

اللي بتكون عند

WHERE name=?

وفي الختام اتمنى من كل قلبي تكونو استفدتو ولا تنسو دعواتكم

بالمناسبه الشرح لارضاء الاخ ابوسولو لانه بغا شرح له من زمن

@Abu-Solo

ولك ايضا عزيزي المتابع لا تنسوني من دعواتكم يقلبي بالتوفيق يا رب لي ولكم

 

امواح امواح امواح

مشكور ي الغالي والله ع الشرح

بس لو تقدر تسوي امثله بيكون افضل,

لو تسوي مثال حفظ الكلام الموجود فـ القريد لست بيكون أفضل

مشكور والله ي بعدي

  • Like 1
Link to comment
2 hours ago, Abu-Solo said:

امواح امواح امواح

مشكور ي الغالي والله ع الشرح

بس لو تقدر تسوي امثله بيكون افضل,

لو تسوي مثال حفظ الكلام الموجود فـ القريد لست بيكون أفضل

مشكور والله ي بعدي

العفو يا قلبي باذن الله قريب

Link to comment
  • 2 weeks later...
7 hours ago, Ahmed Araby said:

طيب لو عاوز اشوف اذا القيمه 

"ClothAhmed" موجوده في التيبل اعمل اي

تتحقق في اكثر من طريقه طبعا بنستخدم 

select

ثم بتعرف القيمه اللي طلعتها

ثم بتسوي تحقق

وليكم القيمه اللي طلعتها اسمها

ahmed

بيكون التحقق كذا

if #ahmed~=0 then

وهكذا في اكثر من طريقه

Link to comment
18 minutes ago, Master_MTA said:

تتحقق في اكثر من طريقه طبعا بنستخدم 

select

ثم بتعرف القيمه اللي طلعتها

ثم بتسوي تحقق

وليكم القيمه اللي طلعتها اسمها

ahmed

بيكون التحقق كذا

if #ahmed~=0 then

وهكذا في اكثر من طريقه

سحب علينا ...

أقوله سوي أمثله وسحب ذذ

Link to comment

تفضل @Abu-Solo

سويت لك مثال كامل

اذا كتب في الايديت

يجي قريد لست ويتحفظ ..

كلنت :
 

addEventHandler ( "onClientGUIClick", root, -- حدث اذا ضعط علي الزر
function (  ) -- وظيفه
if source == button then -- تحقق من الزر الضعط عليه
local Edit1 = guiGetText ( GUIEditor.edit[1] )
local Edit2 = guiGetText ( GUIEditor.edit[2] )
local Edit3 = guiGetText ( GUIEditor.edit[3] )
if Edit1 == "" or Edit2 == "" or Edit3 == "" then return end -- تحقق انه كاتب بالايديت شي
triggerServerEvent ( "Test", localPlayer, Edit1, Edit2, Edit3 )
end -- انهاء الحدث
end -- انهاء الوظيفه
) -- قوس

addEvent ( "Test1", true )
addEventHandler ( "Test1", root,
function ( Table ) -- وظيفه
guiGridListClear( GUIEditor.gridlist[1] ) -- تحديث القريد لست
for i, _ in ipairs( Table ) do -- نسوي لوب علي الجدول
local row = guiGridListAddRow ( GUIEditor.gridlist[1] ) -- نضيف راو جديد
guiGridListSetItemText( GUIEditor.gridlist[1], row, 1,Table[i].Edit1, false, false) -- نكتب بالقريد لست الكلام الطلع بالايديت إلخ
guiGridListSetItemText( GUIEditor.gridlist[1], row, 2,Table[i].Edit2, false, false)
guiGridListSetItemText( GUIEditor.gridlist[1], row, 3,Table[i].Edit3, false, false)
end -- انهاء الوب
end -- انهاء الفكشن
) -- قوس

addEventHandler( "onClientResourceStart", resourceRoot, -- حدث اذا المود اتفتح
function(  ) -- وظيفه
triggerServerEvent( "Refresh", localPlayer ) -- تريقر لسرفر
-- ذا عشان تسوي تحديث للقاعده او " القريد لست "
end
)

سرفر :

executeSQLQuery( "CREATE TABLE IF NOT EXISTS `TEST` ( Edit1, Edit2, Edit3 ) " ) -- تصنع قاعده بيانات 

addEvent ( "Test", true ) -- استقبال التريقر
addEventHandler ( "Test", root, -- استقبال التريقر
function ( Edit1, Edit2, Edit3 ) -- وظيفه
if Edit1 and Edit2 and Edit3 then -- تحقق اذا كان بيانات في الايديت كامله 
executeSQLQuery( 'INSERT INTO `TEST`( Edit1,Edit2,Edit3 ) VALUES(?,?,?) ' , Edit1, Edit2, Edit3 ) -- زي م قال مستر 
-- وش وظيفتها الادخال في التيبل تبي تدخل قيم جديده
triggerEvent( "Refresh", root ) -- تسوي تريقر من سرفر ل سرفر لتحديث القاعده
-- عشان اذا انت ضفت طلب مب بيجي لازم تحديث للقاعده لو تبي يجي لازم ترستر المود
-- فأ لازم تحط تحديث للقريد لست يعني القاعده
end -- نهايه التحقق
end -- نهايه الفكشن
) -- قوس

addEvent ( "Refresh", true ) -- استقبال التريقر
addEventHandler ( "Refresh", root, -- استقبال التريقر
function ( ) -- وظيفه
local SQLListe = executeSQLQuery ( "SELECT * FROM `TEST` " )
if #SQLListe ~= 0 then -- تححقق
triggerClientEvent ( "Test1", root, SQLListe ) -- تريقر لكلنت
end
end)

 

Edited by Deativated
  • Like 1
Link to comment
5 hours ago, Deativated said:

تفضل @Abu-Solo

سويت لك مثال كامل

اذا كتب في الايديت

يجي قريد لست ويتحفظ ..

كلنت :
 


addEventHandler ( "onClientGUIClick", root, -- حدث اذا ضعط علي الزر
function (  ) -- وظيفه
if source == button then -- تحقق من الزر الضعط عليه
local Edit1 = guiGetText ( GUIEditor.edit[1] )
local Edit2 = guiGetText ( GUIEditor.edit[2] )
local Edit3 = guiGetText ( GUIEditor.edit[3] )
if Edit1 == "" or Edit2 == "" or Edit3 == "" then return end -- تحقق انه كاتب بالايديت شي
triggerServerEvent ( "Test", localPlayer, Edit1, Edit2, Edit3 )
end -- انهاء الحدث
end -- انهاء الوظيفه
) -- قوس

addEvent ( "Test1", true )
addEventHandler ( "Test1", root,
function ( Table ) -- وظيفه
guiGridListClear( GUIEditor.gridlist[1] ) -- تحديث القريد لست
for i, _ in ipairs( Table ) do -- نسوي لوب علي الجدول
local row = guiGridListAddRow ( GUIEditor.gridlist[1] ) -- نضيف راو جديد
guiGridListSetItemText( GUIEditor.gridlist[1], row, 1,Table[i].Edit1, false, false) -- نكتب بالقريد لست الكلام الطلع بالايديت إلخ
guiGridListSetItemText( GUIEditor.gridlist[1], row, 2,Table[i].Edit2, false, false)
guiGridListSetItemText( GUIEditor.gridlist[1], row, 3,Table[i].Edit3, false, false)
end -- انهاء الوب
end -- انهاء الفكشن
) -- قوس

addEventHandler( "onClientResourceStart", resourceRoot, -- حدث اذا المود اتفتح
function(  ) -- وظيفه
triggerServerEvent( "Refresh", localPlayer ) -- تريقر لسرفر
-- ذا عشان تسوي تحديث للقاعده او " القريد لست "
end
)

سرفر :


executeSQLQuery( "CREATE TABLE IF NOT EXISTS `TEST` ( Edit1, Edit2, Edit3 ) " ) -- تصنع قاعده بيانات 

addEvent ( "Test", true ) -- استقبال التريقر
addEventHandler ( "Test", root, -- استقبال التريقر
function ( Edit1, Edit2, Edit3 ) -- وظيفه
if Edit1 and Edit2 and Edit3 then -- تحقق اذا كان بيانات في الايديت كامله 
executeSQLQuery( 'INSERT INTO `TEST`( Edit1,Edit2,Edit3 ) VALUES(?,?,?) ' , Edit1, Edit2, Edit3 ) -- زي م قال مستر 
-- وش وظيفتها الادخال في التيبل تبي تدخل قيم جديده
triggerEvent( "Refresh", root ) -- تسوي تريقر من سرفر ل سرفر لتحديث القاعده
-- عشان اذا انت ضفت طلب مب بيجي لازم تحديث للقاعده لو تبي يجي لازم ترستر المود
-- فأ لازم تحط تحديث للقريد لست يعني القاعده
end -- نهايه التحقق
end -- نهايه الفكشن
) -- قوس

addEvent ( "Refresh", true ) -- استقبال التريقر
addEventHandler ( "Refresh", root, -- استقبال التريقر
function ( ) -- وظيفه
local SQLListe = executeSQLQuery ( "SELECT * FROM `TEST` " )
if #SQLListe ~= 0 then -- تححقق
triggerClientEvent ( "Test1", root, SQLListe ) -- تريقر لكلنت
end
end)

 

عززززززززززز الله يعززززززك كفو والله مشكووور

  • Like 1
Link to comment
  • 8 months later...
On 23/02/2017 at 06:57, Master_MTA said:

 

 

شكرا على الشرح المفيد بس سأل 

local check1 = executeSQLQuery( ' SELECT * FROM `bank` WHERE accname = ? ', getPlayerAccount(source) )
local x = check1[1]['bank']
outputChatBox('You Have Add '..x , source , 255,0,0)

بيطلع لي في الديبيق 

attempt to concatenate local x ( a nil value )

ابي أعرف وش أسوي مشان اجيب قيمة داخل الجدوول وإستخدمها في موداتي 

وجربة سويت 

local check1 = executeSQLQuery( ' SELECT * FROM `bank` WHERE accname = ? ', getPlayerAccount(source) )

outputChatBox('You Have Add '..check1 , source , 255,0,0)

سوالي مشكلة في الديبيق وما إشتغل :'(

Link to comment

اولا يا عسل

5 hours ago, WTF_ said:

شكرا على الشرح المفيد بس سأل 


local check1 = executeSQLQuery( ' SELECT * FROM `bank` WHERE accname = ? ', getPlayerAccount(source) )
local x = check1[1]['bank']
outputChatBox('You Have Add '..x , source , 255,0,0)

بيطلع لي في الديبيق 

attempt to concatenate local x ( a nil value )

ابي أعرف وش أسوي مشان اجيب قيمة داخل الجدوول وإستخدمها في موداتي 

وجربة سويت 


local check1 = executeSQLQuery( ' SELECT * FROM `bank` WHERE accname = ? ', getPlayerAccount(source) )

outputChatBox('You Have Add '..check1 , source , 255,0,0)

سوالي مشكلة في الديبيق وما إشتغل :'(

جرب تسوي الاتي

  1. local check1 = executeSQLQuery( ' SELECT * FROM `bank` WHERE accname = ? ', getPlayerAccount(source) )
  2. if #check1==0 then return outputChatBox('you have wrong in insert function ',source ) end
  3. outputChatBox('You Have Add '..check1[1].bank, source , 255,0,0)
Link to comment

شرح رائع من شخص  اروع 

بس بدي اضيف معلومة مشان نكمل الموضوع ^_^

والكمال لله وحده 

executeSQLQueryالان وش الفرق بين ال 

 dbPoll dbQuery dbExec dbConnect الأدوات الاخر مثل

الأداة المذكورة بشرح تقوم بحفظ البيانات في ملفات السيرفر 

يعني لو قمت بعمل باك اب لسيرفر وانت مستخدم البرمجة التي في الأعلى 

سوف تلاحظ عند تركيب المودات على استضافة جديدة انه لا يوجد بيانات محفوظة 

And so only

^_^ 

 

 

Edited by iyaad
Link to comment
On ٢٠‏/١٢‏/٢٠١٧ at 12:24, iyaad said:

يعني لو قمت بعمل باك اب لسيرفر وانت مستخدم البرمجة التي في الأعلى 

 

مشكور يا بعدي +مشكورر للاضافة لكن بالعكس

executesqlquery

تقوم بعمل تيبل داخل ملف الحساابات في كلتا اللحالتين لو سويت باكاب للسيرفر بتحصل البيانات محفوظة

  • Thanks 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...