我对我的代码进行了一些更改,现在它将无法正常运行。我的 img src =“https://s3.amazonaws.com/thumbnail/1.png 和 img src =”https://s3.amazonaws.com/thumbnail/2.png 未显示(两者都在下面的代码中突出显示)。
我的分页链接'上一步'和'下一步'也未显示。两者都突出显示。
无论如何,这里基本上是我的mysql:
CREATE TABLE `images` (
`thumbnailID` int(11) NOT NULL auto_increment,
`link` varchar(100) NOT NULL,
`pic` varchar(100) NOT NULL,
`alt` varchar(100) NOT NULL,
`time` varchar(100) NOT NULL,
PRIMARY KEY (`thumbnailID`)
) ENGINE=MyISAM ;
这是我的PHP代码:
<?php
$objConnect = mysql_connect("sadadsaf","w3f","scdsf")
or die(mysql_error());
$objDB = mysql_select_db("sdfv");
$pic2 = "SELECT * FROM images";
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 thumbnailID ASC LIMIT $Page_Start , $Per_Page";
$pic1 = mysql_query($pic2);
$cell = 0;
$link1 = "SELECT * FROM images";
$link = mysql_fetch_array(mysql_query($link1));**
$alt1 = "SELECT * FROM images";
$alt = mysql_fetch_array(mysql_query($alt1));
$time1 = "SELECT * FROM images";
$time = mysql_fetch_array(mysql_query($time1));
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>
<div class="customimage">
<a href="/misc/deadend.php">
<img src="https://s3.amazonaws.com/thumbnail/1.png" />
</a>
</div>
</td>'; // This line includes one of the <img> tags having issues
} elseif ($cell == 3) {
echo '
<td>
<div class="customimage">
<a href="/misc/deadend.php">
<img src="https://s3.amazonaws.com/thumbnail/2.png" />
</a>
</div>
</td>'; // This line includes one of the <img> tags having issues
} else {
echo '
<td>
<a href="/' . $link["link"] . '.php">
<div class="image">
<img src="https://s3.amazonaws.com/imagetitle/' . $pic["pic"] . '"
alt="' . $alt["alt"] . '"
height="190"
width="190"
/>
</div>
</a>
<div class="submitted">submitted </div>
<div class="timeago">
<abbr class="timeago" title="' . $time["time"] .'"></abbr>
</div>
</td>';
}
$cell++;
}
echo '</tr></table></div>';
?>
<br />
view more:
<?php
if($Prev_Page) {
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'>**prev**</a> |";
}
if($Page!=$Num_Pages) {
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>**next**</a> ";
}
?>
<?php
mysql_close($objConnect);
?>
谢谢!
编辑:没关系,他们没有突出显示。他们应该在他们周围留下星号。
答案 0 :(得分:2)
更改该行,以便您可以获得有关正在发生的事情的更多信息:
$link1 = "SELECT * FROM images";
$result_link1 = mysql_query($link1);
if(!$result_link1) {
echo mysql_error();
die();
}
// just for testing
echo mysql_num_rows($result_link1) . '<br/>';
$link = mysql_fetch_array($result_link1);
这将帮助您缩小问题范围。
答案 1 :(得分:1)
这不会真正回答您的问题,但它会让您了解一些使您的代码更具可读性的约定,从而使您更容易回答有关错误的问题。你代码中的东西:
尝试按顺序放置相关的行,这样读者就可以通过脚本的一个操作了解所有内容。例如,在前几行中打开数据库,将查询分配给变量,然后在中间检查您的GET变量,这可能很容易在您实际执行查询之后,然后执行查询。检查GET与查询无关,最好将查询内容组合在一起。
根据GET ['page']变量中的内容分配变量Page,然后直接使用GET变量作为条件。如果您使用$ Page以方便使用,请使用它。
括号中的代码应该在其自己的行上开始和结束括号一次缩进到开头,或者某些(包括我自己)将起始括号放在起始行后面一个空格,然后结束括号从从自己的路线开始。这使得它易于阅读,特别是当您进入非常长的条件块和嵌套条件时。
变量应该描述它们是什么。你用它们中的大多数做了这个,比如Next_Page等,但是pic1,pic2,alt,link1,link2等让人感到困惑,似乎都是不同的sql查询字符串 - 没有一个变量名真的意味着它们是什么
这并不是什么大不了的事,但是由于缺乏一个更好的术语,用大写字母开始变量名称被认为是“不合适的”。 Camel Case是我看到最常用的约定(第一个单词以小写开头,后续单词以upper开头,例如:nextPage或numPages)。我经常看到的另一个约定是你使用了几次而不是其他约定,它使用全部小写并用下划线分隔单词。通常,编码器会为类名保存大写字母。在你的代码中,随意使用你喜欢的任何东西,但坚持下去,它有助于记住你如何格式化5页之外的变量名称。
所有这些都有助于更好地阅读您的代码并帮助您组织它。标准化还有助于其他程序员了解您对代码的含义。我以为我会写这个,所以你知道上面的一些评论是在说什么。有关许多常见约定的教程,请参阅以下链接:
http://www.blackgate.net/consulting/php_coding_guidelines.html
玩得开心!