2011-05-26 82 views
2

我對MYSQL並不瞭解,而且在設計數據庫結構時遇到困難。我不明白在線給我的所有信息太多術語,期望我能夠理解其他術語和想法,並且不想爲此工作參加課程,所以我希望這很簡單。如何組織MYSQL數據庫?

我想創建一個頁面上的文件列表。應該有4個領域:

  • 名稱 - 文件標題
  • 單位 - 此文件適用於選擇單位(例如:27或X1或10),我希望能添加多個單位到一些文件。
  • Typeof - 它是什麼類型的文件(例如:swf,pdf,url)。
  • 項目 - 文件製作什麼項目(例如:性生活衛生,信息素養)
  • 成果 - 這應該是能夠存儲數字1-5這樣一個文件可以有(1,3和5)

問題是我想如何使用這些數據,我希望能夠首先搜索單位和找到匹配說單位27,然後我想找到該單位中的每個項目和列出該項目中的文件。

問題是文件可能會出現在頁面上多次,因爲一些文件有多個單元,但我不能想到如何最好地做到這一點,搜索字符串的索引似乎凌亂。

爲了幫助可視什麼,我想在這裏是頁面的結構如何安排的圖像:how the page will be structured http://biteof.com/example.bmp

你的幫助是非常讚賞的感謝。

我到目前爲止有:

name text      utf8_unicode_ci 
    typeof set('swf','fla','web','pdf') utf8_unicode_ci No None     
    units text utf8_unicode_ci No None     
    url text utf8_unicode_ci No None     
    project set('sexual health','information literacy','experimental') utf8_unicode_ci No None     
    outcomes text utf8_unicode_ci No None     

@Nick:

<?php 
$query = "SELECT * FROM `repository` WHERE `units` = '27' LIMIT 0, 999 "; 
$result=mysql_query($query) or die(mysql_error()) ; 
$num = mysql_num_rows($result); 

$i=0; 
while ($i < $num) { 

$name=mysql_result($result,$i,"name"); 
$filetype=mysql_result($result,$i,"typeof"); 
$project=mysql_result($result,$i,"project"); 
$units=mysql_result($result,$i,"units"); 
$url=mysql_result($result,$i,"url"); 

echo "File name: ".$name."<br>"; 
echo "Units: ".$units."<br>"; 
echo "In project: ".$project."<br>"; 
echo "Url: ".$url."<br>"; 

$i++; 
} 
?> 
+0

什麼你問的是不是一個具體的問題,它是一個非常廣泛的問題。 – 2011-05-26 10:33:36

+0

如果您添加您迄今爲止所做的實際操作,您將得到更好的回覆。包括你的表,字段(如果可能,還有一些數據,每個表有幾行)。 – 2011-05-26 10:36:19

+0

好吧加了我目前的結構,現在我的問題是能夠添加多個單元並在每個特定單元中重複文件。 – 2011-05-26 10:45:05

回答

1

解決:)

我決定做一個新的表中的每個單元,因爲該文件可能是相同的跨部門,但結果是不同的。我的數據庫的其餘部分我保持相同,並使用PHP來排序大概可怕的結構化數據庫...這裏是我的代碼,如果你的興趣:

<?php 
$table = array("301","302","310","311","25","26","27","28","29","1","2","3","4","8","10","X1","X2"); 
for ($a=0;$a<sizeof($table);$a++) { 
$query = "SELECT * FROM `$table[$a]`"; 
$result=mysql_query($query) or die(mysql_error()) ; 
$num = mysql_num_rows($result); 
if ($num > 0) { 
include($_SERVER['DOCUMENT_ROOT']."/units_and_evidence/units/".$table[$a].".php"); 
$projects = array(); 
for ($b=0;$b<$num;$b++) { 
$project=mysql_result($result,$b,"project"); 
array_push($projects, $project); 
} 
$unique_projects = array_unique($projects); 
for($c=0;$c<sizeof($unique_projects);$c++) { 
$project_string = ucfirst($unique_projects[$c]); 
print ('<div class="project"><h3>'.$project_string.'</h3>'); 
for($d=0;$d<$num;$d++) { 
$name=mysql_result($result,$d,"name"); 
$project=mysql_result($result,$d,"project"); 
$typeof=mysql_result($result,$d,"typeof"); 
$url=mysql_result($result,$d,"url"); 
$outcomes=mysql_result($result,$d,"outcomes"); 
if ($project == $unique_projects[$c]) { 
$outcomes_array= array(); 
for ($e=0;$e<strlen($outcomes);$e++) { 
array_push($outcomes_array, $outcomes[$e]); 
} 
rsort($outcomes_array); 
if ($typeof == swf) { 
$proj = str_replace(' ', '', $project); 
$file = str_replace(' ', '', $url); 
print ('<li><a href="flashdelivery.php?proj='.urlencode($proj).'&file='.urlencode($file).'" class="'.$typeof.'selector">'); 
} 
else { 
print ('<li><a href="'.$url.'" class="'.$typeof.'selector">'); 
} 
for ($f=0;$f<sizeof($outcomes_array);$f++) { 
    print ('<span class="n'.$outcomes_array[$f].'"></span>'); 
} 
print ('&raquo; '.ucfirst($name).'</a></li>'); 
} 
} 
print ('</div>'); 
} 
print ("</ul>"); 
} 
} 
include($_SERVER['DOCUMENT_ROOT']."/footer.php"); 
?> 
2

閱讀您的問題似乎是您瞭解如何構建表幾次之後,你只需要幫助查詢他們。你有可以分享的代碼嗎?

你應該做一個表連接。

+0

排序,但我所有的信息看到是說這不會工作,不使用sets。etc使用單獨的表,但然後我不明白他們的例子或如何實現它...但這是我迄今爲止輸出一張表,不確定如何查看單元內存在什麼項目,因爲如果單元中沒有「實驗」文件,我不想在頁面上構建實驗區域。編輯:代碼不會適合在這裏檢查代碼底部的問題。 – 2011-05-26 10:54:33

+0

看起來您需要查詢項目類型,循環查看結果,然後執行嵌套循環以顯示實際項目。結果和項目之間應該有一箇中間表。真的很難告訴你如何去做。 – 2011-05-26 11:03:10

+0

雖然我覺得單元仍然是錯誤的,例如有一個單元叫做310和10,因爲我現在想存儲多個單元,所以我必須做一個搜索索引,但是單元10當前會以310的索引出現。假設我循環播放了項目的結果並將每個值存儲在數組中(刪除數組中的重複項),然後遍歷數組以構建每個單元下的項目區域,然後對該單元執行查詢,並且每個項目的項目聽起來都是可能的。但是你知道解決單位困境的方法嗎?感謝您的建議隊友。 – 2011-05-26 11:13:26