2

私の更新フォームでは、フィールドが既に保存されている値をリコールするようにします。これはテキスト フィールドでは非常に単純ですが、私のドロップ ダウン () では、既に保存されているユーザー名を PHP で読み取るのに問題があります。ここに私のクエリとコードがあります:

$sql = "SELECT users.user_id, users.name FROM users";
                $result = mysql_query($sql, $connection)
                or die ("Couldn't perform query $sql <br />".mysql_error());
                $row = mysql_fetch_array($result);?>

        <label>Designated Person:</label> <select name="name" id="name">

        <option value="<?php echo $row['user_id']?>" SELECTED><?php echo $row['name']?> - Current</option>

         <?php    
              while($row = mysql_fetch_array($result))
        { ?>                        <option value="<?php echo $row['user_id']; if (isset($_POST['user_id']));?>"><?php echo $row['fullname']?></option>
        <?php } ?>

この結果、(必要に応じて) すべてのユーザーが表示され、ユーザーを選択して変更を正常に実行できます...ただし、「選択済み」は常にデータベースの最初のユーザーであり、アクティビティ時に選択されたユーザーではありません追加されました:( !!!

4

3 に答える 3

1

うーん...あなたのコードは完全ではないと思います。たとえば、最後のオプションには何もしない if ステートメントがあります...同じ select 要素内の 2 つの異なるオプションに selected を配置しないでください。

最初のオプションは、他に誰も選択されていない場合は常にデフォルトで選択され、.... xhtml の場合は、SELECTED の代わりに selected="selected" を使用してみてください

また、$row['fullname'] をエコーし​​ようとしていますが、クエリは列 'name' をフェッチしています

<?php
$sql = "SELECT users.user_id, users.name FROM users";
$result = mysql_query($sql, $connection) or die ("Couldn't perform query $sql <br/>".mysql_error());
$row = mysql_fetch_array($result);
?>

<label>Designated Person:</label> 

<select name="name" id="name">
    <option value="<?php echo $row['user_id']?>"><?php echo $row['name'] ?> - Current</option>
<?php    
while($row = mysql_fetch_array($result)){ ?>
   <option 
      value="<?php echo $row['user_id'] ?>"
      <?php echo (isset($_POST['name']) && $_POST['name'] == $row['user_id']) ? ' selected="selected"' : '');?>
><?php echo $row['name']?></option>
<?php } ?>
于 2010-03-18T23:38:17.780 に答える
1

あなたが今していることは次のとおりです。

  • 最初の結果行を選択し、ハードコーディングされた SELECTED を使用してオプションとして出力します。
  • 残りの結果行出力オプションをループします。現在選択されている値をどこにもチェックしていませんが、目的のない空の if() があります。
  • 現在保存されている名前がどこに保持されているかわかりません。

これを試してください(が現在選択されている名前であると仮定し$curnameます):

$sql = "SELECT users.user_id, users.name FROM users";
        $result = mysql_query($sql, $connection)
        or die ("Couldn't perform query $sql <br />".mysql_error());
?>

<label for="name">Designated Person:</label>
    <select name="name" id="name">

 <?php    
      while($row = mysql_fetch_array($result))
{ ?>                        
    <option value="<?php echo $row['user_id'] ?>" <?php if ($curname == $row['name']) echo ' SELECTED'; ?>><?php echo $row['fullname']?></option>
<?php } ?>
于 2010-03-18T23:40:05.867 に答える