2016-10-24 40 views
1

SELECTを使用して複数のSQLクエリにチェックボックスを使用しようとしています。チェックボックスを使用してテーブルから複数の行を選択

私は別のグループにユーザーを接続するための3つのテーブル、グループユーザーため 1に1つのテーブルと1を持っているがgroupreluserと呼ばれます。どのグループがチェックされているかに基づいて、それらのグループのメンバーである各ユーザの電話番号をプリントアウトしたい。

チェックボックスは、テーブルの内容に基づいてグループ

<form method="post"> 
<?php 
$sql = "SELECT * FROM groups WHERE groupname LIKE '%minor%'"; 
    $result = $conn->query($sql); 

    if($result->num_rows > 0){ 

      while($row = $result->fetch_assoc()){ 

        echo '<input type="checkbox" name="checked[]" value="'.$row['group_id'].'">' 
        . $row['groupname'] . '</br>'; 

      } 

    } 
?> 
<input type="submit" name="submit" value="submit"> 
</form> 

電話番号を取得するためのSQLクエリを使用してコードを作成しています。

if(isset($_POST['submit'])){ 

    $check = $_POST['checked']; 

    if(!empty($check)){ 


      foreach($check as $sel){ 
        $sel = mysqli_real_escape_string($conn, $sel); 


        $sql = " 

          SELECT 
            groups.group_id, 
            groups.groupname, 
            groupreluser.user_id, 
            groupreluser.group_id, 
            users.user_id, 
            users.name, 
            users.phone 
          FROM 
            groupreluser 
          JOIN 
            groups 
          ON 
            groups.group_id = groupreluser.group_id 
          JOIN 
            users 
          ON 
            users.user_id = groupreluser.user_id 
          WHERE 
            groups.group_id = '$sel' 

        "; 

        $res = $conn->query($sql); 

        if($res->num_rows > 0){ 

          while($row = $res->fetch_assoc()){ 

            echo $row['phone'] . '</br>'; 

          } 

        } 
      } 
    } 
} 

それは限り、私は、チェックボックスを使用してはいけないと正常に動作しますが、SELECT文の中で手動でgroup_idのを追加します。なぜこれが動作していないの任意のアイデア?私は見逃していますか?これはしかし、それを行うための最善の方法であれば知らない... が、これは不明であるならば、私に教えてください、と私は、この行はおそらく動作しないより良い

+1

'echo '

+1

$ sqlのいくつかのバージョンを好んでvar_dumpすることができますので、どうやってそれが乱れているのか分かりますか? – Drew

+0

申し訳ありませんが、チェックボックスはフォームタグ内にあります。私は今投稿に追加しました – sveini

答えて

0

$_POST['submit']は、mysqli_real_escape_stringに直接渡すので、機能しません。しかし、このアプローチでは、作業を行います:

if(isset($_POST['submit'])){ 
$check = $_POST['check']; 
if(!empty($check)){ 

     foreach($check as $sel) { 
     $sel = mysqli_real_escape_string($conn, $sel); 

     $sql = " 

         SELECT 
           groups.group_id, 
           groups.groupname, 
           groupreluser.user_id, 
           groupreluser.group_id, 
           users.user_id, 
           users.name, 
           users.phone 
         FROM 
           groupreluser 
         JOIN 
           groups 
         ON 
           groups.group_id = groupreluser.group_id 
         JOIN 
           users 
         ON 
           users.user_id = groupreluser.user_id 
         WHERE 
           groups.group_id = '$sel' 

       "; 

       $res = $conn->query($sql); 
    ........... 
+2

ファンではなく、 "個人的にはこれを試してください"。なぜ彼らはそれを "試して"すべきかを分かち合いましょう?たぶん彼らは間違いから「学ぶ」でしょう。 ;-) –

+0

いいえ、申し訳ありませんでした。私はどんなエラーも出ていませんが、それはちょうどどんなデータもエコーしません。 – sveini

+0

ただ私の答えを編集しました。 – krasipenkov

1

それを説明してみましょう: $check = mysqli_real_escape_string($conn, $_POST['checked']);

$_POST['checked']は配列です。したがって、配列の各項目について上記の行を行います。

関連する問題