0

以下に示すphpを使用してhtmlチェックボックスを生成するフォームがあります

<p><form name="university" action="/university_handler" method="post">
  <fieldset>
    <table class="table">
      <thead>
        <tr>
          <th><span class="help-block">University Department</span></th>                            
        </tr>
      </thead>
      <tbody>  
        <tr> 
          <td><?php 
            $query = mysqli_query($db, "SELECT university_department FROM university WHERE university_id = '$university_id'") 
                or die  ("Could not search!");
            while($row = mysqli_fetch_array($query)){
              $university_department = $row['university_department'];
              $_SESSION['university_department'] = $university_department;
              $universityDepartment = $_SESSION['university_department'];
              echo "<label><input type='checkbox' name='university_department[]' value='{$universityDepartment}'>$universityDepartment</label><br><input type='text' value='' name='professor_name[{$universityDepartment}]' placeholder='Professor-Name'><input type='text' value='' name='class_name[{$universityDepartment}]' placeholder='Class-Name'>";}
          ?></td>
        </tr>
      </tbody>
    </table> 
    <button type="submit" name="Submit"class="btn btn-info">Submit</button>
  </fieldset>
</form></p>

これで、myを使用university_handlerして値をデータベースに挿入すると、オフになっているチェックボックスだけでなく、すべてのチェックボックスが挿入されます。私はさまざまなことを試みてきましたが、何も機能していないようです。これがハンドラーです。

<?php
session_start();
include("connect.php");

$university_id = $_SESSION['university_id'];

// check if share_form is submitted and not empty
$error_message = "";
if(is_array($_POST['university_department']) && !empty($_POST['university_department'])){
  $error = array();
  $universityDepartment = $_POST['university_department'];
  if (count($universityDepartment)>0){
    foreach (str_replace('#', '', $_POST['class_name']) as $departmentName => $stripid){
      $class_name_backslash = $stripid . '/';
      $class_name = mysqli_real_escape_string($db, $stripid);
      print_r($class_name);
    }
    $query_uni = ("INSERT INTO temp_list(departmentName, class_name, professor_name) VALUE ('$departmentName','$class_name', '$professor_name')");
    $q_u = mysqli_query($db, $query_uni) or die ('Error posting data');
}
}?>
4

2 に答える 2

1

@Martinの答えが好きです。私が変えたい唯一のことは、$_REQUEST

使用するとき$_REQUESTは、投稿を見て、変数を取得して、いずれかの値を使用すると言っています。$_POSTでは、同じ名前のa と$_GET変数の両方がある場合はどうなるでしょうか? 一方は使用され、もう一方は使用されません。

では、同じコードを別の方法で使用してみましょう。

$checkBoxName = (isset($_POST['checkBoxName']) ? $_POST['checkBoxName'] : (isset($_GET['checkBoxName']) ? $_GET['checkBoxName'] : ''));
if ($checkBoxName != '') {
    //do stuff here
}

このようにGoogle Chromesの開発者ツールなどを使わないと投稿情報を見ることができないので、見えるものより先に見えないものを確認するという順番で行うのがベストです。

これが役立つことを願っています=)

編集:

あなたが私に与えた情報に基づいて、私はあなたがチェックしたクラスだけを挿入する方法を思いつくことができました. これを変更しても構いませんが、これでうまくいくはずです

<?php
$departList =   ($_POST['university_department'] ? $_POST['university_department'] : ($_GET['university_department'] ? $_GET['university_department'] : array()));
$classList =    ($_POST['class_name'] ? $_POST['class_name'] : ($_GET['class_name'] ? $_GET['class_name'] : array()));
$profList = ($_POST['professor_name'] ? $_POST['professor_name'] : ($_GET['professor_name'] ? $_GET['professor_name'] : array()));
if (count($departList) > 0) {
    foreach ($departList as $key => $val) {
        $class =    $classList[$val];
        $professor =    $profList[$val];
        $query_uni = ("INSERT INTO temp_list(departmentName, class_name, professor_name) VALUE ('$val','$class', '$professor')");
        $q_u = mysqli_query($db, $query_uni) or die ('Error posting data');
    }
}

?>

幸運を祈ります =)

于 2013-03-15T15:05:24.057 に答える
0

isset 関数を使用して、チェックボックスがオンになっているかどうかを確認できます。

if (isset($_REQUEST['checkBoxName']));
   {

    $variable = $_REQUEST['checkBoxName'];
    }

このメソッドを使用すると、値を持つチェックボックスのみが取得されます。

お役に立てれば

于 2013-03-15T14:50:35.930 に答える