2013-02-13 59 views
0

我試圖在用戶提交表單後破解WP插件「聯繫表單7」(帶有數據庫擴展名),以便根據我的喜好輸出結果。我明白爲什麼插件必須按照它的方式安排數據庫,但我無法分離條目。通常我會有一個索引來處理,但在這裏我沒有。PHP + MySQL,按類別輸出結果

這是我的表的樣子。

+-----------------+-----------+-----------------+---------------------+-------------+------+ 
| 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」)迭代隔離項的最有效方法是什麼?

+0

你有'submit_time'並想獲得所有具有相同的行嗎?如果是這樣,'SELECT field_name,field_value FROM mytable WHERE submit_time =? ORDER BY field_order'。 – halfer 2013-02-13 20:54:24

+0

我想顯示同一頁面上的所有條目,只是按'submit_time'分組。因此需要自動生成'submit_time'列表。 – 2013-02-13 20:56:55

+1

啊對。 OK,首先使用此查詢:'SELECT submit_time FROM mytable GROUP BY submit_time ORDER BY submit_time DESC'作爲外部循環,然後將上面那個作爲內部循環。這個將唯一列出你的'submit_times',然後你可以使用它來獲得你的鍵/值對。我用'DESC'按倒序排列,如果你想讓它們最老的話,就放棄它。 – halfer 2013-02-13 21:03:21

回答

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>'; 
} 
+0

好東西,總是很好的添加你自己的答案:+1。請記住,如果沒有'ORDER'子句,您將以未定義的順序獲取submit_time值,因此添加一個值是明智的。另外,你不能在第一個查詢中選擇*,因爲你有一個不允許它的GROUP BY,你認爲你的意思是'SELECT submit_time'。 – halfer 2013-02-13 23:29:53

+0

您瞭解我的想法,那就是我現在正在處理的問題。我會記住這一點。 – 2013-02-14 00:26:42

1

我想你正在使用$result = mysql_query();或類似的東西來獲得這些值。 然後你做到以下幾點:

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

$行現在是一個關聯數組與MySQL表中包含的字段。你的情況,你可以用這個打印field_name -column(只是一個例子):

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

這是你如何讀取表的每個條目。循環的每次重複都會增加您讀出的行數。如果您在結尾處或出現錯誤,mysql_fetch_assoc()返回false並且循環退出。

+0

我認爲這將工作得很好,如果它像一個典型的數據庫表(即具有適當的索引)組織,但我需要別的東西在這裏。 – 2013-02-13 21:32:26

+0

如果你正在使用'mysql_query();',這將工作,如果有索引或沒有。 '$ result' var包含所有找到的行。試試吧 – s3lph 2013-02-13 22:10:01