我的php / mysql不像今天早上那样工作。初级/中级帮助

时间:2011-04-02 00:55:52

标签: php mysql

我对我的代码进行了一些更改,现在它将无法正常运行。我的 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&nbsp;</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);
?>

谢谢!

编辑:没关系,他们没有突出显示。他们应该在他们周围留下星号。

2 个答案:

答案 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

玩得开心!