2013-04-02 46 views
0

我是PHP新手,正在將社交網絡作爲練習,並將我在「現實世界」中學到的知識運用到實踐中。無論如何,我有一個MySQL數據庫中的兩個表,我試圖在我的網站上顯示在通過php回顯呈現的同一個html表中。PHP,MYSQL noob加入(?)表格細節

這裏的表

(表1) note_system: -id, -username, - 音符

(表2) 評論: -id, -cid(從等於ID note_system), -username, -comment

所以有人發帖子,它保存到note_system表,然後有人commen ts並將其保存到註釋表中並使用note_system表中的id來建立關係。

所以我想要做的是獲得相關帖子顯示的帖子評論。我收集到了我需要一個JOIN或UNION來實現這個目標,但是我完全喪失瞭如何做到這一點。我的腦子一直在忙着做大量的谷歌搜索,但我並沒有真正到達任何地方。我嘗試的一切都會給我帶來錯誤Notes顯示效果很好,並且按照我的意願,但是我不能在我的生活中弄清楚如何讓評論在那裏顯示。

這是我的代碼(不要嘲笑我的PHP的noob ness,這是我的第二個PHP程序有史以來我顯然有很多東西要學,我想清理它在某一時刻,但現在我只是希望它功能)

<?php 
// Display Note_Wire 

$con=mysqli_connect($host,$username,$password,$dbname); 
// Check connection 

if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 


//format and display the Note_Wire results with comments 

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


while($row = mysqli_fetch_array($result)) 
{ 
echo "<center>"; 
echo "<table class='note_wire'>"; 
echo "<tr>"; 
echo "<td>" . $row['username'] . "</td>" ; 
echo "</tr><tr>"; 

echo "<td><a href=''>vote up</a>" . " " . $row['rank'] . " " . "<a href=''>vote  down</a></td>" ; 
echo "</tr><tr>"; 

echo "<td> <a href='{$row['link']}' target='blank'>{$row['link']}</a>"; 
echo "</tr><tr>"; 


echo "<td>" . $row['note'] . "</td>" ; 

echo "</tr> "; 



//add comments attempt this is where I would like the comments to be displayed 

echo ' 

<td><form action="add_comment.php" method="POST"> 

<input type="hidden" name="username" value="'; 

echo htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8'); 
echo '" />'; 

echo '<input type="hidden" name="cid" value="'; 
echo $row['id']; 
echo '" />'; 

echo '<textarea name="comment">comment...</textarea></td></tr> 

<tr><td><input type="submit" value="comment" /> 

</form></td></tr> 


'; 







echo "</table>"; 




// break before next note-wire record renders 
echo "<br />"; 

} 



echo "</center>"; 








?> 

我希望我的雞抓草圖編程是有道理的。感謝您的時間和知識。搭建配置數據庫USER,PASS,HOST,DBNAME

$conn = new mysqli('database_server','database_username','database_password','database_name'); 

第二:創建

+0

什麼錯誤? –

+0

哪裏是數據庫的代碼? – Shwet

+0

Kaii-這段代碼沒有錯誤。我需要添加代碼才能使其功能完整。我正在顯示數據庫中的一個表中的內容,但我想顯示與第一個表相關的第二個表中的內容。 – ButterDog

回答

0

真正的意見是不同的數據與實際崗位設置你可以只使用第二查詢來獲取所有相關文章的評論的。但表連接非常有用,你應該學習它們。在這種情況下,您可以在共享ID(外鍵)上加入note_system和comments表。

所以像這樣:

SELECT * 
FROM note_system 
LEFT JOIN comments ON comments.cid=note_system.id 

這是一個文字連接表,這樣你的輸出將包括兩個表中的所有columsn只要有匹配的加盟表達。如果註釋表中沒有匹配的CID列,那麼這些列的值將在您的輸出中爲NULL。 (如果你想那裏是你可以使用一個內連接而不是在LEFT OUTER匹配聯接上面我以前只返回行。)

This is a good page explaining SQL table joins.

+0

RealityGone-謝謝你的提示!當我閱讀你的鏈接時,我會去嘗試一下。感謝您的幫助。 – ButterDog

+0

你也可以使用UNION語句把註釋到相同的數據集原來的註釋,然後你就不會與每一行的說明內容的數據集(這基本上就是你一個加入越來越)。但我仍然認爲最好只使用第二個查詢。您只需在兩條SQL語句之間插入UNION語句,並將它們粘在一起,就像它們都來自單個查詢一樣。您只需確保兩個SQL語句都返回相同數據類型的相同數量的列。 –

+0

EUREKA !!!!我簡直不敢相信這是多麼的簡單!非常感謝。我幾個小時一直在用自己的方式殺死自己,我讀了你的答案,10分鐘後我的代碼變得非常有意義,並且功能正是我想要的。 – ButterDog

0

繼承人的基礎,如果你使用PHP和MySQL ..初學者

FIRST爲你一步查詢(您可以在這裏插入您的查詢)..

$result= $conn->query("SELECT SUM(Total_Steps) AS value_sum FROM users"); 

決賽:顯示的記錄使用MySQL的功能,如..

while($row = $result->fetch_assoc()){ 
    echo $row['dabatase_columnname']; 
    echo $row['database_columnname']; 
} 

爲您的查詢嘗試使用這一個或創建一個相對的。

SELECT 'enter column needed here with their specific database allias ex. TABLE1.ID'FROM NOTE_SYSTEM TABLE1 LEFT JOIN COMMENTS TABLE2 ON TABLE1.ID = TABLE2.CID;

+0

檢查是U缺少哪一部分.. –

+0

感謝怪異,我感謝您抽出寶貴的時間解釋但我的麻煩不是顯示來自數據庫的數據,而是顯示數據庫中的兩個表中的數據在同一查詢中,第二個表根據第一個表的關係顯示數據。我可能沒有解釋得很好,因爲我的編程詞彙是基本的 – ButterDog

+0

@ButterDog這是否意味着您需要的是查詢語言? :) –