پی ایچ پی کی مدد سے ڈراپ ڈاؤن مینیو کی ویلیو دوبارہ سلیکٹ کریں

ویب براؤزر جس کے سامنے صارف بیٹھا ہے، اور ویب سرور جس پر مطلوبہ ویب سائیٹ پڑی ہے، ان دونوں کے درمیان رابطہ HTTP پروٹوکول کے تحت ہوتا ہے۔ یہ رابطہ Stateless ہوتا ہے۔ یعنی براؤزر کی جانب سے سرور کی طرف بھیجی گئی ہر درخواست ایک دوسرے سے الگ اور آزاد ہوتی ہے۔ ویب سرور کی طرف بھیجی گئی ان Requests کا آپس میں کوئی تعلق نہیں ہوتا۔ یہی وجہ ہے کہ جب ہم ویب فارم بھر کے سرور کی طرف بھیجتے ہیں اور سرور کی طرف سے جواب آنے پر وہی ویب پیج دوبارہ لوڈ ہوتا ہے تو فارم میں سے ویلیوز غائب ہو جاتی ہیں۔ چنانچہ اس فارم کی ویلیوز برقرار رکھنے کے لیے ہمیں سرور سے تمام ویلیوز واپس منگوانا پڑتی ہیں۔ یعنی براؤزر اور سرور کے درمیان رابطے کو Stateful بنانے کے لیے ہمیں پروگرامنگ لینگویج مثلاً‌ PHP وغیرہ استعمال کرنا پڑتی ہے۔


HTML فارم کی input فیلڈ کی ویلیو دوبارہ سیٹ کرنا آسان ہے، لیکن select یعنی ڈراپ ڈاؤن مینیو کی ویلیو دوبارہ سیٹ کرنے کے لیے تھوڑا سا کام زیادہ کرنا پڑتا ہے۔ چنانچہ اس ٹٹوریل میں اس مسئلے کا ایک حل پیش کیا گیا ہے کہ جب سرور سے جواب واپس آئے تو ڈراپ ڈاؤن مینیو کی وہی ویلیو سلیکٹ رہے جو صارف نے فارم بھرتے وقت منتخب کی تھی۔

درج ذیل تصویر میں آپ دیکھ رہے ہیں کہ فارم پوسٹ کرنے کے بعد سرور کی طرف سے جواب آیا ہے۔ اب بھی فارم کی وہی ویلیو سلیکٹ ہے جو فارم پوسٹ کرنے سے پہلے سلیکٹ کی گئی تھی۔

ویب فارم پوسٹ کرنے کے بعد ڈراپ ڈاؤن مینیو کی منتخب شدہ ویلیو


درج ذیل کوڈ میں کامنٹس کی لائنوں کے ساتھ نمبر دیے گئے ہیں۔ ان نمبروں کے لحاظ سے درج ذیل کوڈ کی وضاحت دیکھیں:

  1. اس جگہ پر یہ بتایا گیا ہے کہ اگر صارف نے ویب فارم سرور پر بھیجا ہے تو اس کی منتخب کردہ ویلیو پرنٹ کر دو۔
  2. اس وقت ہم HTML کے select ٹیگ کے اندر ہیں جو ڈراپ ڈاؤن مینیو کے لیے استعمال ہوتا ہے۔ اس ٹیگ میں عام طور پر درج ذیل طریقے سے آپشنز کی فہرست فراہم کی جاتی ہے:
    <option>Apple</option>
    <option>Apricot</option>
    ...
    لیکن یہ آپشنز اس طرح سے تب فراہم کیے جاتے ہیں جب اس بات کا مکمل یقین ہو کہ صارف یہ فارم ایک ہی کوشش میں سرور پر بھیج دے گا اور پھر اس فارم پر کبھی واپس نہیں آئے گا۔ لیکن اگر صارف اس فارم پر واپس آسکتا ہے تو پھر پروگرامنگ کے ذریعے اس ڈراپ ڈاؤن کی وہی ویلیو سلیکٹ کرنا ضروری ہے جو صارف نے فارم بھیجتے وقت منتخب کی تھی۔ چنانچہ آپ دیکھ رہے ہیں کہ اس مقصد کے لیے اس ڈراپ ڈاؤن کی تمام ویلیوز PHP کے ایک Array میں رکھی گئی ہیں۔
  3. یہاں foreach کا لوپ استعمال کیا گیا ہے جس کی مدد سے ہم []options$ اررے کی تمام ویلیوز باری باری پڑھیں گے۔
  4. لوپ کے ہر چکر پر selection$ ویری ایبل خالی کر دیا جائے گا تاکہ ڈراپ ڈاؤن کی ہر ویلیو کے ساتھ "selected="selected نہ شامل ہو جائے۔
  5. یہاں ہم If-statement کے ذریعے چیک کر رہے ہیں کہ اگر فارم کی پوسٹ کی گئی ویلیو Array کی اس ویلیو کے برابر ہے تو پھر selection$ ویری ایبل میں "selected="selected شامل کر دیا جائے۔
  6. یہاں Array کی ہر ویلیو کو ڈراپ ڈاؤن مینیو کے آپشن کے طور پر پرنٹ کیا جا رہا ہے۔ لیکن selection$ ویری ایبل صرف ایک آپشن میں "selected="selected شامل کرے گا، باقی تمام آپشنز کے لیے یہ ویری ایبل خالی ہوگا۔

<!DOCTYPE html>
<html>
<head><title>Reselect Drop Down Value Using php</title></head>
<body>
 
  <form action="index.php" method="post">
 
    <?php 
      // 1
      if ($_SERVER['REQUEST_METHOD'] == 'POST') {
          print "<br>You have submitted: <b>" . $_POST['fruit'] . "</b><br><br>";
      }
    ?>
 
    List of Available Fruits 
    <select name="fruit" size="1">
    <?php 
        // 2
        $options = array("Apple", "Apricot", "Banana", "Blueberry", "Coconut", "Cranberry", "Date", "Dragonfruit");
        // 3
        foreach ($options as $option) {
            // 4
            $selection = "";
            // 5
            if ($_POST['fruit'] == $option) {
                $selection = " selected='selected'";
            }
            // 6
             print "<option" . $selection . ">" . $option . "</option>";
        }
    ?>
    </select><br>
 
    <br>
    <input type="submit" value="Submit A Fruit">
 
  </form>
 
</body>
</html>


نوٹ: اگر ڈراپ ڈاؤن مینیو کے آپشنز درج ذیل طریقے سے مہیا کیے جائیں تو پھر value ایٹری بیوٹ کی ویلیو سرور پر بھیجی جاتی ہے۔ یعنی اس صورت میں Banana نہیں بلکہ banana ویلیو بھیجی جائے گی۔

<option value="banana">Banana</option>