PHP դասեր - Դաս 3.3 - Աշխատանք MySQL տվյալների բազայի հետ։ Տվյալների թարմացում UPDATE օպերատորով։
Մենք արդեն ծանոթացել ենք MySQL-ի այնպիսի օպերատորների հետ, ինչպիսիք են SELECT-ը և INSERT INTO-ն, իսկ հիմա ժամանակն է հասկանալ, թե ինչպես թարմացնել արդեն ԲԴ-ում ներմուծված տվյալները։ Դրա համար կօգտագործենք SQL-ի UPDATE օպերատորը։ Բայց նախ եկեք փոխենք մեր index.php ֆայլը՝ ավելացնելով մեկ այլ ուղու մշակման հնարավորություն։ Գտեք այս հատվածը՝
if( $_GET['admin'] == 1 ){ // եթե URL-ում կա admin փոփոխականը
print $obj->display_admin(); // եթե փոփոխականը կա, ցուցադրում ենք ձևը
}else{
print $obj->display_public(); // եթե չկա, ապա ցուցադրում ենք հաղորդագրությունները
}</pre>
Եվ փոխեք այն հետևյալ կոդով՝
switch ($_GET['admin']){
case 'add':
print $obj->display_admin(); // եթե admin փոփոխականը հավասար է add, ցուցադրում ենք ավելացման ձևը
break;
case 'update':
print $obj->display_update(); // եթե admin փոփոխականը հավասար է update, ցուցադրում ենք թարմացման ձևը
break;
default:
print $obj->display_public(); // եթե փոփոխական չկա, ցուցադրում ենք հաղորդագրությունները
}</pre>
Ես փոխեցի պայմանական if օպերատորը switch-ով, որը թույլ է տալիս մի քանի տարբերակ միաժամանակ մշակել՝ $_GET['admin'] արժեքի հիման վրա։ Հետագայում կունենանք նաև delete տարբերակ։ Քանի որ ես 1-ը փոխեցի add-ով, անհրաժեշտ է փոխել հղումների ստեղծումը simpleCMS.php ֆայլում՝
$content .= '<p><a href="/index.php?admin=1">Ավելացնել հաղորդագրություն</a></p>';
Փոխեք հետևյալ կերպ՝
$content .= '<p><a href="/index.php?admin=add">Ավելացնել հաղորդագրություն</a></p>';
Բացի այդ, պետք է ավելացնել display_update() անունով նոր մեթոդ, որը կկանչվի այն ժամանակ, երբ get-հարցման մեջ admin փոփոխականը հավասար է update։ Ավելացնում ենք՝
public function display_update(){
}
Այսպիսով, մենք ստեղծեցինք ուղու մշակում, որի արդյունքում կանչվում է մեր նոր display_update() մեթոդը։ Մնում է ավելացնել հղումներ այդ մեթոդի կանչման էջին և իրականացնել մեթոդի տրամաբանությունը։
Եկեք նախ մտածենք՝ ինչպես ենք իրականացնելու գրառումների թարմացումը։ Անհրաժեշտ է կատարել մի հարցում WHERE պայմանով, որպեսզի կոնկրետ նշենք, թե որ գրառումն ենք թարմացնելու։ Դա կարող ենք անել՝ փոխանցելով գրառման id-ն, այսինքն՝ մեր դեպքում mid սյունակը։ Այդ պատճառով անհրաժեշտ կլինի mid-ի արժեքը փոխանցել display_update() մեթոդին։ Դա կարելի է անել get-հարցման միջոցով, օրինակ՝
http://test/index.php?admin=update&mid=3
Կամ էլ՝ որպես պարամետր մեթոդի մեջ՝
public function display_update($mid){
}
Եվ կանչել մեթոդը՝
switch ($_GET['admin']){
case 'add':
print $obj->display_admin(); // ավելացման ձև
break;
case 'update':
$mid = 1; // կամ այստեղ փոխանցել $_GET['mid']
print $obj->display_update($mid); // թարմացման ձև
break;
default:
print $obj->display_public(); // հիմնական էջ
}
Ցանկացած դեպքում mid արժեքը պետք է փոխանցվի։ Ավելի հեշտ լինելու համար օգտագործենք առաջին տարբերակը։
public function display_update(){
$message_id = $_GET['mid'];
}
Այսպիսով, մենք փոխանցեցինք mid արժեքը։ Իսկ ի՞նչ անել, եթե այն բացակայում է։ Դա պետք է ստուգել՝
public function display_update(){
$message_id = $_GET['mid'];
if(!empty($message_id)){
}else{
$content .= '<p>Չկա mid արժեք!</p>';
$content .= '<p><a href="/index.php">Վերադառնալ գլխավոր</a></p>';
}
return $content;
}
Այժմ, եթե get-հարցման մեջ կա admin=update, բայց չկա mid, ապա կտեսնենք էջ՝ գլխավոր հղմամբ՝
http://test/index.php?admin=update
Շարունակությունը թարգմանելու՞։
Այսպիսով, մենք հասել ենք մի պահի, երբ մեզ անհրաժեշտ են խմբագրման հղումներ։ Պետք է խմբագրել display_public() մեթոդը՝ այդ հղումները ցուցադրելու համար՝
public function display_public() {
$content = '';
$sql = 'SELECT * FROM Messages ORDER BY mid DESC';
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$content .= '<div class="post">';
$content .= '<span class="time">#' . $row['mid'] . ' от ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>';
$content .= '<p>' . $row['bodytext'] . '</p>';
$content .= '<p><a href="/index.php?admin=update&mid=' . $row['mid'] . '">Խմբագրել հաղորդագրությունը</a>';
$content .= '</div>';
}
$content .= '<p><a href="/index.php?admin=add">Ավելացնել հաղորդագրություն</a></p>';
return $content;
}
Այժմ յուրաքանչյուր հաղորդագրության տակ կլինի հղում նրա խմբագրման էջին։ Այդ էջը կցուցադրվի մեր display_update() մեթոդով։ Եկեք գրենք այդ մեթոդի կոդը։ Ձևը կկարողանա վերցնել արդեն գոյություն ունեցող արժեքները ԲԴ-ից և կունենա թաքնված դաշտ mid արժեքի համար՝
public function display_update() {
$message_id = $_GET['mid'];
if(!empty($message_id)) {
$result = mysql_query('SELECT * FROM Messages WHERE mid='.$message_id);
$message = mysql_fetch_object($result);
$content = '';
$content .= '<form action="/index.php?admin=update" method="post">';
$content .= '<label for="title">Անուն՝</label><br />';
$content .= '<input name="title" id="title" type="text" maxlength="150" value="' . $message->title . '" />';
$content .= '<div class="clear"></div>';
$content .= '<input name="mid" id="mid" type="hidden" value="'.$message->mid.'" />';
$content .= '<label for="bodytext">Հաղորդագրություն՝</label><br />';
$content .= '<textarea name="bodytext" id="bodytext">' . $message->bodytext . '</textarea>';
$content .= '<div class="clear"></div>';
$content .= '<input type="submit" value="Պահպանել" />';
$content .= '</form>';
$content .= '<p><a href="/index.php">Վերադառնալ գլխավոր</a></p>';
} else {
if (!empty($_POST)) {
mysql_query('UPDATE Messages SET title="'.$_POST["title"].'", bodytext="'.$_POST["bodytext"].'" WHERE mid='.$_POST["mid"]);
$content .= '<p>Հաղորդագրությունը փոփոխվել է!';
$content .= '<p><a href="/index.php#mid-'.$_POST['mid'].'">Դիտել գրառումը</a></p>';
} else {
$content .= '<p>Չկա mid արժեք!</p>';
$content .= '<p><a href="/index.php">Վերադառնալ գլխավոր</a></p>';
}
}
return $content;
}
Սա մեր display_update() մեթոդի ամբողջ կոդն է։ Եկեք նայենք, թե ինչպես է կառուցված UPDATE հարցումը՝
Սկզբում գրվում է UPDATE օպերատորը, հետո՝ աղյուսակի անունը։ Դրանից հետո գալիս է SET օպերատորը։ Այնուհետև սահմանվում են դաշտերը, որոնք պետք է թարմացվեն՝ իրենց նոր արժեքներով։ Վերջում՝ WHERE պայմանը, որը նշում է, որ պետք է թարմացնել այն գրառումը, որի mid-ը համընկնում է նշված արժեքի հետ։
Հետագայում ես կստեղծեմ MySQL օպերատորների համառոտ ուղեցույց։ Իսկ այս դասը հիմնականում նախատեսված է նրանց համար, ովքեր նոր են սկսում սովորել PHP և MySQL։