2016-08-22 71 views
0

我正在学习PHP(并且非常有趣),但是我碰到了一个CRUD应用程序中的问题,我似乎无法找到解决办法。PHP PDO从记录编辑表格中的大表填充下拉列表 - 从数据库拉取结果

我需要在创建页面上使用下拉菜单进行数据输入。我也希望在更新页面上具有相同的下拉列表,但当然这需要将该值设置为在更新表单加载时已经存储在记录中的值。我手动编码了一些较短的下拉菜单(见下文),但接下来我需要做的是2008年的记录! (当输入被输入时它将被搜索)。

我已经看过关于数组等的多个职位,我可以得到下拉列表的价值,但无法弄清楚如何拉现有的价值。

相关的代码如下所示(请温柔关于编码......我是新!):

<?php 
require_once "../includes/header.php"; 
?> 

<?php 
if (isset($_POST['patient_id']) && isset($_POST['datadate']) 
    && isset($_POST['bedspace']) && isset($_POST['episode_id'])) { 
$sql = "UPDATE tbl_users SET patient_id = :patient_id, 
     datadate = :datadate, bedspace = :bedspace, isadmitday = :isadmitday, antimicrobial = :antimicrobial 
     WHERE episode_id = :episode_id"; 
$stmt = $PDO->prepare($sql); 
$stmt->execute(array(
    ':patient_id' => $_POST['patient_id'], 
    ':datadate' => $_POST['datadate'], 
    ':bedspace' => $_POST['bedspace'], 
    ':episode_id' => $_POST['episode_id'], 
    ':isadmitday' => $_POST['isadmitday'], 
    ':antimicrobial' => $_POST['antimicrobial'])); 
$_SESSION['success'] = '<div class="alert alert-success" role="alert"><strong>Record successfully updated</strong></div>'; 
header('Location: index.php') ; 
return; 
} 
$stmt = $PDO->prepare("SELECT * FROM tbl_users where episode_id = :xyz"); 
$stmt->execute(array(":xyz" => $_GET['episode_id'])); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 
if ($row === false) { 
$_SESSION['error'] = '<div class="alert alert-danger" role="alert"> <strong>Unable to proceed - bad episode_id value</strong></div'; 
header('episode_id: index.php') ; 
return; 
} 
$n = htmlentities($row['patient_id']); 
$e = htmlentities($row['datadate']); 
$l = htmlentities($row['bedspace']); 
$i = htmlentities($row['isadmitday']); 
$am = htmlentities($row['antimicrobial']); 
$episode_id = htmlentities($row['episode_id']); 
?> 


    <div class="container"> 
     <div class="row"> 
      <div class="row"> 
       <div class="col-md-12"> 
        <h2>Edit episode record</h2><br> 
       </div> <!-- /col-md-12 --> 
      </div> <!-- /row --> 
     </div> <!-- /row --> 

     <div class="row"> 
      <form name="edit_record" id="edit_record" method="POST" action=""> 
       <div class="form-group"> 
        <label for="patient_id" control-label>Patient ID</label> 
        <input type="text" class="form-control" id="patient_id"  name="patient_id" value="<?= $n ?>"> 
       </div> <!-- /form-group --> 

       <div class="form-group"> 
        <label for="datadate" control-label>Date</label> 
        <input type="text" class="form-control" id="datadate" name="datadate" value="<?= $e ?>"> 
       </div> <!-- /form-group --> 

       <div class="form-group"> 
        <label for="bedspace" control-label>Bedspace</label> 
        <select class="form-control" required="required" id="bedspace" name="bedspace" value="<?= $l ?>"> 
         <option></option> 
         <option value="Side Ward 1" <?php echo $l == 'Side  Ward 1'?'selected':'';?>>Side Ward 1</option> 
         <option value="Bed 1" <?php echo $l == 'Bed 1'?'selected':'';?>>Bed 1</option> 
         <option value="Bed 2" <?php echo $l == 'Bed 2'?'selected':'';?>>Bed 2</option> 
         <option value="Bed 3" <?php echo $l == 'Bed 3'?'selected':'';?>>Bed 3</option> 
         <option value="Bed 4" <?php echo $l == 'Bed 4'?'selected':'';?>>Bed 4</option> 
         <option value="Bed 5" <?php echo $l == 'Bed 5'?'selected':'';?>>Bed 5</option> 
         <option value="Side Ward 2" <?php echo $l == 'Side Ward 2'?'selected':'';?>>Side Ward 2</option> 
         <option value="Side Ward 3" <?php echo $l == 'Side Ward 3'?'selected':'';?>>Side Ward 3</option> 
        </select> 
       </div> <!-- /form-group --> 
+0

仅供参考,使用:'require_once __DIR__ “/../包括/ header.php文件”;'它将总是工作。即'当前工作目录'被设置为'绝对路径'并不重要。如果将代码移动到共享主机,请记住这一技巧。 –

+0

谢谢你。关于下拉问题的任何想法? – Andrew

回答

0

确定后密集两天的研究,我有工作像我想的东西虽然我确定我的解决方法并不漂亮!下拉列表是抗生素药物名单,称为“抗菌剂”。我使用SELECT语句从数据库中获取下拉列表,并匹配从另一个表中拉出的值,以便在编辑记录时设置下拉列表的值。

下面的代码是从edit.php文件:

<?php 
if (isset($_POST['episode_id'])) { 
    $sql = "UPDATE tbl_users SET antimicrobial = :antimicrobial 
     WHERE episode_id = :episode_id"; 
    $stmt=$PDO->prepare($sql); 
    $stmt->execute(array(
     ':antimicrobial' => $_POST['antimicrobial'])); 
    $_SESSION['success'] = '<div class="alert alert-success" role="alert"><strong>Record successfully updated</strong></div>'; 
    header('Location: index.php') ; 
return; 
} 

$stmt = $PDO->prepare("SELECT * FROM tbl_users where episode_id = :xyz"); 
$stmt->execute(array(":xyz" => $_GET['episode_id'])); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 
    if ($row === false) { 
     $_SESSION['error'] = '<div class="alert alert-danger" role="alert"><strong>Unable to proceed - bad episode_id value</strong></div'; 
     header('episode_id: index.php') ; 
    return; 
    } 

$am = htmlentities($row['antimicrobial']);  
$episode_id = htmlentities($row['episode_id']); 

?> 
<div class="form-group"> 
    <label for="antimicrobial" control-label>Antimicrobial from database</label> 
    <?php 
     $sql_am = 'SELECT antimicrobial FROM tbl_antimicrobials'; 
     $stmt_am = $PDO->query($sql_am); 
    ?> 
    <select class="form-control" id="antimicrobial"></select> 
    <?php 
     while ($row = $stmt_am->fetch(PDO::FETCH_ASSOC)) 
     { 
     $selected = ($row['antimicrobial'] == $am) ? ' selected' : ''; 
     echo "<option value='" . $row['antimicrobial'] . "'" . $selected . ">" . $row['antimicrobial'] . "</option>"; 
     } 
     echo '</select>'; 
    ?> 
</div> <!-- /form-group -->