2013-11-25 46 views
1

我甚至不知道如何正確地提出問題,否則我可能會找到答案。所以,我會盡力解釋。SQL數據:包含多行的列數據的HTML表格顯示

我正在使用一個名爲SLDB的腳本(我沒有編寫這些腳本),而且就目前而言,這些腳本的功能與廣告一樣。我存儲的數據,我希望回到網站表格(不是腳本設計的目的)。

目前,該辦法SLDB設置,它存儲領域以這種方式:

ID  Field Value 
    001  name name1  
    001  size size1 
    002  name name2  
    002  size size2  
    003  name name3 
    003  size size3 

在這種傳遞變量到database.php中腳本主腳本,它通過名稱和大小的田地'然後將它們的每個值作爲'值'。

我想顯示的網頁是:

ID  Name Size  
    001  name1 size1  
    002  name2 size2    
    003  name3 size3 

其實,我寧願改寫原來的劇本和database.php中的腳本來創建並以這種方式更新表,但在開始之前,如果可能的話,我寧願找到一種方法來完成我的任務,而不必重寫。

我對mySQL不夠熟悉,無法理解如何讓多個變量的字段(字段,值)在單行中單獨顯示。目前,這是怎麼打印出:

http://wickednight.net/contests/photo-december/results.php

這是簡單的PHP腳本,我寫在HTML中顯示錶:

<?php 
    $con=mysqli_connect("localhost","***","***","***"); 
    // Check connection 
    if (mysqli_connect_errno()) 
     { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 

    $result = mysqli_query($con,"SELECT * FROM sldb_data"); 

    echo "<table border='1' class='db-table' align='center'> 
    <tr> 
    <th>Name</th> 
    <th>Size</th> 
    </tr>"; 

    while($row = mysqli_fetch_array($result)) 
     { 
     echo "<tr>"; 
     echo "<td>" . $row['field'] . "</td>"; 
     echo "<td>" . $row['value'] . "</td>"; 
     echo "</tr>"; 
     } 
    echo "</table>"; 

    mysqli_close($con); 
    ?> 

我意識到,正如所寫的,這個腳本正在按照要求去做。我認爲,我需要完成的事情很明顯。任何幫助是極大的讚賞。

回答

0

這應該工作:

SELECT t1.uuid, t1.value AS name, t2.value AS size FROM sldb_data t1, sldb_data t2 
WHERE t1.uuid = t2.uuid AND t1.field = "name" AND t2.field = "size" 

簡短說明:

您可以在查詢給出不同的名稱表。當你的表名有長或無意義時,這很好。這在FROM部分完成。 「sldb_data t1」給表「sldb_data」指定名稱「t1」。

因爲我們想要從同一個表中取兩個不同的行,我們必須使用同一個表兩次,但是我們必須給它兩個不同的名稱,否則mysql不知道你想要什麼。你可以把它想象成你有兩個相同的表。

現在我們在t1中查找一行,其中field =「name」,在t2 where field =「size」中,但只匹配那些與相同uuid一起的行。

在SELECT之後,我們只列出我們想要的結果中的字段。我們再次給這些田地命名。但有了字段,你必須使用「as」。

+0

我完全贊成你。對於這個項目,我的工作,我只是想通過這種最簡單的解決方案來獲得,但我已經實現對其他應用程序,我將不得不通過重寫參與創建數據庫和表兩個腳本摸索我的路。我會嘗試你的解決方案並回報。謝謝你的快速反應。 –

+0

請附加說明。或者可能是一個鏈接,指向我可以在哪裏瞭解你的選擇功能在做什麼?我的數據庫是wreckers_photodec。該表是sldb_data。在sldb_data中它包含列id(自動遞增的id),uuid(爲簡單起見,我在上面以id的形式發佈),字段,值。字段列包含行名稱,大小和值列包含每個這些變量。我可以告訴你已經很好地掌握了我的要求,這是我自己有限的知識,使我無法理解您的選擇查詢......其中t1,t2和test來自於此。 –

+0

很好的解釋,謝謝。在phpmyadmin中查詢時,它的工作方式與您的意圖完全相同。現在,我只需要將它顯示爲一個顯示每行名稱和大小的html表格。起初我有一個錯誤,但問題是我的錯。我上面發佈的鏈接顯示了您的解決方案的結果。謝謝,阿爾瓦。我感激你。 –

0

我不確定你想要什麼,但我可以說,它不是一個好主意來存儲表單字段名稱和它們的每個值。可能你已經知道我們使用名稱和值用於使用post/get方法插入目的。

你sldb_data表可能有

 
id(PK) name(varchar) size(int) 

分三路

,然後更改您的查詢像

SELECT name,size FROM sldb_data 

您的代碼應

while($row = mysqli_fetch_array($result)) 
     { 
     echo "<tr>"; 
     echo "<td>" . $row['name'] . "</td>"; 
     echo "<td>" . $row['size'] . "</td>"; 
     echo "</tr>"; 
     } 
+0

感謝您的回覆。如果我寫了腳本,你的迴應就是我會怎麼做。但是,當然,我只是將它設置完成並運行腳本後才意識到它在做什麼。如果我必須通過重寫腳本來混淆我的方式,那就是我設置它的方式。但是,正如我所說的那樣,在開始討論之前,我想看看是否有一個簡單的解決方案來完成這個項目,然後我會擔心爲未來的應用程序重寫。您的迴應確實證實了我對「應該如何運作」的初步想法是正確的,所以非常感謝。 –

+0

請先學習基礎。我們不能幫助你,如果你沒有具體問題。請參閱[幫助](http://stackoverflow.com/help) – Imran

+0

我已經在上面的帖子中說明了我的具體問題。你寫的是「應該如何」,而不是當前問題的解決方案。我正在等待AlvaHenrik作出迴應,因爲該解決方案似乎是我需要的。 –