【问题标题】:How to organise the MYSQL database?如何组织MYSQL数据库?
【发布时间】:2011-09-02 11:39:01
【问题描述】:

我对 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                

@尼克:

<?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++;
}
?>

【问题讨论】:

  • 你问的不是一个具体的问题,而是一个非常广泛的问题。
  • 如果您添加到目前为止您实际所做的事情,您将获得更好的响应。包括您的表格、字段(以及一些数据,如果可能,每个表格的几行)。
  • 好的,添加了我当前的结构,我现在的问题是能够添加多个单元并在每个特定单元中重复文件。
  • @Hogan 没有人雇用我这是我的学徒投资组合网站,我有很多文件要上传和排序,手动列出它们太多了.etc - 不应该假设的事情跨度>

标签: php mysql sql phpmyadmin


【解决方案1】:

在阅读了您的问题几次之后,您似乎了解了如何构建表格,您只需要帮助查询它们。你有可以分享的代码吗?

你应该做一个表连接。

【讨论】:

  • 有点,但我看到的所有信息都是说这行不通,不要使用集合。等使用单独的表,但我不明白他们的例子或如何实现它.. . 但这就是我到目前为止输出一张表的全部内容,不确定如何查看一个单元中存在哪些项目,因为如果一个单元没有文件说“实验”,我不想再构建实验页面上的区域。编辑:代码不适合这里检查代码底部的问题。
  • 看起来您需要查询项目类型,循环遍历结果,然后进行嵌套循环以显示实际项目。在结果和项目之间应该有一个中间表。真的很难告诉你怎么做。
  • 我觉得units还是错的,比如有一个叫310和10的unit,因为我现在想存储多个units我必须做一个index of search但是unit 10会显示为目前指数310。假设我遍历了项目的结果并将每个值存储在数组中(从数组中删除重复项),然后遍历数组以在每个单元下构建项目区域,然后对该单元执行查询,并且每个项目的项目听起来都是可能的。但是你知道解决我的单位困境的方法吗?谢谢朋友的建议。
【解决方案2】:

已解决:)

我决定为每个单元创建一个新表,因为文件在单元之间可能相同,但结果不同。我的数据库的其余部分保持不变,并使用 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"); 
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2018-01-31
    • 2020-04-28
    • 2021-09-28
    • 1970-01-01
    • 2015-08-06
    相关资源
    最近更新 更多