PHP / MYSQL BETWEEN数字循环相同的函数

时间:2016-05-13 14:18:18

标签: php mysql loops between

我已经试图解决这个问题好几天了,我确信合适的人可以轻松解决这个问题。

 <?php              
     displayMatrixNumbers();
?>
<?php
    function displayMatrixNumbers()
    {
        $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

        $statement = "SELECT number, association, image_file, skeleton, sound, colour, comments ";
        $statement .= "FROM num_image ";
        $statement .= "ORDER BY number ";

        $sqlResults = selectResults($statement);

        $error_or_rows = $sqlResults[0];

        if (substr($error_or_rows, 0 , 5) == 'ERROR')
        {
            print "<br />Error on DB";
            print $error_or_rows;

        } else {

            $arraySize = $error_or_rows;

            for ($i=1; $i <= $error_or_rows; $i++)
            {
                $number = $sqlResults[$i]['number'];
                $association = $sqlResults[$i]['association'];
                $image_file = $sqlResults[$i]['image_file'];
                $skeleton = $sqlResults[$i]['skeleton'];
                $sound = $sqlResults[$i]['sound'];
                $colour = $sqlResults[$i]['colour'];
                $comments = $sqlResults[$i]['comments'];

                print "<div id='mcnumbers-container'>";
                print "<h3>".$number."</h3>";
                print "<p><img id='mcnumber-image' src='images/matrix/".$number. ' - '.$association.".jpg'>";

                print "<br />".$association."</p>";
                print "</div>";


            }
        }
    }
?>

我是否需要插入的行数?它能在某些方面派上用场吗?

我试图完成的主要目标是:

  1. 尽可能简化我的代码。
  2. 我想使用这段代码并在不同的DIV标签中粘贴功能displayMatrixNumbers()100次或者使用函数不是最佳做法?

    在pastebin中我想更改一行:$statement .= "ORDER BY number ";$statement .= "BETWEEN 00 to 09 ORDER BY ASC ";或类似的东西?

  3. 然而,我需要将两个数字从&#39; 00更改为09&#39;至&#39; 10至19&#39;至&#39; 20至29&#39;等我正在建设的项目。

    简而言之,是否可以仅从函数外部更改BETWEEN数字。那样的&#39;一些如何&#39;我可以输入两个数字$lownum = '00'; $highnum = '09';,然后输入$statement .= "BETWEEN $lownum to $highnum ORDER BY ASC "

    说我有3个DIV&#39>

    <div id="div1">
    <?php displayMatrixNumbers(); ?> /* This one displays 00 to 09 */
    </div>
    <div id="div2randomID">
    <?php displayMatrixNumbers(); ?> /* 10 to 19 */
    </div>
    <div id="div3">
    <?php displayMatrixNumbers(); ?> /* 20 to 29.. and so on */
    </div>
    

    说我有100个div ..我怎样才能明确告诉每个人只显示我想要的结果而不创建100个单独的.php页面?我知道我需要某种循环来编辑BETWEEN数字,但不知道怎么做?

    我必须重写这一点,以使其更清晰,但我的大脑是油炸的,我希望有人能够理解我的意思。即使你需要我澄清一些事情,请问。

    我对这一切都很陌生,如果不是我用过的所有PHP,我都会道歉,并希望了解如何使用PHP实现这一目标。

    干杯, 丹:)

2 个答案:

答案 0 :(得分:1)

使用类来解决永久显示。类保存可以存储和重用的数据。

class display {
    private $count = 0;
    public function display(){
        for($i = $this->count; $i < $this->count + 10; $i++){
            echo $i;
        }
        $this->count += 10;
    }
}
$display = new display();

$display->display(); //prints 0 - 9
$display->display(); // prints 10 - 19
$display->display(); //prints 20 - 21

答案 1 :(得分:1)

如果您使用LIMIT sql子句,则可以非常轻松地完成此任务

    $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

    $statement = "SELECT number, association, image_file, 
                         skeleton, sound, colour, comments
                  FROM num_image 
                  ORDER BY number
                  LIMIT $start, 10";

    $sqlResults = selectResults($statement);

    $error_or_rows = $sqlResults[0];

   // I am not sure what library you are using to access your database
   // but there must be a better way of identifying errors
   // than this next piece of code
    if (substr($error_or_rows, 0 , 5) == 'ERROR')
    {
        print "<br />Error on DB";
        print $error_or_rows;

    } else {

        foreach ( $sqlResults as $row ) {
            $number       = $row['number'];
            $association  = $srow['association'];
            $image_file   = $row['image_file'];
            $skeleton     = $row['skeleton'];
            $sound        = $row['sound'];
            $colour       = $row['colour'];
            $comments     = $row['comments'];

            print "<div id='mcnumbers-container'>";
            print "<h3>".$number."</h3>";
            print "<p><img id='mcnumber-image' src='images/matrix/".$number. ' - '.$association.".jpg'>";

            print "<br />".$association."</p>";
            print "</div>";

        }
    }
}

然后使用您要使用的起始行调用它

<div id="div1">

<?php displayMatrixNumbers(0); ?> /* This one displays 00 to 09 */

</div>
<div id="div2randomID">

<?php displayMatrixNumbers(10); ?> /* 10 to 19 */

</div>
<div id="div3">

<?php displayMatrixNumbers(20); ?> /* 20 to 29.. and so on */

</div>