چگونه با دستورات php لیست بازشو ایجاد کنیم؟

آموزش قبلی | | | | | آموزش بعدی

فرمی را در نظر بگیرید که شامل نام و جنسیت کاربر باشد. قصد داریم قبل از ارسال اطلاعات به بانک اطلاعاتی آنها را اعتبارسنجی کنیم. برای مثال نام حتما باید مقداری وارد شده باشد و جنسیت باید مشخص شود. شکل زیر فرم را نشان میدهد.

فرم دریافت اطلاعات

برای طراحی فرم شکل بالا کد آنرا به صورت زیر را در یک فایل با پسوند php وارد می کنیم.

  <h2>مثال اعتبارسنجی فرم</h2>
        <p>* فیلدهایی که باید پر شوند</p>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
            نام:
            <input type="text" name="name">*
            <span class="Err"><?php echo $nameErr; ?> </span>
            <br>
            جنسیت:
            <input type="radio" name="gender" value="مرد"> مرد
            <input type="radio" name="gender" value="زن">  زن *
            <span class="Err"><?php echo $genderErr; ?></span>
           <!-- <select>
                <option value="معاف">معاف
                <option value="خدمت کرده" > خدمت کرده
            </select> -->
            <br>
          
            <br>

            <input type="submit" value="نمایش و اعتبارسنجی اطلاعات">

        </form>

جهت عدم ارسال اطلاعات به صفحه دیگر مقدار PHP_SELF برای SERVER_$ در صفت action قرار گرفته است. کلاس Err به صورت زیر در قسمت head به عنوان یک شیوه نامه تعریف می شود.

<style>
            .Err{
                color:red;

            }
        </style>

متغیرهای nameErr و genderErr ابتدا مقدار خالی دریافت می کنند اگر مقادیر فرم معتبر نبودند عباراتی در آنها قرار می گیرد. کد زیر به بررسی وضعیت فرم می پردازد.

 <?php
            $nameErr=$name=$genderErr=$gender="";
            if($_SERVER["REQUEST_METHOD"]=="POST")
            {
               if(empty($_POST["name"])) 
               {
                $nameErr="نام را باید وارد کنید";
               }else{
                   $name=test_input($_POST["name"]);
               }
               if(empty($_POST["gender"])){
                    $genderErr="جنسیت را مشخص کنید";
               }else{
                   $gender=test_input($_POST["gender"]);
               }
            }
                    
           function test_input($data)
           {
               $data=trim($data);
                return $data;
           }     
           
        ?>

همانطوریکه مشاهده می شود ابتدا بررسی می شود که اطلاعات فرم با متد post ارسال شده یا خیر. چنانچه با متد post ارسال شده باشد و مقدارش خالی باشد پیغامی در متغیر nameErr قرار می گیرد. در غیراینصورت متغیر name مقدار وارد شده را دریافت می کند.تابع test_input فاصله های ابتدا و انتهای نوشته های کاربر را حذف می کند. برای جنسیت نیز به همین صورت متغیرهای genderErr و gender مقداردهی می شوند.

چنانچه اطلاعات وارد شده معتبر باشند در پایین فرم مقادیر متغیرهای name و gender نمایش داده می شوند. برای این منظور کد زیر استفاده می شوند.

<?php
            echo "<hr>";
            echo "<h2>اطلاعات وارد شده ی شما:</h2>";
            echo "نام :". $name;
            echo "<br>";
            echo  "جنسیت:‌ ". $gender;
        ?>

چنانچه بخواهیم به کمک دستورات php به فرم یک عنصر لیست بازشو اضافه کنیم که دارای مقادیر خدمت رفته ، معافیت پزشکی و معافیت کفالت باشد کد زیر استفاده می شود.

وضعیت خدمت:
            <?php
                 echo "<select>";
                 $k=array("خدمت رفته","معافیت پزشکی","معافیت کفالت");
                 foreach($k as $value){
                     echo "<option value='" . $value. "'>".$value . "</option>";
                 }
                 echo "</select>"."*";
            ?>
            <br>

کل کد نوشته شده به صورت زیر است:

<html>
    <head>
        <style>
            .Err{
                color:red;

            }
        </style>
    </head>
    <body dir="rtl">
        <?php
            $nameErr=$name=$genderErr=$gender="";
            if($_SERVER["REQUEST_METHOD"]=="POST")
            {
               if(empty($_POST["name"])) 
               {
                $nameErr="نام را باید وارد کنید";
               }else{
                   $name=test_input($_POST["name"]);
               }
               if(empty($_POST["gender"])){
                    $genderErr="جنسیت را مشخص کنید";
               }else{
                   $gender=test_input($_POST["gender"]);
               }
            }
                    
           function test_input($data)
           {
               $data=trim($data);
                return $data;
           }     
           
        ?>

        <h2>مثال اعتبارسنجی فرم</h2>
        <p>* فیلدهایی که باید پر شوند</p>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
            نام:
            <input type="text" name="name">*
            <span class="Err"><?php echo $nameErr; ?> </span>
            <br>
            جنسیت:
            <input type="radio" name="gender" value="مرد"> مرد
            <input type="radio" name="gender" value="زن">  زن *
            <span class="Err"><?php echo $genderErr; ?></span>
           <!-- <select>
                <option value="معاف">معاف
                <option value="خدمت کرده" > خدمت کرده
            </select> -->
            <br>
            وضعیت خدمت:
            <?php
                 echo "<select>";
                 $k=array("خدمت رفته","معافیت پزشکی","معافیت کفالت");
                 foreach($k as $value){
                     echo "<option value='" . $value. "'>".$value . "</option>";
                 }
                 echo "</select>"."*";
            ?>
            <br>

            <input type="submit" value="نمایش و اعتبارسنجی اطلاعات">

        </form>

        <?php
            echo "<hr>";
            echo "<h2>اطلاعات وارد شده ی شما:</h2>";
            echo "نام :". $name;
            echo "<br>";
            echo  "جنسیت:‌ ". $gender;
        ?>

    </body>
</html>