2011-05-26 43 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