2013-04-22 46 views
1

我想從MySQL數據庫獲取數據到我的表.php文件。在我的表的每一行中,我都想顯示用戶可以下載的標題,文本和附件($ name)。 問題是,當我顯示該數據庫時,我在.php文件的每個表格行中都列出了數據庫中的所有附件。 所以我只想在數據庫中每行只顯示一個附件,這些附件的標題和數據庫表格行的標題相同。如何從MySQL數據庫中將特定數據提取到我的PHP表中?

這是我的數據庫表:

CREATE TABLE IF NOT EXISTS `table` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`title` varchar(30) NOT NULL, 
`text` varchar(30) NOT NULL, 
`name` varchar(30) NOT NULL, 
`type` varchar(30) NOT NULL, 
`size` int(11) NOT NULL, 
`content` longblob NOT NULL, 
PRIMARY KEY (`id`) ) 

我的代碼:

<?php 
include('config.php'); 
$sqlget="SELECT * FROM table ORDER BY timestamp DESC"; 
$sqldata= mysqli_query($dbcon, $sqlget) or die ('error'); 
echo"<table>"; 
while ($row=mysqli_fetch_array($sqldata, 
MYSQLI_ASSOC)) { 
echo "<tr><td>"; 
echo"<b><font color='#DF01A5'> Title: ".$row['title']."</font></b>"; 
echo "<br/>"; 
echo $row['text']; 
echo "<br/>"; 
echo "<b><font color='#DF01A5'>Attachment: </font>"; 
?> 
<?php 
$con = mysql_connect('localhost', 'root', 'pass') or die(mysql_error()); 
$db = mysql_select_db('database', $con); 
$query = "SELECT id, name FROM table"; 
$result = mysql_query($query) or die('Error, query failed'); 
if(mysql_num_rows($result) == 0) 
{ 
echo "Database is empty <br>"; 
} 
else 
{ 
while(list($id, $name) = mysql_fetch_array($result)) 
{ 
?> 
<a href="download.php?id=<?php echo urlencode($id);?>" 
><?php echo urlencode($name);?></a> <br> 
<?php 
} 
} 
mysql_close(); 
echo"</table"; 
?> 
+0

你忘了問一個問題。你的代碼似乎已經在完成你所描述的全部內容。 – Jocelyn 2013-04-22 16:30:19

+0

您沒有任何關閉和標籤。可能是你的問題的開始。否則,PHP看起來是正確的,但可以使用一些更新。 – 2013-04-22 16:32:40

+0

@Kacey這只是我的代碼的一部分,所以我沒有複製,但我有這個標籤。 :) – strellson 2013-04-22 16:34:21

回答

3

僅使用一個while循環

$sqlget="SELECT * FROM table ORDER BY timestamp DESC"; 
$sqldata= mysqli_query($dbcon, $sqlget) or die ('error'); 
echo"<table>"; 
while ($row=mysqli_fetch_array($sqldata,MYSQLI_ASSOC)) { 
    echo "<tr><td>"; 
    echo"<b><font color='#DF01A5'> Title: ".$row['title']."</font></b>"; 
    echo "<br/>"; 
    echo $row['text']; 
    echo "<br/>"; 
    echo "<b><font color='#DF01A5'>Attachment: </font>"; 
    echo "<a href=\"download.php?id=".$row['id']."\">".$row['name']."</a><br />\n"; 
    ... 
} 
echo '</table>'; 
+0

謝謝大家,這解決了我的問題:) – strellson 2013-04-22 17:24:03

+0

不客氣。樂意效勞。 – 2013-04-22 17:24:39

3

假設你的兩個表上僅ID相關:

$sql = $db_conn->query("SELECT t1.title, t1.text, t2.ID AS AID, t2.name FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.ID = t2.ID ORDER BY t1.timestamp"); 

echo '<table><thead><tr><th>Title</th><th>Description</th><th>Attachment</th></tr></thead>'; 
while($row = $sql->fetch_array()) 
{ 
    echo '<tr>'; 
    echo '<td>' . $row['title'] . '</td>'; 
    echo '<td>' . $row['text'] . '</td>'; 
    echo '<td><a href="download.php?id=' . urlencode($row['AID']) . '">' . $row['name'] . '</a></td>'; 
    echo '</tr>'; 
} 
echo '</table>'; 

沒有測試,但這個開始。

+0

謝謝,但我有一個表中的所有數據。也許我應該按照你的建議製作兩張獨立的桌子。 – strellson 2013-04-22 16:52:43

+1

@strellson如果它都在一個表中,那麼爲什麼你有兩個單獨的SQL語句來提取信息?你可以編輯你的問題,並添加你的表格的佈局? – 2013-04-22 16:56:54

1

爲您的特定條件,這將有助於幫助:

$sqlget = "SELECT `title`, `text`, `name` FROM `table` WHERE `title` = `text`"; 

享受...

+0

在同一張桌子上?那麼'id'呢?和'title' never =='text' – 2013-04-22 17:21:54

+0

@ moskito-x是的,問題要求記錄具有相同的'text'和'title'。 – 2013-04-22 17:24:27

+0

@KishorSubedi謝謝,但moskito-x解決了。我的問題要求「title」和「text」具有相同「ID」的記錄。 – strellson 2013-04-22 17:30:58

相關問題