Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

PHP դասեր - Դաս 3.2 - Աշխատանք MySQL բազայի հետ։ Տվյալների ավելացում INSERT INTO։ Տվյալների ընտրում SELECT

10/05/2025, by Ivan

Նախորդ դասում մենք ստեղծեցինք աղյուսակ մեր կայքի համար։ Այս դասում մենք կբարելավենք մեր աղյուսակը և արդեն կսկսենք աշխատել ԲՋ-ի (տվյալների բազայի) հետ՝ մուտքագրելով այնտեղ տվյալներ և ստանալով այդ տվյալները աղյուսակից։ Կարծում եմ բարդ ոչինչ չկա, ուստի եկեք սկսենք։

Սկզբի համար առաջարկում եմ բարելավել մեր messages աղյուսակը։ Հիմա այնտեղ կան դաշտեր տվյալների համար, բայց անհրաժեշտ է ևս մեկ դաշտ՝ գրառումների համարակալման համար։ Եթե բացեք Drupal-ի տվյալների բազան, ապա node աղյուսակում կգտնեք nid դաշտը, որի միջոցով համարակալվում են նոդերը։ Նման բան պետք է ավելացնել նաև մեր messages աղյուսակում։

Եկեք մտնենք phpMyAdmin (http://localhost/tools/phpmyadmin Դենվերի համար) և խմբագրենք մեր աղյուսակը։ Ավելացնենք ևս մեկ սյուն աղյուսակի սկզբում, ինչպես ցույց է տրված նկարում՝

PhpMyAdmin

Սյունը կոչենք mid (message id), տվյալների տեսակը՝ INT (ամբողջ թիվ), երկարությունը՝ 11 նիշ։ Նշենք նաև AUTO_INCREMENT-ը, որը նշանակում է, որ տվյալ սյունում կկատարվի ավտոմատ համարակալում։ Իսկ Index դաշտում նշենք primary, ինչը կնշանակի, որ սա աղյուսակի հիմնական բանալին է։

PhpMyAdmin mid column

Եթե հիշում եք, մենք simpleCMS դասում ունեինք առանձին մեթոդ աղյուսակ ստեղծելու համար։ Կարծում եմ հիմա անհրաժեշտ է փոխել այդ մեթոդը, որպեսզի այն mid դաշտն էլ ավելացնի։ Բացեք messages աղյուսակը և սեղմեք export․

PhpMyAdmin export

Դուք կհայտնվեք աղյուսակի արտահանման էջում։ Արտահանումը իրականացվում է SQL հարցման տեսքով՝ աղյուսակների ստեղծման և խմբագրման համար։ Եթե phpMyAdmin-ում աղյուսակը խմբագրում եք, ապա կարող եք վերցնել դրա ստեղծման SQL հարցումը՝ շատ հարմար գործիք է։

Արտահանման էջում թողեք ամեն ինչ լռելյայն և սեղմեք OK։ PhpMyAdmin-ը ձեզ կտա SQL հարցումը՝ կամ անմիջապես դիտարկչում, կամ ֆայլի տեսքով։ Երկուսն էլ մեզ հարմար են։ Մեզ պետք է պատճենել այս հատվածը՝

PhpMyAdmin table

Ուշադրություն դարձրեք թեք չակերտներին՝ դրանք օգտագործվում են phpMyAdmin-ում։ Իսկ php-ում կարող եք օգտագործել սովորական միակողմանի չակերտներ։ Պատճենեք տեքստը buildDB() մեթոդի մեջ՝

  public function buildDB(){
    $sql = "CREATE TABLE IF NOT EXISTS 'messages' (
              'mid' int(11) NOT NULL AUTO_INCREMENT,
              'title' varchar(150) DEFAULT NULL,
              'bodytext' text,
              'created' varchar(100) DEFAULT NULL,
              PRIMARY KEY ('mid')
            ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
            
    return mysql_query($sql);    
  }

Եկեք հիմա ստուգենք ինչպես է այն աշխատում։ Ջնջենք messages աղյուսակը։

PhpMyAdmin drop table

Հաստատեք ջնջումը։ Այժմ եթե գործարկենք index.php մեր կայքում, կգործի buildDB() մեթոդը և աղյուսակը կրկին կստեղծվի։

  public function buildDB(){
    $sql = "CREATE TABLE Messages
    (
    mid int NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(mid),
    title varchar(15),
    bodytext text,
    created  int(11)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";

    $result = mysql_query($sql);   
    print_r($result);    
  }

Այժմ գործարկում ենք index.php և Messages աղյուսակը կրկին հայտնվում է, ինչպես նախկինում։

INSERT INTO հարցումներ՝ տվյալների գրանցման համար

Տվյալների բազան արդեն ստեղծված է, ամեն ինչ պատրաստ է հաղորդագրությունների գրանցման և ցուցադրման մեթոդների իրականացման համար։ Սկսենք գրանցումից։ Բացեք write() մեթոդը՝ պատրաստ ենք այն փոփոխելու։

Տվյալների գրանցումն աղյուսակներում կատարվում է INSERT INTO օպերատորի միջոցով՝ այսպես․

  public function write($p) {
    $sql = 'INSERT INTO Messages (title, bodytext, created) VALUES ("'. $p["title"] . '", "' . $p["bodytext"] . '", ' . time() . ')';
    return mysql_query($sql);
  }

Ցանկանու՞մ եք շարունակել թարգմանությունը։

Եկեք հիմա հասկանանք՝ ինչպես են տվյալները գրանցվում։ Ինչպես արդեն ասացի, SQL գրանցման հարցումը սկսվում է INSERT INTO օպերատորով, որին հաջորդում է աղյուսակի անունը՝ Messages։ Ապա նշում ենք՝ որ դաշտերում ենք ցանկանում գրանցել արժեքներ։ Ուշադրություն՝ mid դաշտը չենք նշում, քանի որ MySQL-ը ավտոմատ կսահմանի դրա արժեքը՝ շնորհիվ AUTO_INCREMENT-ի։ Հետո գրում ենք VALUES (արժեքներ) օպերատորը, որի հետևից գալիս են համապատասխան արժեքները։ Դաշտերի և արժեքների կարգը պետք է համընկնի։

Եթե արժեքը տողային է, ապա այն պետք է վերցնել չակերտների մեջ։ Միևնույն ժամանակ պետք է զգույշ լինել չակերտների տեսակի հետ՝ օրինակ, եթե ամբողջ SQL հարցումը գրվում է միակողմանի չակերտներով, ապա փոփոխականներից ստացվող արժեքները պետք է լինեն երկկողմանի չակերտների մեջ։ Օրինակ՝

"'. $p["title"] . '"

Այսպես՝ կարգը կլինի՝ երկկողմանի, միակողմանի, կետ, փոփոխական, կետ, միակողմանի, երկկողմանի։

Կարծում եմ այս մեկ օրինակը բավական է։ Հետագայում կլինեն նոր օրինակներ։ Ուստի, եթե միանգամից չհասկացաք, մի անհանգստացեք։ Եկեք հիմա երկու գրառում անենք մեր աղյուսակում՝ դրա համար փոխեք write() մեթոդը՝ ինչպես ցույց տվեցի վերևում։

SELECT հարցումներ՝ տվյալների ընտրություն

Ստեղծեցինք մի քանի տող, տեսանք դրանք phpMyAdmin-ում․

PhpMyAdmin Browse

Այժմ կարող ենք ցուցադրել այդ գրառումները display_public() մեթոդի միջոցով՝ որը նույնպես կփոխենք։ Տվյալների ընտրությունը կկատարվի SELECT օպերատորով։ Սկսենք ամենապարզ օրինակով՝

  public function display_public() {
    $content = '';

    $sql = 'SELECT * FROM Messages'; // հարցում ընտրության համար
    $result = mysql_query($sql);  // արդյունքը պահում ենք փոփոխականում

    while($row = mysql_fetch_array($result)){
      print '
'; print '#' . $row['mid'] . ' от ' . date('d-m-Y', $row['created']) . '

' . $row['title'] . '

'; print '

' . $row['bodytext'] . '

'; print '
'; } $content .= '

Ավելացնել հաղորդագրություն

'; return $content; }

Ես ամբողջությամբ վերաշարադրեցի display_public() մեթոդը։ Այժմ բոլոր հաղորդագրությունները ցուցադրվում են տվյալների բազայից։ Արի վերլուծենք այս օրինակը։ SELECT հարցումը սկսվում է SELECT օպերատորով, որին հաջորդում է * (աստղանիշը), որը նշանակում է՝ վերցնել բոլոր դաշտերը։ Եթե գրեինք այսպես՝

$sql = 'SELECT mid,title FROM Messages';

Դա կնշանակեր՝ վերցնել միայն mid և title դաշտերը՝ անտեսելով bodytext և created-ը։

Հետո գալիս է FROM օպերատորը, որը ցույց է տալիս՝ որ աղյուսակից վերցնենք։

mysql_query() ֆունկցիայի արդյունքը պետք է պահենք փոփոխականում (օրինակ՝ $result), որպեսզի հետո այն մշակենք mysql_fetch_array() ֆունկցիայով։

Պատկերացրեք՝ ընտրել ենք 3 գրառում։ mysql_fetch_array() յուրաքանչյուր կանչով վերադարձնում է հաջորդ տողի տվյալները՝ զանգվածի տեսքով։ Երբ այլ տող չկա, այն վերադարձնում է false։ Այդ պատճառով օգտագործում ենք while ցիկլ։

Սա կարող է բարդ թվալ սկզբում, բայց ժամանակի ընթացքում կհասկանաք։ SQL օպերատորները շատ չեն, հեշտ է սովորել։

SELECT հարցում՝ կարգավորում ORDER BY

Ընտրության կարգը կարելի է փոխել ORDER BY օպերատորով։ Լռելյայն այն կարգավորում է աճման կարգով․

$sql = 'SELECT * FROM Messages ORDER BY mid';

Սահմանելու համար նվազման կարգ՝ օգտագործում ենք DESC (descending) օպերատորը՝

$sql = 'SELECT * FROM Messages ORDER BY mid DESC';

Աճման կարգը կարելի է նշել ASC (ascending), սակայն դա լռելյայն է՝

$sql = 'SELECT * FROM Messages ORDER BY mid ASC';

SELECT հարցում՝ պայմաններ WHERE

Բացի կարգավորումից, կարելի է նաև սահմանել պայման՝ օգտագործելով WHERE օպերատորը՝

$sql = 'SELECT * FROM Messages WHERE mid3 ORDER BY mid DESC';

Սա կվերցնի առաջին երկու գրառումները՝ mid=1 և mid=2 (եթե կան)։ Կարելի է նաև օգտագործել AND և OR օպերատորները՝ մի քանի պայմաններ կապելու համար։

$limit_time = time() - 3600; // ժամանակը՝ մեկ ժամ առաջ
$sql = 'SELECT * FROM Messages WHERE mid3 AND created>' . $limit_time . ' ORDER BY mid DESC';

Այսպես մենք կավելացնենք ևս մեկ պայման՝ գրառման ժամկետը։ Կարծում եմ՝ SELECT հարցումներն այսքանով բավական են։ Եկեք անցնենք հաջորդ դասին։