0

ユーザーがフォームを送信した後、WPプラグインの「ContactForm 7」(DB拡張機能付き)をハックして、結果を好みに合わせて出力しようとしています。プラグインがDBをそのように配置する必要がある理由は理解していますが、エントリを分離するのに問題があります。通常、私は使用するインデックスを持っていますが、ここでは持っていません。

これが私のテーブルの様子です。

+-----------------+-----------+-----------------+---------------------+-------------+------+
|   submit_time   | form_name |   field_name    |     field_value     | field_order | file |
+-----------------+-----------+-----------------+---------------------+-------------+------+
| 1360190186.3500 | RSVP 2    | text-796        | Mindi               |           0 | NULL |
| 1360190186.3500 | RSVP 2    | text-664        | Smith               |           1 | NULL |
| 1360190186.3500 | RSVP 2    | text-635        | New York            |           2 | NULL |
| 1360190186.3500 | RSVP 2    | menu-359        | A friend of Sarah's |           3 | NULL |
| 1360190186.3500 | RSVP 2    | textarea-518    |                     |           4 | NULL |
| 1360190186.3500 | RSVP 2    | file-29         |                     |           5 | NULL |
| 1360190186.3500 | RSVP 2    | textarea-652    |                     |           6 | NULL |
| 1360190186.3500 | RSVP 2    | Submitted Login | admin               |        9999 | NULL |
| 1360190186.3500 | RSVP 2    | Submitted From  | ::1                 |       10000 | NULL |
| 1360191326.9700 | RSVP 2    | text-796        | Joe                 |           0 | NULL |
| 1360191326.9700 | RSVP 2    | text-664        | Blow                |           1 | NULL |
| 1360191326.9700 | RSVP 2    | text-635        | Somewhere           |           2 | NULL |
| 1360191326.9700 | RSVP 2    | menu-359        | A friend of Bob's   |           3 | NULL |
| 1360191326.9700 | RSVP 2    | textarea-518    |                     |           4 | NULL |
| 1360191326.9700 | RSVP 2    | file-29         |                     |           5 | NULL |
| 1360191326.9700 | RSVP 2    | textarea-652    |                     |           6 | NULL |
| 1360191326.9700 | RSVP 2    | Submitted Login | admin               |        9999 | NULL |
| 1360191326.9700 | RSVP 2    | Submitted From  | ::1                 |       10000 | NULL |
| 1360361333.8800 | RSVP 2    | text-796        | Once                |           0 | NULL |
| 1360361333.8800 | RSVP 2    | text-664        | Again               |           1 | NULL |
| 1360361333.8800 | RSVP 2    | text-635        | Somewhere           |           2 | NULL |
| 1360361333.8800 | RSVP 2    | menu-359        | A friend of Bob's   |           3 | NULL |
| 1360361333.8800 | RSVP 2    | textarea-518    |                     |           4 | NULL |
| 1360361333.8800 | RSVP 2    | file-29         |                     |           5 | NULL |
| 1360361333.8800 | RSVP 2    | textarea-652    |                     |           6 | NULL |
| 1360361333.8800 | RSVP 2    | Submitted Login | admin               |        9999 | NULL |
| 1360361333.8800 | RSVP 2    | Submitted From  | ::1                 |       10000 | NULL |
+-----------------+-----------+-----------------+---------------------+-------------+------+

私のPHPは少し錆びているので、エントリを分離するために唯一の一意のフィールド('submit_time')を反復処理する最も効率的な方法は何でしょうか。

4

2 に答える 2

1

一意のフィールドを使用して配列を作成し、submit_timeそれをクエリの変数として使用して各フィールドをループすることで、これを解決することができました。ここに興味のある方は結果です。

$group = mysql_query('SELECT * FROM wp_cf7dbplugin_submits GROUP BY submit_time');

while ($st = mysql_fetch_row($group)) {
    $myarray[] = $st[0];
}

foreach ($myarray as $value) {
    $query = "SELECT field_value FROM wp_cf7dbplugin_submits WHERE submit_time = ".$value;
    $entry = mysql_query($query);

    while ($row = mysql_fetch_row($entry)) {
        if (!empty($row[0])) {
            echo $row[0];
            echo '<br>';
        }
    }

    echo '<br><br>';
}
于 2013-02-13T22:43:38.527 に答える
1

$result = mysql_query();これらの値を取得するために、またはそのようなものを使用していると思います。次に、次の操作を行います。

while ($row = mysql_fetch_assoc($result /*or your result varname*/ )) {
    //do the things you want to do
}

$row は、mySql テーブルに含まれるフィールドを持つ連想配列になりました。あなたの場合、これを使用してfield_name-column を印刷できます(単なる例):

//inside the while-loop:
echo $row["field_name"]."<br/>";

これは、テーブルのすべてのエントリを読み取る方法です。ループを繰り返すたびに、読み上げている行番号がインクリメントされます。最後に到達した場合、またはエラーが発生した場合は、mysql_fetch_assoc()戻りfalse、ループが終了します。

于 2013-02-13T20:56:49.727 に答える