Jump to content

[SQL] استفسار عن


xBeSoOo

Recommended Posts

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

شباب عندي استفسار عن الاس كيو ال

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

وطبقت الشرح وكذا وفهمت وتمام لكن

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

مثل: لو ابي اسوي مثلا شات كيف استخدم الاس كيو ال فيه

او مثلا ابي اسوي كل لما اللاعب يدخل يحفظ سرياله

وكتوضيح : انا فهمت من شرح برستيج انه لو ابي احفظ شي لازم يكون علي شي ثابت

مثلا سريال اللاعب شي ثابت او حساب

انشاء الله تكنون فهمتوني

Link to comment

انت ما فهمت وش اقصد انا شفت شرح برستيج وفهمته وعرفت كيف احفظ بها

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

او في مود يحفظ سريلات اللاعبين

او مود مثلا ارسال طلبات مثل الريبورت الي في لوحة الادمنية

Link to comment

اذا تبي تضيف اي شي في القاعدة تستخدم insert

هذا مثال سريع

والمفترض انك تعرفه

  
executeSQLQuery ( "INSERT INTO PlayerSerial ( account, serial ) VALUES ( ?, ? )", "test", "test" ) 
  

الحين اذا تبي تحفظ السريال على اكاونت اللاعب اول مايسجل دخول

تستخدم حدث onPlayerLogin + الكود الي فوق

وإذا ماتبي يضيف سيريالات مكررة تتحقق هل موجود السريال اول لا عن طريق الـ select

  
local check = executeSQLQuery( "SELECT * FROM PlayerSerial WHERE account = ? AND serial=?", playerAcc, PlayerSerial) 
if ( type ( check ) == "table" and #check == 0 ) or not check then 
-- Your code 
end 
  

حاول تسوي الكود بنفسك ..

Link to comment
اذا تبي تضيف اي شي في القاعدة تستخدم insert

هذا مثال سريع

والمفترض انك تعرفه

  
executeSQLQuery ( "INSERT INTO PlayerSerial ( account, serial ) VALUES ( ?, ? )", "test", "test" ) 
  

الحين اذا تبي تحفظ السريال على اكاونت اللاعب اول مايسجل دخول

تستخدم حدث onPlayerLogin + الكود الي فوق

وإذا ماتبي يضيف سيريالات مكررة تتحقق هل موجود السريال اول لا عن طريق الـ select

  
local check = executeSQLQuery( "SELECT * FROM PlayerSerial WHERE account = ? AND serial=?", playerAcc, PlayerSerial) 
if ( type ( check ) == "table" and #check == 0 ) or not check then 
-- Your code 
end 
  

حاول تسوي الكود بنفسك ..

يالطيب انا فاهم كيف احفظ بالقاعدة

بس ففيه حاله مب فاهم كيف استخدم فيها الاس كيو ال

مثلا: ابي اعرف لما اسوي مود طلبات مثل الريبورت الي في لوحة الادمنية

كيف استخدم فيه الاس كيو ال

الطريقة يعني

Link to comment

يالطيب انا فاهم كيف احفظ بالقاعدة

بس ففيه حاله مب فاهم كيف استخدم فيها الاس كيو ال

مثلا: ابي اعرف لما اسوي مود طلبات مثل الريبورت الي في لوحة الادمنية

كيف استخدم فيه الاس كيو ال

الطريقة يعني

هذا الشي لازم تفكر وتبدع فيه انت

بحيث انك وقت تفكر في سكربت .. فكر كيف بتسويه

اول شي تسوي قاعده بيانات

وبعد ما يكتب اللاعب الريبورت ويضغط على زر الاضافه

يسوي تريقر لحدث بالسيرفر سايد لأضافه الأقتراح بقاعده البيانات

وانتا لو كنت ادمن تستخدم امر لفتح لوحه

اثناء فتح اللوحه لازم تجلب الريبورتات فيجب عليك تسوي تريقر لسيرفر سايد يجيب البيانات من القاعده ويرسلها للكلنت

هذي بعض الأمثله من الوحش

الي تحتاج تفهمه ماهو الفنكشن الي تحتاجه هو انك تفهم كتابة سطور ال sql

الاشياء الي بتحتاجها اكثر شي ولازم تعرفها هي

CREATE -- صنع جدول

DROP -- حذف جدول

INSERT INTO إضافة سطر او رو الى الجدول

SELECT -- تحديد سطر او رو من الجدول (تستخدمها عشان تجيب قيمه او كل القيم من الرو)

UPDATE -- تغير قيمة موجوده في السطر او الجدول

DELETE -- تحذف السطر او الرو

امثله

CREATE:

CREATE TABLE IF NOT EXISTS whitelist (name TEXT,serial TEXT)

whitelist = اسم الجدول

name&serial = كولمنز وحطيت بعدهم كلمة تكست عشان يكون نوع القيم في هذول الكولمنز سترنق فقط

DROP:

DROP TABLE whitelist

INSERT INTO:

INSERT INTO whitelist (name,serial) VALUES(ALw7sH,SERIALSERIALSERIALSERIAL)

SELECT:

SELECT * FROM whitelist -- بيجيب لي كل الروز او الي في الجدول

SELECT * FROM whitelist WHERE name='ALw7sH' -- بيجيب لي معلومات الرو كامل الي الاسم فيه الوحش

SELECT serial FROM whitelist WHERE name='ALw7sH' -- بيجيب سريال الرو الي الاسم فيه الوحش

UPDATE:

UPDATE whitelist SET serial='newserial' WHERE name='ALw7sH'

لو نفترض انك ماخليت ال where

UPDATE whitelist SET serial='newserial'

كل الروز بيتغير السريال حقهم لهذا السريال الجديد

DELETE:

DELETE FROM whitelist WHERE name='ALw7sH

لو نفترض انك ماخليت ال where

كل الروز بينحذفون

طبعاً ذا ماهو كل شي في السكل فيه أشياء كثير غير

تقدر تشوفها وتتعلمها من

http://www.w3schools.com/sql/sql_syntax.asp

عندك على اليسار كل شي

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

Link to comment
https://community.multitheftauto.com/index.php?p=resources&s=details&id=6313

ركب هذا السكربت وشغله

الفنكشنات الي في السكربت

bool setPlayerSerialData( player thePlayer, string key, value )

string getPlayerSerialData( player thePlayer, string key )

bool removePlayerSerialData( player thePlayer, string key )

table getAllPlayerSerialData( player thePlayer )

عشان تستخدم الفكشن لازم اكسبورت

مثال

exports.sqldata:setPlayerSerialData(...)

Sql يحفظ بالـ

استخدامه سهل زي المنت داتا

الارقمنت الاول الاعب

والارقمنت الثاني المفتاح اي اسم

والارقمنت الثالث القيمة

ارقمنتاته شبيه بالاكونت داتا وقريب من المنت داتا

او استخدم وظائف تنطيل

https://forum.multitheftauto.com/viewtopic.php?f=160&t=50111&start=360

بالتوفيق ان شاء الله

Link to comment

ابي اوضح لك نقطتين

1- لازم تعرف كيف شكل الsql من الداخل

2- لازم تعرف كيف تعمل

بشرح لك مع بعض الامثلة

اولاً ال sqlite

عبارة عن جدول مثال لها

__________________________________________

Player|Console|Admin|Supporter|Testing | |

__________________________________________|

MoDeR|General|SomeGuy|DABL|SomeOtherGuy |

Row|AnotherRow|OneMore|Row2| -- |

__________________________________________|

يعني جدول من

Column

و

Row

الحين فلنفترض ان ابي احفظ معلوماتي

سريالي و الايبي و مجموع الفلوس الحالي

اول شيء لازم كولمنات بهذه المعلومات يعني المفروض شكل الجدول كذا

_______________________________

HumanName|Serial|IP|Money | -----TABLE NAME = Information

_______________________________|

DABL |156SS|1270.0.1|400$ |

_______________________________|

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

طيب الحين انا حدثت فلوس لازم نحدث المعلومة الموجودة بلكولمن علي حسب الاسم نستعمل

"UPDATE Information SET Money = 500 WHERE HumanName = ?"

الحين هذا راح يخلي فلوسي 400 حسب

اعتقد الشكل لوحده يخليك تفهم

و الباقي نفس الشغل

DELETE FROM

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

مثلا تبي تغير اسمي لاسم ثاني

تسوي ابديت للروو و تحط الاسم حسب السريال اللي بلجدول

طيب الحين نبي نغير الاسم

نسوي

"UPDATE Information SET HumanName = ? WHERE Serial = 156SS" 

هذا راح يحدث جدول

Information

و يغير اسم رو

حيث خانة السريال اللي بجانب الرو ذا = 156ss

ان شاء الله تكون فهمت @_@

لانه تعبت بتصميم الجداول :evil:

Link to comment

يمكن يفيدك الشرح هذا

وعليكم السلام

راح أعطيك مثال مع شرحه

المثال عبارة عن نظام يقوم بإضافة أسماء وأعمار واللون المفضل للاعبين

نبدا بالجزء الأول

صنع جدول بالطريقة الآتية

executeSQLQuery("CREATE TABLE IF NOT EXISTS db_table(name, age, favorite_color)")

CREATE TABLE : صنع جدول داخل قاعدة البيانات

IF NOT EXISTS : يتحقق ان اسم الجدول مو موجود مسبقا يعني الجدول اذ كان موجود ما راح يصنعه

db_table : هو اسم الجدول

(name, age, favorite_color) : كل مابين القوسين عبارة عن كولمن والكولمن هو الأعمدة او تحط فيها بيانات وكل عمود له بياناته الخاص زي نظام القريد ليست

هي عبارة عن أسم الكولمن name, age, favorite_colorكولمن له رو او بالعربي كل عمود له صف و

ملاحظة : القريد ليست مجرد مثال ليس له علاقة بقواعد البيانات

نبدا بالجزء الثاني

اللي هو اضافة بيانات الى الجدول

executeSQLQuery("INSERT INTO db_table(name, age, favorite_color) VALUES(?, ?, ?)", "Mr.Tn6el", "19", "orange")

INSERT INTO : هو أمر اضافة الى الجدول

db_table : هو الجدول الذي يتم اضافة البيانات اليه

(name, age, favorite_color) : أسماء الكولمن المراد اضافة البيانات اليها

VALUES(?, ?, ?) : هو الآن الجزء المهم والذي يتم ادخال البيانات اليه ومعنى علامات الاستفهام ان البيانات مجهولة ويتم استبدالها البرامتر الثاني من وظيفة قاعدة البيانات وتستطيع اضافة بدون علامات الاستفهام والبرامتر الثاني شاهد هذا المثال

 VALUES("Mr.Tn6el", "19", "orange") 
  

"Mr.Tn6el", "19", "orange" : هذا البرامتر الثاني التي تكلمنا عنه سابقا واي علامة استفهام موجوده في البرامتر الأول يتم استبدالها بحسب الترتيب

"?" مثلا سويت

راح على طول ينتقل ويتفقد البرامتر الثاني ويتحقق انه تم استبداله والا سوف يرسل خطأ

راح اكمل الشرح بعد مارجع انتظرونا :)

نبدا بالجزء الثالث

شرح استعلام البيانات من جدول قاعدة البيانات

(القسم الأول(استعلام جميع البيانات من الجدول

executeSQLQuery("SELECT * FROM db_table")

SELECT : امر الاستعلام من الجدول

* : النجمة يعني جميع الكولمن اللي في الجدول

FROM db_table : FROM : (db_table)تعني بالعربية من وثم تأتي بعدها اسم الجدول اللي هو

(القسم الثاني(استعلام جزء محدد من البيانات

executeSQLQuery("SELECT * FROM db_table WHERE name=?", "Mr.Tn6eL")

WHERE : تعني أين بالعربية ووظيفتها هي اختيار شي محدد

مثلا كأنك تقول ابغى تفاحة لكن تكون صفراء

فهل راح يجيب لك الحمراء؟! لا بالطبع

=? : الاستفهام شرحناه سابقا اذ انه قيمة مجهولة يتم استبدالها بالبرامتر الثاني

"Mr.Tn6eL" : هو اسمي

فكذا راح يكون يجيب الاعب اللي اسمه Mr.Tn6eL

الباقي شرحته فوق

(القسم الثالث(استعلام البيانات بالشات

if query and type(query) == "table" and #query > 0 then
    for k, v in ipairs(query) do
        outputChatBox("Name : "..name..", Age : "..v.age..", Favorite color : "..v.favorite_color)
    end
end

if query and type(query) == "table" and #query > 0 then

يتحقق ان الاستعلام تم بالقعل ثم يتحقق ان نوع الاستعلام جدول وثم يتحقق ان الجدول ليس فارغ

for k,v in pairs(query) do

دوران على محتويات الجدول

outputChatBox("Name : "..v.name..", Age : "..v.age..", Favorite color : "..v.favorite_color)

كتابة الاستعلام بالشات

راح يطلع بالشات "Name : "Mr.Tn6eL, Age : 19, Favorite color : orange"

v.name : v = المتغير الذي يجلب القيمة خلال الدوران على محتويات الجدول name = اسم الكولمن

والباقي معروف

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...