1

PHP投稿フォームを使用して、チェックボックスからMySQLデータベースに複数のIDを挿入します。id例では、 (チェックボックス値テーブルtest) を mysqlに挿入します。ここで、MySQL からデータを取得し、出力例をページに出力する関数が必要です ( testdata = userid のテーブルの水平リスト名を出力します)。

私のチェックボックスの値(テーブル名はtest):

 id | name
----+-------
  1 | test1
  2 | test2
  3 | test3
  4 | test4
  5 | test5
  6 | test6
  7 | test7
  9 | test9

MySQL データの挿入 (テーブルの名前usertest):

 id | data    | userid
----+---------+--------
  1 | 1:4:6:9 | 2
  2 | 1:2:3:4 | 5
  3 | 1:2     | 7

アウトアウトの例 :( data = userid のテーブル test の横方向のリスト名を出力 )

user id 2 choise : test1 - test4 - test6 - test9

ありがとう

4

1 に答える 1

2

usertest テーブルに、例にリストされている 3 つの列のみがあると仮定すると、次のように置き換える必要があります-

CREATE TABLE usertest (
    data INTEGER NOT NULL,
    userid INTEGER NOT NULL,
    PRIMARY KEY (data, userid)
);

次に、データは次のようになります-

+------+--------+
| data | userid |
+------+--------+
|  1   |   2    |
|  4   |   2    |
|  6   |   2    |
|  9   |   2    |
|  1   |   5    |
|  2   |   5    |
|  3   |   5    |
|  4   |   5    |
|  1   |   7    |
|  2   |   7    |
+------+--------+

このデータのクエリは簡単になります -

SELECT usertest.userid, GROUP_CONCAT(test.name SEPARATOR ' - ')
FROM usertest
INNER JOIN test
    ON usertest.data = test.id
GROUP BY usertest.userid

GROUP_CONCATの詳細については、こちらをご覧ください。

PHP ソリューションを使用して、可能なチェックボックス値を ID でインデックス付けされた配列に格納できます。何かのようなもの -

<?php

$db = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'pass');
$sql = 'SELECT id, name FROM test';

$stmt = $db->prepare($sql);
$stmt->execute();

$array = array();

while ($row = $stmt->fetchObject()) {
    $array[$row->id] = $row->name;
}

$sql = 'SELECT userid, data FROM usertest';

$stmt = $db->prepare($sql);
$stmt->execute();

while ($row = $stmt->fetchObject()) {
    $data = explode(':', $row->data);
    foreach($data as $key => $val) {
        $data[$key] = $array[$val];
    }
    print "user id {$row->userid} choise : " . implode(' - ', $data) . "<br/>\n";
}
于 2012-04-08T18:49:39.560 に答える