1

ユーザーがデータベースから既存のフィールドを選択できる選択ボックスのあるフォームがあります。

<form action='' method='POST' autocomplete='off' enctype="multipart/form-data">
  <p><strong>Title and Description:</strong></p>
  <select name='uidtitle' class='chosen-select'>
  <option value="0" ></option>
    <?php 
      $result = $mysqli->query("SELECT uid, title, description FROM tblFacilityHrs") or die($mysqli->error);
      while ($row = $result->fetch_array(MYSQLI_ASSOC)){
        echo "<option value=\"1\">" . $row['title'] ." - " . $row['description'] . "</option>";
        $uid = $row['uid'];
        $title = $row['title'];
        $desc = $row['description'];
      }
    ?>
    </select>
...

これら 3 つの値すべてを (個別に) SQL のポストバックに送信するにはどうすればよいですか?

if (isset($_POST['submitted'])) { 
  //Get params for prepared statements
  $startDatec= date("Y-m-d H:i:s", strtotime($_POST['startEventDate']));
  $endDatec= date("Y-m-d H:i:s", strtotime($_POST['endEventDate']));
  $startTimec=$_POST['startTime'];
  $endTimec=$_POST['endTime'];
  $recurc=$_POST['recurrence'];
  $finalc= date("Y-m-d H:i:s", strtotime($_POST['finalDate']));
  ...
4

1 に答える 1

1

3 つの値すべてを送り返す必要がある理由がわかりません。データベース キーが存在するのは、1 つのフィールドだけが与えられたレコード内のすべてのフィールドを識別できるためです。この場合、uid. そのフィールドだけを渡すと、意図した操作を実行する前に、ポストバックで他のフィールドを選択できます。

ただし、非表示のフォーム フィールドを使用することは可能ですが、私はこの方法をお勧めしません。

<select name='uidtitle' class='chosen-select'>
  <option value="0" ></option>
    <?php 
      $result = $mysqli->query("SELECT uid, title, description FROM tblFacilityHrs") or die($mysqli->error);
      $cacheArray = array(); // Used to store the information to be used below
      while ($row = $result->fetch_array(MYSQLI_ASSOC)){
        echo "<option value=\"" . $row['uid'] . "\">" . $row['title'] ." - " . $row['description'] . "</option>";
          $cacheArray[] = $row;
      }
    ?>
    </select>

<?php

    foreach($cacheArray as $k => $v) {
        echo '<input type = "hidden" name = "title-' . $v['uid'] . '" value = "' . $v['title'] . '">';
        echo '<input type = "hidden" name = "description' . $v['uid'] . '" value = "' . $v['description'] . '">';
    }

?>

非表示のフォーム フィールドは、tblFacilityHrsテーブル内のすべてのレコードに表示されます。名前は、名前に を追加することで区別されuidます。次の方法で、ポストバックで関心のあるフィールドを特定できます。

$_POST['title-'.$_POST['uidtitle']]
$_POST['description-'.$_POST['uidtitle']]
于 2012-05-22T14:12:42.100 に答える