2. Ochiq ma’lunotlar portal opendata.gov.uz dan foydalanib yurtimizdagi mexmonxonalarni ro’yhatini va ularning aloqa ma’lumotlarni aks ettiruvchi dastur yaratish
SQLiteHelper deb nomladik, va SQLiteOpenHelper klassidan extend olgan.
SQLiteOpenHelper — bu bizga database yaratib, undagi amallar bajarishga yordam beruvchi klass (1.72-rasm).
Bu klassning 2 ta metodi mavjud:
onCreate — database yaratish uchun
onUpgrade — yaratilgan database ni yangilash uchun
onCreate metodini ichiga quydagilarni yoziladi:
@Override public void onCreate(SQLiteDatabase db)
{ // TODO Auto-generated method stub db.execSQL(SCRIPT_CREATE_DATABASE); }
Endi quyidagi o‘zgaruvchilarni yaratamiz, bu o‘zgaruvchilar database bilan ishlash uchun har doim kerak bo‘ladigan o‘zgaruvchilar bo‘lganligi uchun hususiyatini public qilamiz
public static final String MYDATABASE_NAME = "opennet";
public static final String MYDATABASE_TABLE = "opennetchilar";
public static final int MYDATABASE_VERSION = 1;
public static final String KEY_ID = "_id";
public static final String ism = "ism";
public static final String familya = "familya";
//create table MY_DATABASE (ID integer primary key, Content text not null);
private static final String SCRIPT_CREATE_DATABASE = "create table "
+ MYDATABASE_TABLE
+ " (" + KEY_ID + " integer primary key autoincrement, " + ism + " text not null, " + familya + " text not null);";
private SQLiteHelper sqLiteHelper;
private SQLiteDatabase sqLiteDatabase;
private Context context;
Endi database yaratish funksiyasiga kelsak, quyidagikodni yozamiz
sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
SQLiteHelper klassiga murojaat qiladi va onCreate metodi ishga tushadi, va bizning databaseimizni yaratib beradi.
Eslatma:database ni 1 marta yaratadi,agar shunday nomli database bor bo‘lsa yaratmaydi.
SqliteAdapter klassimizni ichida quyidagi funksiyalarni yaratamiz:
openToRead() — nomidan ham ma’lumki, databaseni o‘qishga ruxsat olish uchun public SQLiteAdapter openToRead() throws android.database.SQLException { sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION); sqLiteDatabase = sqLiteHelper.getReadableDatabase(); return this; }
openToWrite() — nomidan ham ma’lumki, databaseni tahrirlash uchun ruxsat olish
public SQLiteAdapter openToWrite() throws android.database.SQLException { sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
sqLiteDatabase = sqLiteHelper.getWritableDatabase();
return this; }
Va nihoyat databaseni ishlatib bo‘lganimizdan so‘ng, uni yopish.
public void close(){ sqLiteHelper.close();
}
Database ga ma’lumot qo‘shish funksiyasi
public long insert(String content1, String content2){ ContentValues contentValues = new ContentValues(); contentValues.put(ism, content1); contentValues.put(familya, content2);
return
sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues); }
Database dagi barcha ma’lumotlarni o‘chirish funksiyasi
public int deleteAll(){return sqLiteDatabase.delete(MYDATABASE_TABLE, null, null); }
Databasidagi barcha ma’lumotlarni olish uchun ishlatiladigan funksiya
public Cursor queueAll(){String[] columns = new String[]{KEY_ID, ism, familya};
Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, null, null, null, null, null);
return cursor; }
3.Muayyan maktab misolida dars jadvali, o’quvchilarning fanlardan o’zlashtirish ko’rsatgichlarini va shukabi statistic ma’lumotlarini aks ettiruvchi dastur yaratish
Saytimizda istalgan nom bilan PHP fayl yaratamiz, Masalan «chat_bot.php» va fayl ichida bot dasturini boshlaymiz.
BotFather taqdim etgan, bot tokeni yani kaliti uchun o‘zgarmas constant yaratib olamiz. Constant nomini «API_KEY» deb nomladim.
define('API_KEY', '1016572094:AAGrwwZhjmMHTUaC4VAHgforR3QlFkSbF8s');
Botni boshqaradigan insonning telegram id raqami va Ism Familyasini yoki kompaniya nomini o‘zgaruvchiga saqlaymiz. Telegram id raqamini olish uchun ushbu botga «/start» buyrug‘uni bering. Botga o‘tish: http://t.me/infomiruz_idbot
$Manager = "150105698";
$compane = "infomir.uz";
bot dasturi barcha amallarini kerakli shaklda Telegram Bot API ga yuboradigan asosiy funksiyani yozamiz
function bot($method, $datas = []){
$url = "https://api.telegram.org/bot".API_KEY."/" . $method;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $datas);
$res = curl_exec($ch);
curl_close($ch);
if (!curl_error($ch)) return json_decode($res);
};
Foydalanuvchilarning Ism Familyasi yoki Yozgan murojati tarkibida uchrashi mumkin bo‘lgan kodga a’loqador belgilardan himoya funksiyasini yozamiz
function html($text){
return str_replace(['<','>'],['<','>'],$text);
};
Telegram Bot API dan kelgan JSON formatdagi ma’lumotni «json_decode» funksiyasi yordamida «stdClass Object» shaklida qabul qilamiz
$update = json_decode(file_get_contents('php://input'));
Telegram Bot API bizga yuborayotgan javobni ko‘rishimiz uchun hozircha ushbu kodni qo‘shib qo‘yamiz, ushbu kod bot ishga tushganda javobni yangi «log.txt» faylga yozib qo‘yadi.
//test log
file_put_contents("log.txt",file_get_contents('php://input'));
Botni ishga tushurish uchun Maxsus «setWebhook» funksiayasi orqali Telegram API ga botimiz kodlari qaysi manzilda joylashganligi haqida habar berishimiz lozim. Buning uchun avval Webhook murojat urlini tayyorlaymiz:
https://api.telegram.org/botBuyerda Token/setWebHook?url=php fayl manzili
Mening botim uchun mana bunday shaklda:
https://api.telegram.org/bot1151828985:AAFu_2fo/setWebHook?url=https://infomir.uz/chat_bot.php
Ushbu url so‘rovni browserda ishga tushuramiz va agar hammasini to‘g‘ri qilgan bo‘lsangiz javobi mana bunday ko‘rinishda boladi:
{"ok":true,"result":true,"description":"Webhook was set"}
Botimiz ishga tushdi ammo hozircha bizga hech nima qaytarmaydi, Chunki dastur davomini yozishimiz lozim.
Do'stlaringiz bilan baham: |