PHP पाठ – पाठ 3.4 – MySQL डेटाबेस के साथ कार्य। DELETE क्वेरीज़ (हटाने के लिए)।
पिछले पाठ में हमने समझा कि अपने नियंत्रण वर्ग simpleCMS में नए मेथड्स कैसे जोड़े जाते हैं, अब आइए एक और मेथड जोड़ें — रिकॉर्ड को हटाने के लिए delete()।
हम इस मेथड को सामान्य तरीके से जोड़ेंगे:
public function delete($mid){ }
जैसा कि आप देख रहे हैं, हम $mid पैरामीटर (हमारे रिकॉर्ड का ID) पास कर रहे हैं। यदि आपको पिछला पाठ याद हो, तो हमने GET अनुरोध से सीधे पैरामीटर पास करने का तरीका अपनाया था, और अब हम इसे दूसरे तरीके से करेंगे।
तो हमने मेथड को परिभाषित कर लिया है, अब index.php फ़ाइल में इसका रूटिंग भाग जोड़ते हैं:
switch ($_GET['admin']){ case 'add': print $obj->display_admin(); // यदि admin=add, तो संदेश जोड़ने का फ़ॉर्म दिखाएँ break; case 'update': print $obj->display_update(); // यदि admin=update, तो संपादन फ़ॉर्म दिखाएँ break; case 'delete': if($_GET['mid']){ //यदि admin=delete है, तो mid पैरामीटर की जाँच करें $obj->delete($_GET['mid']); //संदेश हटाने की मेथड कॉल करें print $obj->display_public(); // फिर शेष संदेश प्रदर्शित करें }else{ print '<p>mid चयनित नहीं है!</p>'; print $obj->display_public(); // संदेशों की सूची दिखाएँ } break; default: print $obj->display_public(); // यदि कोई पैरामीटर नहीं, तो सभी संदेश दिखाएँ }
ताकि यह सब सही ढंग से कार्य करे, संदेश हटाने का URL इस प्रकार होना चाहिए:
http://test/index.php?admin=delete&mid=7
इस मामले में mid=7 वाला संदेश हट जाएगा। इसके लिए हम अपने delete() मेथड को निम्न प्रकार से लागू करेंगे:
public function delete($mid){ mysql_query('DELETE FROM Messages WHERE mid='.$mid) or die(mysql_error()); }
आइए समझते हैं कि MySQL में DELETE क्वेरी कैसे काम करती है। सबसे पहले DELETE
लिखा जाता है, उसके बाद FROM
ऑपरेटर आता है। फिर हम उस तालिका का नाम देते हैं जिससे रिकॉर्ड हटाना है (सावधान रहें — यदि कोई शर्त नहीं दी गई तो तालिका की सभी पंक्तियाँ हट जाएँगी!)। इसके बाद हम शर्त (WHERE) देते हैं कि कौन-से रिकॉर्ड हटाने हैं। हमारे मामले में हम उस रिकॉर्ड को हटाना चाहते हैं जिसका mid पास किए गए पैरामीटर के बराबर है। अंत में हम क्वेरी की सफलता की जाँच करते हैं।
जैसा कि पहले बताया गया, हमारा मेथड तब कॉल होगा जब URL में दो पैरामीटर होंगे: admin=delete&mid=7। इसके लिए हम प्रत्येक संदेश के नीचे एक "हटाएँ" लिंक जोड़ेंगे, इसके लिए 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" id="mid-' . $row['mid'] . '">'; // div लपेटने के लिए $content .= '<span class="time">#' . $row['mid'] . ' दिनांक ' . date('d-m-Y', $row['created']) . '</span><h2>' . $row['title'] . '</h2>'; $content .= '<p>' . $row['bodytext'] . '</p>'; // संदेश का टेक्स्ट प्रदर्शित करें $content .= '<p>'; $content .= '<a href="/index.php?admin=update&mid=' . $row['mid'] . '">संदेश संपादित करें</a>'; // संपादन लिंक $content .= '<a href="/index.php?admin=delete&mid=' . $row['mid'] . '">संदेश हटाएँ</a>'; // हटाने का लिंक $content .= '</p>'; $content .= '</div>'; // div का अंत } $content .= '<p><a href="/index.php?admin=add">संदेश जोड़ें</a></p>'; return $content; }
अब जब हम "संदेश हटाएँ" लिंक पर क्लिक करते हैं, तो संदेश अपेक्षित रूप से हट जाएगा। अब हम PhpMyAdmin के बजाय सीधे वेबसाइट से अनावश्यक संदेश आसानी से हटा सकते हैं।
संपादन और हटाने के लिंक के बीच थोड़ा अंतराल जोड़ने के लिए CSS में थोड़ा संशोधन करें:
.post a{ padding-right: 5px; }
मुझे लगता है, यह पाठ यहाँ समाप्त होता है। अगले पाठ में हम एक और महत्वपूर्ण ऑपरेटर — JOIN — का अध्ययन करेंगे, जो हमें कई तालिकाओं से डेटा चयन करने की अनुमति देता है।