Php 希望使用一个MySQL表来影响多个页面
所以现在,我的网站主页上有一个“画廊”系统。看一看:Php 希望使用一个MySQL表来影响多个页面,php,mysql,database,record,Php,Mysql,Database,Record,所以现在,我的网站主页上有一个“画廊”系统。看一看: <?php $objConnect = mysql_connect("mydb.db","hello","mypass") or die(mysql_error()); $objDB = mysql_select_db("mydb"); $pic2 = "SELECT * FROM gallery"; if (!isset($_GET['Page'])) $_GET['P
<?php
$objConnect = mysql_connect("mydb.db","hello","mypass") or die(mysql_error());
$objDB = mysql_select_db("mydb");
$pic2 = "SELECT * FROM gallery";
if (!isset($_GET['Page'])) $_GET['Page']='0';
$pic1 = mysql_query($pic2);
$Num_Rows = mysql_num_rows($pic1);
$Per_Page = 16; // Per Page
$Page = $_GET["Page"];
if(!$_GET["Page"])
{$Page=1;}
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$Page_Start = (($Per_Page*$Page)-$Per_Page);
if($Num_Rows<=$Per_Page)
{$Num_Pages =1;}
else if(($Num_Rows % $Per_Page)==0)
{$Num_Pages =($Num_Rows/$Per_Page) ;}
else
{$Num_Pages =($Num_Rows/$Per_Page)+1;
$Num_Pages = (int)$Num_Pages;}
$pic2 .=" order by GalleryID ASC LIMIT $Page_Start , $Per_Page";
$pic1 = mysql_query($pic2);
$cell = 0;
$link2 = "SELECT * FROM gallery";
$link1 = mysql_query($link2);
$link = mysql_fetch_array($link1);
$alt2 = "SELECT * FROM gallery";
$alt1 = mysql_query($alt2);
$alt = mysql_fetch_array($alt1);
echo '<div id="tablediv"><table border="0" cellpadding="17" cellspacing="0" class="table"><tr>';
while($pic = mysql_fetch_array($pic1))
{if($cell % 4 == 0) {
echo '</tr><tr>';}
if($cell == 2) {
echo '<td>reserved cell, ignore this</td>';
} elseif ($cell == 3) {
echo '<td>reserved cell, ignore this</td>';
} else {
echo '
<td><a href="/' . $link["link"] . '.php"><div class="image"><img src="https://s3.amazonaws.com/images/' . $pic["pic"] . '" alt="' . $alt["alt"] . ' /></div></a></td>'; }
$cell++;
}
echo '</tr></table></div>';
?>
无论如何。。。如您所见,使用此系统,每当我插入新记录时,它都会自动更新我的多媒体资料。现在我的问题是,当我插入一条新记录时,它不仅会影响我的主页库,还会影响我网站其他部分的库
假设我的站点名为site.com。我也有一个网站。com/nature。我的site.com/nature仅适用于自然照片,但我不想通过创建一组全新的表并手动更新来手动更新/nature。相反,我宁愿选择一条更简单的路线,因此在我的gallery表中,我可以指定我是否希望在/nature中使用它
我想我需要另一列(显然)来指定我希望记录出现在哪些其他文件夹中,或者可能需要一些条件语句来确定我的记录也应该出现在哪个子文件夹中,而不仅仅是我的主页。不幸的是,我是一个无名小卒,所以我在问同事们是否能帮我解决这个问题。谢谢 我不确定您使用的确切模式,但如果您的图库被细分为自然、动画等类别。最好有一个额外的列(“category”),可能是一个varchar或string(很抱歉,不熟悉mysql中的确切类型)来指定类别,因此在nature类别中,您会喜欢:
select *
from gallery g
where g.category = 'nature'
因此,如果你有另一个类别,如口袋妖怪,你会:
select *
from gallery g
where g.category = 'pokemon'
通过这种方式,您可以为您的站点设置许多不同的类别
但在主页面中,您想要的所有图片只有:
select *
from gallery g
另外,最好不要返回*只返回实际需要的字段。并且可能使用
选择不同的filndName
,这样在从sql获取元组(条目)时不会重复相同的元组(条目)有几种不同的方法可以实现这一点。因为您不想创建另一个表,所以一种方法是使用表的列。这将允许您创建一组您拥有的所有子部分(最多64个),其中一个库项目可能位于多个子部分中
当然,可能的问题是64个子节的限制,而且添加新子节需要ALTER
语句,这取决于您如何添加子节,可能会导致权限问题
在我看来,更好的方法是添加两个新表。一个表将是只需要id和子部分路径(“性质”)的子部分表。另一个表将是具有库id和子节id的库子节表,以便一个库项目可以位于多个子节中。这不仅更容易添加一个新的子部分,而且还允许使用64个以上的子部分。我不懂php,所以我可能在这一点上错了,但为什么您要一遍又一遍地运行同一个查询?对不起,但我认为我使用的是最有效的方法。我自己也是一个php noob,这是一个myracle,我甚至想出了以下代码:O。你有什么建议吗?你能解释一下你的db方案吗(它看起来像什么,列名)