2017-08-02 39 views
0

我正在学习PHP,我很努力地找到解决我的问题的方法。我创建了一个可以编辑会员资格数据的页面。我所有的'type = text'字段都正确显示了成员的当前值。但是在2个下拉字段中选择的值(语言和兴趣)不会显示在编辑字段中。他们虽然更新到MySql,但当我想编辑成员的“语言”和“兴趣”字段时,显示“选择一个...”选项。用PHP中的下拉菜单更新会员表格

我该怎么做才能使当前值存储在数据库中的2个下拉列表显示在成员需要编辑的UI上?

这是我的PHP代码:

<?php 

       $id = isset($_GET['id']) ? $_GET['id'] : die('ERROR: Record ID not Found'); 

       include('dbconnect.php'); 

       try{ 

        $sql = "SELECT id, firstName, lastName, idNumber, mobileNumber, email, birthDate, languageType, interest FROM members WHERE id = ? LIMIT 0,1"; 
        $stmt = $conn->prepare($sql); 

        $stmt->bindParam(1, $id); 
        $stmt->execute(); 

        $row = $stmt->fetch(PDO::FETCH_ASSOC); 

        $firstName = $row['firstName']; 
        $lastName = $row['lastName']; 
        $idNumber = $row['idNumber']; 
        $mobileNumber = $row['mobileNumber']; 
        $email = $row['email']; 
        $birthDate = $row['birthDate']; 
        $languageType = $row['languageType']; 
        $interest = $row['interest']; 

       } 

       catch(PDOException $exception){ 
        die('ERROR: '.$exception->getMessage()); 
       } 

      ?> 

      <?php 

      $id = isset($_GET['id']) ? $_GET['id'] : die('ERROR: Record ID not found.'); 

      include 'dbconnect.php'; 

      if($_POST){ 

       try{ 

        $sql = "UPDATE members SET 
              firstName=:firstName, 
              lastName=:lastName, 
              idNumber=:idNumber, 
              mobileNumber=:mobileNumber, 
              email=:email, 
              birthDate=:birthDate, 
              languageType=:languageType, 
              interest=:interest 
            WHERE id=:id"; 

        $stmt = $conn->prepare($sql); 

        $firstName = htmlspecialchars(strip_tags($_POST['firstName'])); 
        $lastName = htmlspecialchars(strip_tags($_POST['lastName'])); 
        $idNumber = htmlspecialchars(strip_tags($_POST['idNumber'])); 
        $mobileNumber = htmlspecialchars(strip_tags($_POST['mobileNumber'])); 
        $email = htmlspecialchars(strip_tags($_POST['email'])); 
        $birthDate = htmlspecialchars(strip_tags($_POST['birthDate'])); 
        $languageType = $_POST['languageType']; 
        $interest = $_POST['interest']; 

        $stmt->bindParam(':firstName', $firstName); 
        $stmt->bindParam(':lastName', $lastName); 
        $stmt->bindParam(':idNumber', $idNumber); 
        $stmt->bindParam(':mobileNumber', $mobileNumber); 
        $stmt->bindParam(':email', $email); 
        $stmt->bindParam(':birthDate', $birthDate); 
        $stmt->bindParam(':languageType', $languageType); 
        $stmt->bindParam(':interest', $interest); 
        $stmt->bindParam(':id', $id); 

        if($stmt->execute()){ 
         echo "<div class='alert alert-success'>Member was updated.</div>"; 
        }else{ 
         echo "<div class='alert alert-danger'>Unable to update member. Please try again.</div>"; 
        } 

       } 

       catch(PDOException $exception){ 
        die('ERROR: ' . $exception->getMessage()); 
       } 
      } 
      ?> 

这里是HTML:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"] . "?id={$id}");?>" method="post"> 
       <table class='table table-hover table-responsive table-bordered'> 
        <tr> 
         <td>First Name</td> 
         <td><input type='text' name='firstName' value="<?php echo htmlspecialchars($firstName, ENT_QUOTES); ?>" class='form-control' /></td> 
        </tr> 
        <tr> 
         <td>Last Name</td> 
         <td><input type='text' name='lastName' value="<?php echo htmlspecialchars($lastName, ENT_QUOTES); ?>" class='form-control' /></td> 
        </tr> 
        <tr> 
         <td>ID Number</td> 
         <td><input type='text' name='idNumber' value="<?php echo htmlspecialchars($idNumber, ENT_QUOTES); ?>" class='form-control' /></td> 
        </tr> 
        <tr> 
         <td>Mobile Number</td> 
         <td><input type='text' name='mobileNumber' value="<?php echo htmlspecialchars($mobileNumber, ENT_QUOTES); ?>" class='form-control' /></td> 
        </tr> 
        <tr> 
         <td>Email</td> 
         <td><input type='text' name='email' value="<?php echo htmlspecialchars($email, ENT_QUOTES); ?>" class='form-control' /></td> 
        </tr> 
        <tr> 
         <td>Birth Date</td> 
         <td><input type='date' name='birthDate' value="<?php echo htmlspecialchars($birthDate, ENT_QUOTES); ?>" class='form-control' /></td> 
        </tr> 
        <tr> 
         <td>Language</td> 
         <td> 

          <select name='languageType' class='form-control' value="<?php echo $languageType; ?>" /> 

           <option>Select One...</option> 
           <option>Afrikaans</option> 
           <option>English</option> 
           <option>Zulu</option> 
           <option>Xhosa</option> 
           <option>Venda</option> 
           <option>French</option> 

         </td> 
        </tr> 
        <tr> 
         <td>Interest</td> 
         <td> 

          <select name='interest' class='form-control' value="<?php echo htmlspecialchars($interest, ENT_QUOTES); ?>" /> 

            <option>Select One...</option> 
            <option>Golf</option> 
            <option>Rugby</option> 
            <option>Tennis</option> 
            <option>Cricket</option> 
            <option>Swimming</option> 
            <option>Hiking</option> 
            <option>Surfing</option> 
            <option>Movies</option> 
            <option>Swords</option> 

         </td> 
        </tr> 
        <tr> 
         <td></td> 
         <td> 
          <input type='submit' value='Save Changes' class='btn btn-primary' /> 
          <a href='index.php' class='btn btn-danger'>Back to read members</a> 
         </td> 
        </tr> 
       </table> 
      </form> 
+0

值必须在选择不选择 –

回答

0

这是完全错误的:

<select name='languageType' class='form-control' value="<?php echo $languageType; ?>" /> 

           <option>Select One...</option> 
           <option>Afrikaans</option> 
           <option>English</option> 
           <option>Zulu</option> 
           <option>Xhosa</option> 
           <option>Venda</option> 
           <option>French</option> 


    <select name='interest' class='form-control' value="<?php echo htmlspecialchars($interest, ENT_QUOTES); ?>" /> 

            <option>Select One...</option> 
            <option>Golf</option> 
            <option>Rugby</option> 
            <option>Tennis</option> 
            <option>Cricket</option> 
            <option>Swimming</option> 
            <option>Hiking</option> 
            <option>Surfing</option> 
            <option>Movies</option> 
            <option>Swords</option> 

的选择不具有价值属性,值属性属于选项。

这是怎么了你的选择应该是:

<select name='languageType' class='form-control' /> 
<option value="Afrikaans">Afrikaans</option> 
... <!-- Other options just like I did the first one --> 
</select> 

,如果你想从数据库中的值来选择,那么你将需要检查该选项不等于分贝值,然后选择它选项的selected属性。

,如:

<select name='languageType' class='form-control' /> 
    <option value="">Select One...</option> 
    <option value="Afrikaans"<?php if($languageType == "Afrikaans"){echo "selected='selected'";?>>Afrikaans</option> 
    <option value="English" <?php if($languageType == "English"){echo "selected='selected'";?>>English</option> 
    <option value="Zulu" <?php if($languageType == "English"){echo "selected='selected'";?>>Zulu</option> 
    <option value="Xhosa" <?php if($languageType == "Xhosa"){echo "selected='selected'";?>>Xhosa</option> 
    <option value="Venda" <?php if($languageType == "Venda"){echo "selected='selected'";?>>Venda</option> 
    <option value="French" <?php if($languageType == "French"){echo "selected='selected'";?>>French</option> 
</select> 

然后做你的第二个下拉按照上述作为指导,也不要忘记关闭选择选项</select>

+0

这一工程完美。感谢Masivuye Cokile。只是一个小错误 - 在

+0

很酷,不要忘记接受答案@jproux –